背景
CPU BIOS启动时,需要通过IPMI接口从BMC获取服务器UBM的部署位置,服务器是否通过UB设备组集群、是否为UB控制节点信息,因此需要扩展IPMI接口,支持bios查询
关联ISSUE
暂无
整体方案
上层网管通过redfish北向接口将服务器UBM的部署位置,服务器是否通过UB设备组集群、是否为UB控制节点信息下发到BMC并保存,CPU BIOS启动时通过IPMI接口获取上述信息
评审点
评审点1:新增查询节点管控模式ipmi命令
命令名称: GetNodeControlModel
命令权限: ReadOnly
是否锁定之后可以访问: 否
是否有敏感数据: 否
命令样式:
-
请求:
ipmitool raw 0x30 0x94 <ManufacturerID> <SubCmd> <Parameter Selector> <Read Offset> <Length> -
响应:
<ManufacturerID> <End of List> <Cluster Mode> <Control Mode> <Control Permission>
命令请求参数:
| 字节顺序 | 域取值说明 |
|---|---|
| NetFn | 30h |
| Cmd | 94h |
| 1:3 | Manufacturer ID,LB Byte first。长度固定 3 个字节,例如,某厂家ID时 2011,对应十六进制为0x0007DB,则字节序为第1个字节为 DBh,第二个字节为 07h,第三个字节为 00h。 |
| 4 | SubCmd,固定为 6Ah |
| 5:6 | Parameter Selector, 新增0x0009 |
| 7:8 | Read Offset, 读取的数据偏移 |
| 9 | Length,读取长度3 |
命令响应参数:
| 字节顺序 | 域取值说明 |
|---|---|
| 1 | Completion Code,如果有特殊的/特定的完成码则需要单独说明,比如:80h = 命令的长度和参数不匹配、81h = 命令的参数无法支持 |
| 2:4 | Manufacturer ID,LB Byte first。长度固定 3 个字节,例如,某厂家ID时 2011,对应十六进制为0x0007DB,则字节序为第1个字节为 DBh,第二个字节为 07h,第三个字节为 00h。 |
| 5 | End of List 表示当前数据是否结束。当参数数据比较长的时候,可能需要分多次读取,通过此字段可以判断数据是否读完。 [7:1]:reserved [0]:End of list 0=last data 1=middle data |
| 6:N | Data,具体参数见下表 |
评审点2:新增设置节点管控模式ipmi命令
命令名称: SetNodeControlModel
命令权限: BasicSetting
是否锁定之后可以访问: 否
是否有敏感数据: 否
命令样式:
-
请求:
ipmitool raw 0x30 0x94 <ManufacturerID> <SubCmd> <Parameter Selector> <Write Offset> <Length><Parameter Data> -
响应:
<ManufacturerID>
命令请求参数:
| 字节顺序 | 域取值说明 |
|---|---|
| NetFn | 30h |
| Cmd | 94h |
| 1:3 | Manufacturer ID,LB Byte first。长度固定 3 个字节,例如,某厂家ID时 2011,对应十六进制为0x0007DB,则字节序为第1个字节为 DBh,第二个字节为 07h,第三个字节为 00h。 |
| 4 | SubCmd,固定为 6Bh |
| 5:6 | Parameter Selector, 新增0x0009 |
| 7 | [7:1]:reserved [0]:级联标志 0=是最后一帧数据 1=后面还有数据 |
| 8:9 | Write Offset, 写入的数据偏移 |
| 10 | Length,写入长度(最大为250bytes) |
| 11~N | Parameter Data,参数见下表格 |
命令响应参数:
| 字节顺序 | 域取值说明 |
|---|---|
| 1 | Completion Code,如果有特殊的/特定的完成码则需要单独说明,比如:80h = 命令的长度和参数不匹配、81h = 命令的参数无法支持 |
| 2:4 | Manufacturer ID,LB Byte first。长度固定 3 个字节,例如,某厂家ID时 2011,对应十六进制为0x0007DB,则字节序为第1个字节为 DBh,第二个字节为 07h,第三个字节为 00h。 |
参数表格
| 功能描述 | parameter selector | parameter data-get | parameter data-set |
|---|---|---|---|
| 定制节点管控模式 | 0x0009 | 请求: Read Offset:0x0000 Length:3 响应: Byte0: Cluster Mode, 0:单机,1:集群 Byte1:Control Mode, 0:带内,1:带外 Byte2 :Control Permission 0:非管控节点,1:管控节点 |
请求:Write Offset: 0x0000 ;Data: Byte0: 0x00 定制所有管控模式 length:4 ;0x01 定制Cluster Mode length:2 ;0x02 定制Control Mode length:2 ;0x03 定制Control Permission length:2 |
评审结论
1.评审点1的查询命令与评审点2的设置命令,复用已有的查询和配置超节点扩展信息的IPMI命令( Parameter Selector 为 0x0008),见议题【已评审】扩展IPMI命令用于查询和配置超节点属性 - Interface SIG / Interface评审 - openUBMC 论坛
属性定义如下:
| 属性名称 | Type | 属性说明 | Length | 数据类型 | 取值范围 | 默认值 |
|---|---|---|---|---|---|---|
| UBMDeployMode(原属性:UBManagedBy) | 0x04 | 计算服务器UBM部署位置:带内物理机、带内虚拟机、带外物理机(运行在独立的CPU上) | 1 | integer | 0:带内物理机 1:带外 2:带内虚拟机 |
0 |
| IsUBFabricMode | 0x06 | 计算服务器是否通过UB设备组集群 | 1 | integer | 0:单机,1:集群 | 0 |
| IsUBControlNode | 0x07 | 是否为UB控制节点 | 1 | integer | 0:非管控节,1:管控节点 | 0 |
遗留问题
无