背景
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) |
接口侧变更:
- 新增南向接口 bmc.dev.SSU(dmc/intf/bmc/dev/SSU.json),承载 SSU 模组基础管理属性(Id、PowerState),由 ssu_card 驱动在设备树 SSUCard 节点上报。
- PowerState(0=下电,1=上电)作为SSU上下电触发源:驱动start()监听其变更信号,上电(ON)时创建MCTP通信链路。
- 新增南向接口 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=无效值)
- 新增南向接口 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 资源结构对齐 |
评审结论
- 新增南向接口 bmc.dev.SSU(含 Id、PowerState 属性)。
- 新增南向接口 bmc.dev.SharedManagement(含 ControlOwner 属性),从 bmc.dev.SSU 中拆分主从管理能力。
- 新增南向接口 bmc.dev.LinkSwitch(含 SetLink、GetLink 方法),承载 GE 口接通通路切换与查询能力(GE 口单口双通路,单刀双掷开关抽象)。
- 新增南向路径 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