背景
当前 dcmi 标准命令存在缺失,需要评审新增支持 dcmi 标准命令,以满足数据中心管理接口规范(DCMI v1.5)的要求。
关联ISSUE
[需求]: 新增dcmi规范Get Temperature Readings命令
[需求]: 新增GetDcmiCapabilitiesInfo、GetAssetTag、SetAssetTag、GetThermalLimit命令
评审点
- 评审点1:IPMI 新增 GetTemperatureReadings 命令
- 评审点2:IPMI 新增 GetDcmiCapabilitiesInfo 命令
- 评审点3:IPMI 新增 GetAssetTag 命令
- 评审点4:IPMI 新增 SetAssetTag 命令
- 评审点5:IPMI 新增 GetThermalLimit 命令
详细描述
评审点1:IPMI 新增 GetTemperatureReadings 命令
命令名称: GetTemperatureReadings
命令说明: 支持DCMI规范获取温度传感器的值
命令权限: ReadOnly
是否锁定之后可以访问: 是
是否有敏感数据: 否
命令样式:
- 请求:
ipmitool raw 0x2c 0x10 <GrpExtId> <SensorType> <EntityID> <EntityInstance> <EntityInstanceStart> - 响应:
<GrpExtId> <AvailableInstances> <TempDataCount> <TempData>
命令请求参数:
| 字节顺序 | 域取值说明 |
|---|---|
| NetFn | 2Ch |
| Cmd | 10h |
| 1 | GrpExtId,组扩展ID。长度固定 1 个字节,固定值DCh。 |
| 2 | SensorType,传感器类型 |
| 3 | EntityID, 实体ID |
| 4 | EntityInstance,实体实例号 |
| 5 | EntityInstanceStart,查询实体实例起始序号 |
命令响应参数:
| 字节顺序 | 域取值说明 |
|---|---|
| 1 | Completion Code,说明如下:cch = 请求参数错误cbh = 请求的传感器、数据或记录不存在c9h = 参数超出范围 |
| 2 | GrpExtId,组扩展ID。长度固定 1 个字节,固定值DCh |
| 3 | AvailableInstances,属于请求中EntityID所有实体个数 |
| 4 | TempDataCount,本次请求的实体个数 |
| 5 | TempData,温度和实体 数据组,说明如下: Byte1:Bit 7: Sign bit (1 is negative and 0 is positive)Bit 6:0: Temperature data in Celsius degrees (Range is -128 C to +128 C) Byte 2: Entity Instance number for the sensor. |
命令示例:
样例1: 查询 EntityId为03h(CPU温度)的所有实体数据
- 请求:
ipmitool raw 0x2C 0x10 0xdc 0x01 0x03 0x00 0x02 - 响应:
dc 12 08 27 60 24 60 26 60 26 60 26 60 26 60 24 60 27 60
评审点2:IPMI 新增 GetDcmiCapabilitiesInfo 命令
命令名称: GetDcmiCapabilitiesInfo
命令说明: 获取 DCMI 能力信息,包括规范版本及支持的功能参数
命令权限: ReadOnly
是否锁定之后可以访问: 是
是否有敏感数据: 否
命令样式:
请求:ipmitool raw 0x2c 0x01 <GrpExtId> <Selector>
响应:<GrpExtId> <DcmiSpecConform> <ParamRevision> <ParameterData>
命令请求参数:
| 字节顺序 | 域 | 取值 | 说明 |
|---|---|---|---|
| NetFn | 2Ch | ||
| Cmd | 01h | ||
| 1 | GrpExtId | DCh | 组扩展ID。长度固定 1 个字节,固定值DCh。 |
| 2 | Selector | 参数选择器,用于指定请求的能力信息类型(如 0x01 表示支持的 DCMI 能力)。 |
命令响应参数:
| 字节顺序 | 域 | 取值 | 说明 |
|---|---|---|---|
| 1 | Completion Code | 00h = 成功 | |
| 2 | GrpExtId | DCh | 组扩展ID。长度固定 1 个字节,固定值DCh。 |
| 3:4 | DcmiSpecConform | DCMI 规范版本一致性。Byte 1: Major Version (01h); Byte 2: Minor Version (05h)。 | |
| 5 | ParamRevision | 02h | 参数版本号。 |
| 6:N | ParameterData | 能力参数数据,根据请求的 Selector 返回相应内容。 |
附表:ParameterData 详细定义 (参考 DCMI Table 6-3)
| Parameter Selector (#) | 参数名称 | Parameter Data 说明 | 备注/实现说明 |
|---|---|---|---|
| 1 | Supported DCMI Capabilities(支持的 DCMI 能力) | Byte 1: Reserved (00h) | 固定为 00h |
| Byte 2: Platform capabilities[0] Power management available | 暂时不实现 (置 0) | ||
| Byte 3: Manageability Access Capabilities[0] In-band System Interface Channel Available | 不需要实现 (置 0) | ||
| Byte 3: Manageability Access Capabilities[1] Serial TMODE Available | 默认支持,返回 1 即可 | ||
| Byte 3: Manageability Access Capabilities[2] Out-Of-Band Secondary LAN Channel Available | 判断路径是否存在:/bmc/kepler/IpmiService/Channels/LAN2存在时返回 1,否则返回 0 |
||
| Byte 3: [7:3]Reserved | 固定为 00h | ||
| 2 | Mandatory Platform Attributes(强制平台属性) | Byte 1:2: SEL AttributesByte 3:4: ReservedByte 5: Sampling frequency for Temperature Monitoring | [不需要实现](注:建议返回错误码 0xD5 表示不支持) |
| 3 | Optional Platform Attributes(可选平台属性) | Byte 1: Power management Device Slave AddressByte 2: Power management Controller Channel Number | [暂不实现](注:建议返回错误码 0xD5 表示不支持) |
| 4 | Manageability Access Attributes(可管理性访问属性) | Byte 1: Primary LAN OOB Support Channel Number | 固定返回 1 |
| Byte 2: Secondary LAN OOB Support Channel Number | **逻辑如下:**1. 若 Selector 1 的 Byte 3 [2] (Secondary LAN) 为 1: - 从资源树获取属性值 - Path: /bmc/kepler/IpmiService/Channels/LAN2 - Interface: bmc.kepler.IpmiService.ChannelNumberMapping - Property: External2. 若 Selector 1 的 Byte 3 [2] 为 0: - 固定返回 0xFF |
||
| Byte 3: Serial Out-Of-Band TMODE Capability Channel Number | 返回 0xFF 即可 | ||
| 5 | Enhanced System Power Statistics(增强系统电源统计属性) | Byte 1: Number of supported rolling average time periodsByte 2:N: Rolling Average Time periods | [暂时不实现](注:建议返回错误码 0xD5 表示不支持) |
命令示例:
样例1: 获取支持的 DCMI 能力 (Selector=0x01)
请求:ipmitool raw 0x2C 0x01 0xdc 0x01
响应:dc 01 05 02 06 00 02 (示例数据:DCMI 1.5, Parameter Revision 02, Capabilities Data…)
评审点3:IPMI 新增 GetAssetTag 命令
命令名称: GetAssetTag
命令说明: 获取系统的资产标签(Asset Tag)信息
命令权限: ReadOnly
是否锁定之后可以访问: 是
是否有敏感数据: 否
命令样式:
请求:ipmitool raw 0x2c 0x06 <GrpExtId> <Offset> <ReadLength>
响应:<GrpExtId> <TotalAssetTagLen> <AssetTagData>
命令请求参数:
| 字节顺序 | 域 | 取值 | 说明 |
|---|---|---|---|
| NetFn | 2Ch | ||
| Cmd | 06h | ||
| 1 | GrpExtId | DCh | 组扩展ID。长度固定 1 个字节,固定值DCh。 |
| 2 | Offset | 读取偏移量。 | |
| 3 | ReadLength | 读取长度(最大 16 字节)。 |
命令响应参数:
| 字节顺序 | 域 | 取值 | 说明 |
|---|---|---|---|
| 1 | Completion Code | C9h = 参数越界(读取长度过大或偏移量错误) | |
| 2 | GrpExtId | DCh | 组扩展ID。长度固定 1 个字节,固定值DCh。 |
| 3 | TotalAssetTagLen | 资产标签的总长度。 | |
| 4:N | AssetTagData | 请求的资产标签数据片段。 |
命令示例:
样例1: 读取资产标签的前 16 个字节
请求:ipmitool raw 0x2C 0x06 0xdc 0x00 0x10
响应:dc 05 41 53 53 45 54 (示例:长度5,内容ASSET)
评审点4:IPMI 新增 SetAssetTag 命令
命令名称: SetAssetTag
命令说明: 设置系统的资产标签(Asset Tag)信息
命令权限: Operator
是否锁定之后可以访问: 否
是否有敏感数据: 否
命令样式:
请求:ipmitool raw 0x2c 0x08 <GrpExtId> <Offset> <WriteLength> <Data>
响应:<GrpExtId> <AssetTagLen>
命令请求参数:
| 字节顺序 | 域 | 取值 | 说明 |
|---|---|---|---|
| NetFn | 2Ch | ||
| Cmd | 08h | ||
| 1 | GrpExtId | DCh | 组扩展ID。长度固定 1 个字节,固定值DCh。 |
| 2 | Offset | 写入偏移量(必须连续写入)。 | |
| 3 | WriteLength | 写入长度(最大 16 字节)。 | |
| 4:N | Data | 要写入的资产标签数据。 |
命令响应参数:
| 字节顺序 | 域 | 取值 | 说明 |
|---|---|---|---|
| 1 | Completion Code | C9h = 参数越界C7h = 请求数据长度无效 | |
| 2 | GrpExtId | DCh | 组扩展ID。长度固定 1 个字节,固定值DCh。 |
| 3 | TotalAssetTagLen | 写入后的资产标签总长度。 |
命令示例:
样例1: 设置资产标签为 “TEST” (4 bytes)
请求:ipmitool raw 0x2C 0x08 0xdc 0x00 0x04 0x54 0x45 0x53 0x54
响应:dc 04
评审点5:IPMI 新增 GetThermalLimit 命令
命令名称: GetThermalLimit
命令说明: 获取热限值(Thermal Limit)配置,支持获取 Inlet Temperature (0x40/0x37) 的管控策略
命令权限: ReadOnly
是否锁定之后可以访问: 是
是否有敏感数据: 否
命令样式:
请求:ipmitool raw 0x2c 0x0c <GrpExtId> <EntityID> <EntityInstance>
响应:<GrpExtId> <ExceptionAction> <TempLimit> <ExceptionTime>
命令请求参数:
| 字节顺序 | 域 | 取值 | 说明 |
|---|---|---|---|
| NetFn | 2Ch | ||
| Cmd | 0Ch | ||
| 1 | GrpExtId | DCh | 组扩展ID。长度固定 1 个字节,固定值DCh。 |
| 2 | EntityID | 实体ID(如 0x40 或 0x37 表示 Inlet Temperature)。 | |
| 3 | EntityInstance | 实体实例号。 |
命令响应参数:
| 字节顺序 | 域 | 取值 | 说明 |
|---|---|---|---|
| 1 | Completion Code | CCh = 无效的数据域(如不支持的 EntityID) | |
| 2 | GrpExtId | DCh | 组扩展ID。长度固定 1 个字节,固定值DCh。 |
| 3 | ExceptionAction | 异常动作(如 0x20 表示关机并记录日志)。 | |
| 4 | TempLimit | 温度限值。 | |
| 5:6 | ExceptionTime | 异常持续时间(秒),小端序。 |
命令示例:
样例1: 获取 Inlet Temperature (0x40) 实例 1 的热限值
请求:ipmitool raw 0x2C 0x0C 0xdc 0x40 0x01
响应:dc 20 00 00 00
评审结论
(1)同意新增ipmi命令 GetTemperatureReadings,该命令支持DCMI规范获取温度传感器的值。
(2)同意新增ipmi命令 GetDcmiCapabilitiesInfo,该命令支持获取DCMI能力信息,包括规范版本及支持的功能参数。
(3)同意新增ipmi命令 GetAssetTag,该命令支持获取系统的资产标签(Asset Tag)信息。
(4)同意新增ipmi命令 SetAssetTag,该命令支持设置系统的资产标签(Asset Tag)信息。
(5)同意新增ipmi命令 GetThermalLimit,该命令支持获取热限值(Thermal Limit)配置,支持获取Inlet Temperature(Ox40/0x37)的管控策略。