【待评审】新增Delete SDR、Get DCMI Sensor Info等4个命令,更新1条命令

背景

当前 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