【待评审】新增接口管理SSU

背景

ASU/SSU(Smart Storage Unit)模组是独立计算/存储单元,BMC 需对模组进行带外管理。SSU模组是独立系统,拥有自己的电源状态,MCTP带外通信依赖SSU硬件上电就绪,不能在SSU未上电时创建EP,需要属性承载SSU上下电状态作为通信链路动态创建/销毁的触发源;双BMC冗余场景下,仅主BMC(active)才能对SSU进行带外管理(standby BMC不创建EP),需要属性标识当前机型是否存在主从场景,供驱动决定是否订阅BMC主从状态;SSU GE口支持通路切换(单口双通路,抽象为单刀双掷开关),北向CLI与IPMI命令需要南向提供通路切换与查询能力。

关联ISSUE

整体方案

SSU模组以独立板卡形态接入设备树(csr/ssu_card.dds + ssu_card.sr),共 4 类设备树对象/路径,路径与挂载接口总览如下:

路径 对象 挂载接口 用途
/bmc/dev/Systems/:SystemId/SSUCards/:Id SSUCard bmc.dev.Board、bmc.dev.SSU(新增)、bmc.dev.SharedManagement(新增)、bmc.dev.Chassis SSU模组本体:板卡资产、模组基础管理、主从管理、机框归属
:Parent/UBPort/:Id UBPort bmc.dev.NetworkPort UB高速口
:Parent/GEPort/:Id GEPort bmc.dev.NetworkPort、bmc.dev.LinkSwitch(新增) GE网口:MAC地址、通路切换/查询
:Parent/SSUDrive/:Id SSUDrive bmc.dev.NVMe 模组内NVMe硬盘(挂SSUCard子路径,归属由路径层级表达,槽位模组内唯一0/1)

接口侧变更:

  1. 新增南向接口 bmc.dev.SSU(dmc/intf/bmc/dev/SSU.json),承载 SSU 模组基础管理属性(Id、PowerState),由 ssu_card 驱动在设备树 SSUCard 节点上报。
    • PowerState(0=下电,1=上电)作为SSU上下电触发源:驱动start()监听其变更信号,上电(ON)时创建MCTP通信链路。
  2. 新增南向接口 bmc.dev.SharedManagement(dmc/intf/bmc/dev/SharedManagement.json),承载主从管理属性 ControlOwner,同样挂在 SSUCard 节点。
    • ControlOwner(0=无主从,1=有主从)在SR中按机型配置:ControlOwner=1时驱动start()订阅/bmc/kepler/Global的PropertiesChanged信号,监听bmc.kepler.Global.ActiveStandby.Status(0=standby,1=active,255=无效值)
  3. 新增南向接口 bmc.dev.LinkSwitch(dmc/intf/bmc/dev/LinkSwitch.json),承载 GE 口通路切换能力,挂在 GEPort 节点(drivers/ssu_card/interface/network_port_link.cpp),定义 SetLink、GetLink 方法。
    • 物理上仅一个 GE 口,内部抽象为单刀双掷开关:同一时刻仅一条通路接通,SetLink 切换接通通路(0=通路0/GE0侧,1=通路1/GE1侧)。北向 CLI 命令 ipmcset/ipmcget -t ssu -d activeport 与该能力对齐。

接口定义

接口1:新增南向接口 bmc.dev.SSU

变更描述:SSU 模组接入设备树后缺少正式的南向接口定义,新增接口承载模组基础管理属性。
接口:bmc.dev.SSU

新增属性

属性名称 签名 只读 属性描述 属性来源 持久化类型 变更影响
Id y true SSU ID SSU的标识 不持久化 无影响
PowerState y true SSU电源状态(0=下电,1=上电) 组件内部维护 不持久化 无影响

新增接口影响

路径 新增接口影响 CSR配置影响 持久化影响 其他影响
/bmc/dev/Systems/:SystemId/SSUCards/:Id 对外提供SSU模组基础管理属性(Id、PowerState),承载带外通信启停触发 属性均不持久化

接口2:新增南向接口 bmc.dev.SharedManagement

变更描述:主从(冗余)管理能力与具体设备解耦,新增独立接口承载主从管理属性。
接口:bmc.dev.SharedManagement

新增属性

属性名称 签名 只读 属性描述 属性来源 持久化类型 变更影响
ControlOwner y true 主从控制权(0=无主从,1=有主从) 组件内部维护 不持久化 无影响

新增接口影响

路径 新增接口影响 CSR配置影响 持久化影响 其他影响
/bmc/dev/Systems/:SystemId/SSUCards/:Id 对外提供主从管理属性(ControlOwner),供驱动决定是否订阅BMC主从状态 不持久化

接口3:新增南向接口 bmc.dev.LinkSwitch

变更描述:SSU 物理上仅一个 GE 口,内部为多平面(通路)架构,抽象为单刀双掷开关——同一时刻仅一条通路(通路0=GE0侧,通路1=GE1侧)处于接通状态。北向 CLI 命令为 ipmcset/ipmcget -t ssu -d activeport,南向接口承载接通通路的切换与查询能力。
接口:bmc.dev.LinkSwitch

新增方法

方法名称 请求签名 请求参数描述 响应签名 响应参数描述 方法描述
SetLink y Link: 目标接通通路: 0-通路0(GE0侧) 1-通路1(GE1侧) y Result: 返回结果,0:执行成功;1:执行失败 切换接通通路(单刀双掷开关扳位)
GetLink y Link: 当前接通通路: 0-通路0(GE0侧) 1-通路1(GE1侧); 255-查询失败 获取当前接通通路

路径定义

路径1:/bmc/dev/Systems/:SystemId/SSUCards/:Id(SSUCard)

实现接口 实现接口描述 CSR配置影响 持久化影响 其他影响
bmc.dev.Board 提供板卡基础信息(Slot、Name) 不涉及 配合Fru_SSUCard/FruData_SSUCard(MCU存储)资产上报
bmc.dev.SSU 提供SSU模组基础管理属性(Id、PowerState) 不涉及 见接口1
bmc.dev.SharedManagement 提供主从管理属性(ControlOwner) 不涉及 见接口2
bmc.dev.Chassis 提供所属机框归属(Id) 不涉及 不涉及

路径2::Parent/UBPort/:Id(UBPort,展开为 /bmc/dev/Systems/:SystemId/SSUCards/:Id/UBPort/:Id)

实现接口 实现接口描述 CSR配置影响 持久化影响 其他影响
bmc.dev.NetworkPort 提供UB高速端口信息(PortId=1) 不涉及 端口速率配置(issue #449)落此路径

路径3::Parent/GEPort/:Id(GEPort,展开为 /bmc/dev/Systems/:SystemId/SSUCards/:Id/GEPort/:Id)

实现接口 实现接口描述 CSR配置影响 持久化影响 其他影响
bmc.dev.NetworkPort 提供GE网口信息(PortId=0、MAC地址) 不涉及 GE MAC经OOB周期轮询更新(issue #450
bmc.dev.LinkSwitch 提供GE口接通通路切换与查询方法 不涉及 见接口3

路径4::Parent/SSUDrive/:Id(SSUDrive,展开为 /bmc/dev/Systems/:SystemId/SSUCards/:Id/SSUDrive/:Id)

实现接口 实现接口描述 CSR配置影响 持久化影响 其他影响
bmc.dev.NVMe 提供模组内NVMe硬盘信息(Slot槽位) 不涉及 硬盘归属由路径层级直接表达(SSUCard子节点,与UBPort/GEPort形式统一),槽位仅需模组内唯一(0/1),北向Web/Redfish按SSUCards子资源展示SSU硬盘,与 /UI/Rest/System/SSUs/:id/Drives 资源结构对齐

评审结论

  1. 新增南向接口 bmc.dev.SSU(含 Id、PowerState 属性)。
  2. 新增南向接口 bmc.dev.SharedManagement(含 ControlOwner 属性),从 bmc.dev.SSU 中拆分主从管理能力。
  3. 新增南向接口 bmc.dev.LinkSwitch(含 SetLink、GetLink 方法),承载 GE 口接通通路切换与查询能力(GE 口单口双通路,单刀双掷开关抽象)。
  4. 新增南向路径 SSUCard/UBPort/GEPort/SSUDrive(ssu_card 设备树对象)。

遗留问题

1、SSU在path/obj/interface中大小写归一。
2、将"bmc.dev.NetworkPort.Oem提供GE口活跃端口切换与查询方法"单独定义一个接口,并且明确切换的内容。需要新增一个bmc.dev.xxx的接口用于承载端口切换的能力 这个怎么起名呢
3. 把ControlOwner属性从bmc.dev.SSU中去除,新增一个用于主从管理的接口 bmc.dev.SharedManagement 来承载ControlOwner属性
4.NVME的选择方案B 新增个对象放在SSUCard的子路径下 对象名叫SSUDrive