背景
当前 dcmi 标准命令和ipmi标准命令存在缺失,需要评审新增支持 dcmi 标准命令和ipmi标准命令,以满足数据中心管理接口规范(DCMI v1.5)和(ipmi-spec-v2.0)的要求。
关联ISSUE
[缺陷]: 新增Delete SDR、Get DCMI Sensor Info命令-sensor-AtomGit | GitCode
[缺陷]: 新增Get Management Controller Identifier String、Set Management Controller Identifier String命令,更新Get DCMI Capabilities Info 命令
评审点
- 评审点1:IPMI 新增 DeleteSDR 命令
- 评审点2:IPMI 新增 GetDCMISensorInfo 命令
- 评审点3:IPMI 更新 Get DCMI Capabilities Info 命令
- 评审点4:IPMI 新增 Get Management Controller Identifier String 命令
- 评审点5:IPMI 新增 Set Management Controller Identifier String 命令
详细描述
评审点1:IPMI 新增 DeleteSDR 命令
命令名称: DeleteSDR
命令说明: 删除指定传感器记录
命令权限: BasicSetting
是否锁定之后可以访问: 否
是否有敏感数据: 否
命令样式:
- 请求:
ipmitool raw 0x0a 0x26 <ReserveIdL> <ReserveIdH> <RecordIdL> <RecordIdH> - 响应:
<CompletionCode> <RecordIdL> <RecordIdH>
命令请求参数:
| 字节顺序 | 域取值说明 |
|---|---|
| NetFn | 0Ah |
| Cmd | 26h |
| 1 | ReserveIdL,预定ID低字节,长度1字节 |
| 2 | ReserveIdH,预定ID高字节,长度1字节 |
| 3 | RecordIdL, 要删除的记录ID低字节,长度1字节 |
| 4 | RecordIdH,要删除的记录ID高字节,长度1字节 |
命令响应参数:
| 字节顺序 | 域取值说明 |
|---|---|
| 1 | Completion Code,说明如下:00h = 成功 d5h = 当前状态不支持 D0h = 正被其他会话监听 c9h = 参数超出范围 |
| 2 | RecordIdL,被删除记录ID低字节。长度 1 个字节 |
| 3 | RecordIdH,被删除记录ID高字节。长度1个字节 |
命令示例:
样例1: 删除RecordId为a5h的传感器记录
- 请求:
ipmitool raw 0x0a 0x26 0x34 0x12 0xa5 0x00 - 响应:
a5 00
评审点2:IPMI 新增 Get DCMI Sensor Info命令
命令名称: GetDCMISensorInfo
命令说明: 支持DCMI规范获取传感器的信息
命令权限: ReadOnly
是否锁定之后可以访问: 是
是否有敏感数据: 否
命令样式:
- 请求:
ipmitool raw 0x2c 0x07 <GrpExtId> <SensorType> <EntityID> <EntityInstance> <EntityInstanceStart> - 响应:
<CompletionCode><GrpExtId> <TotalInstance> <RecordCount> <RecordIDs>
命令请求参数:
| 字节顺序 | 域取值说明 |
|---|---|
| NetFn | 2Ch |
| Cmd | 07h |
| 1 | GrpExtId,组扩展ID。长度固定 1 个字节,固定值DCh。 |
| 2 | SensorType,传感器类型 |
| 3 | EntityID, 实体ID |
| 4 | EntityInstance,实体实例号 |
| 5 | EntityInstanceStart,查询实体实例起始序号 |
命令响应参数:
| 字节顺序 | 域取值说明 |
|---|---|
| 1 | Completion Code,00h = 成功; CCh = 无效数据字段; C9h = 参数超范围 |
| 2 | GrpExtId,组扩展ID。长度固定 1 个字节,固定值DCh |
| 3 | TotalInstance,该 Entity ID 实际存在的实例总数,长度1个字节 |
| 4 | RecordCount,本次响应中返回的SDR Record ID 数量,长度1个字节,在请求参数EntityInstance为0时,最大为08h,非0时,最大为01h |
| 5 | RecordIDs,SDR的记录ID,5:6 + N说明: N个Record ID ,每一个 Record ID 占 2 个字节,低字节在前 |
命令示例:
样例1: 查询 EntityId为03h的所有传感器信息
- 请求:
ipmitool raw 0x2C 0x07 0xdc 0x01 0x03 0x00 0x01 - 响应:
dc 02 02 23 00 24 00
评审点3:IPMI 更新 Get DCMI Capabilities Info 命令
命令名称: GetDcmiCapabilitiesInfo
命令说明: 获取 DCMI 能力信息,包括规范版本及支持的功能参数
命令权限: ReadOnly
是否锁定之后可以访问: 是
是否有敏感数据: 否
命令样式:
- 请求:
ipmitool raw 0x2c 0x01 <GrpExtId> <Selector> - 响应:
<GrpExtId><DcmiSpecConform> <ParamRevision> <ParameterData>
命令请求参数:
| 字节顺序 | 域 | 取值 | 说明 |
|---|---|---|---|
| NetFn | 2Ch | ||
| Cmd | 07h | ||
| 1 | GrpExtId | DC | 组扩展ID。长度固定 1 个字节,固定值DCh。 |
| 2 | Selector | 参数选择器,用于指定请求的能力信息类型(如 0x01 表示支持的 DCMI 能力)。 |
命令响应参数:
| 字节顺序 | 域 | 取值 | 说明 |
|---|---|---|---|
| 1 | Completion Code | 00h = 成功 | |
| 2 | GrpExtId | DC | 组扩展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 | 默认支持,返回 1 即可 | ||
| 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: External 2. 若 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: 查询 EntityId为03h的所有传感器信息
- 请求:
ipmitool raw 0x2C 0x01 0xdc 0x01 - 响应:
dc 01 05 02 00 00 03
评审点4:IPMI 新增 Get Management Controller Identifier String 命令
命令名称: Get Management Controller Identifier String
命令说明: 获取管理控制器标识符字符串
命令权限: ReadOnly
是否锁定之后可以访问: 是
是否有敏感数据: 否
命令样式:
- 请求:
ipmitool raw 0x2c 0x09 <GrpExtId> <Offset> <ReadLength> - 响应:
<CompletionCode><GrpExtId> <IDStringLen> <Data>
命令请求参数:
| 字节顺序 | 域取值说明 |
|---|---|
| NetFn | 2Ch |
| Cmd | 09h |
| 1 | GrpExtId,组扩展ID。长度固定 1 个字节,固定值DCh。 |
| 2 | Offset,读取偏移量 |
| 3 | ReadLength, 读取字节数(最大 16 字节) |
命令响应参数:
| 字节顺序 | 域取值说明 |
|---|---|
| 1 | Completion Code,说明如下:cch = 请求参数错误cbh = 请求的传感器、数据或记录不存在c9h = 参数超出范围 |
| 2 | GrpExtId,组扩展ID。长度固定 1 个字节,固定值DCh |
| 3 | IDStringLen, ID 字符串长度(从偏移量 0 开始到第一个空字符的非空字符数,最大 63 字节) |
| 4:N | Data, 标识符字符串的实际数据内容 |
命令示例:
样例1:读取当前标识符字符串(基础功能)从 Offset 0 开始读取 16 个字节(标准读取)
- 请求:
ipmitool raw 0x2C 0x09 0xdc 0x00 0x10 - 响应:
dc 06 31 32 74 65 73 74
评审点5:IPMI 新增 Set Management Controller Identifier String 命令
命令名称: Set Management Controller Identifier String
命令说明: 设置管理控制器标识符字符串
命令权限: BasicSetting
是否锁定之后可以访问: 否
是否有敏感数据: 否
命令样式:
- 请求:
ipmitool raw 0x2c 0x0a <GrpExtId> <Offset> <WriteLength> <Data> - 响应:
<CompletionCode><GrpExtId> <LastOffsetWritten>
命令请求参数:
| 字节顺序 | 域取值说明 |
|---|---|
| NetFn | 2Ch |
| Cmd | 0ah |
| 1 | GrpExtId,组扩展ID。长度固定 1 个字节,固定值DCh。 |
| 2 | Offset,写入偏移量 |
| 3 | WriteLength, 写入字节数(最多 16 字节) |
| 4:N | Data, 要写入的标识符字符串数据 |
命令响应参数:
| 字节顺序 | 域取值说明 |
|---|---|
| 1 | Completion Code,说明如下:cch = 请求参数错误cbh = 请求的传感器、数据或记录不存在c9h = 参数超出范围 |
| 2 | GrpExtId,组扩展ID。长度固定 1 个字节,固定值DCh |
| 3 | LastOffsetWritten, 最后写入偏移量(即操作完成后,存储的标识符字符串总长度,等于 写入偏移量 + 写入字节数) |
命令示例:
样例1:读取当前标识符字符串(基础功能)从 Offset 0 开始读取 16 个字节(标准读取)
- 请求:
ipmitool raw 0x2C 0x0a 0xdc 0x00 0x09 0x44 0x43 0x4d 0x49 0x2d 0x54 0x45 0x53 0x54 - 响应:
dc 09