代码仓
中
IPMI用户指南
更新时间: 2025/09/14
在AtomGit上查看源码

命令使用方式 ​

本地执行、远程执行的语法格式 ​

1、本地执行(二选一) ​

text
ipmicmd -k "f 0 <netfn> <cmd> [data]" smi 0
ipmitool raw <netfn> <cmd> [data]

2、远程执行 ​

text
ipmitool -I lanplus -H <IP> -U <user> -P <pass> raw <netfn> <cmd> [data]

ipmicmd 基本语法格式 ​

text
ipmicmd -k "f <channel> <netfn> <cmd> [data...]" smi <interface_id>

参数说明:

  • -k:指定使用KCS或BT接口
  • f:表示执行原始命令(raw command)
  • <channel>:通道号,通常为0(系统接口)
  • <netfn>:网络功能码(十六进制,需要使用请求NetFn,即偶数)
  • <cmd>:命令码(十六进制)
  • [data...]:命令数据字节(可选,十六进制)
  • smi:指定使用SMI接口
  • <interface_id>:接口ID,通常为0

ipmitool 原始命令格式 ​

text
ipmitool [-I <interface>] raw <netfn> <cmd> [data...]

参数说明:

  • -I <interface>:指定接口类型
    • open:本地KCS或BT接口(默认)
    • lanplus:IPMI v2.0 LAN接口
    • lan:IPMI v1.5 LAN接口
  • -H <host>:BMC的IP地址
  • -U <username>:用户名
  • -P <password>:密码
  • raw:发送原始IPMI命令
  • <netfn>:网络功能码(十进制或十六进制,使用请求NetFn)
  • <cmd>:命令码(十进制或十六进制)
  • [data...]:命令数据字节(十进制或十六进制)

ipmicmd 、ipmitool参数说明对比 ​

参数项ipmicmdipmitool说明
接口类型-k + smi 0-I open(默认)本地KCS或BT接口
通道号f 0无需指定ipmitool自动处理
NetFn十六进制(如:06)十六进制或十进制(如:0x06或6)必须使用请求NetFn(偶数)
CMD十六进制(如:01)十六进制或十进制(如:0x01或1)命令码
数据字节十六进制空格分隔(如:00 01)十六进制或十进制空格分隔(如:0x00 0x01)可选参数

本地执行命令,ipmicmd转换为ipmitool的方法:**去掉-k "f 0和" smi 0,在NetFn/CMD/Data前加0x。**格式转换示例如下:

工具完整格式示例
ipmicmdipmicmd -k "f 0 <netfn> <cmd> [data]" smi 0ipmicmd -k "f 0 06 01" smi 0
ipmitoolipmitool raw <netfn> <cmd> [data]ipmitool raw 0x06 0x01

必知必会 ​

  1. NetFn分请求/响应:发送命令用偶数(如0x06),收到响应是奇数(如0x07)
  2. 数字格式:ipmicmd用纯十六进制,不允许加前缀0x;ipmitool必须增加0x前缀或使用十进制
  3. 优先使用高级命令:ipmitool mc info 比 ipmitool raw 0x06 0x01 更直观
  4. 调试技巧:加 -v 或 -vv 查看详细信息
  5. ipmicmd命令返回的数据长度最大为36个字节,如果返回的数据长度超过36个字节,建议使用ipmitool命令

加密算法套件 ​

通过RMCP/RMCP Plus协议发送IPMI命令时,不同机型默认支持的加密算法套件存在差异。具体如下表所示:

加密算法套件机型范围
默认开启 Cipher suite 17 支持DP120、DP220、DP4210、OceanStor Pacific 9950 Data cluster module、OceanStor Pacific 9950 Node、FusionCube 500、CM421 V2、CM221 V2、CM311T V2、CM211S V2、CM221S V2、CM411 V2
默认开启 Cipher suite 1,2,3,17 支持RH1288 V3、RH2288 V3、RH2288H V3、XH310 V3、RH8100 V3、RH5885 V3、RH5885H V3、5288 V3、1288H V5、2288H V5、2288C V5、5288 V5、2288 V5(JDM)、5885H V5、2488 V5、2488H V5、1288X V5、2288X V5、5288X V5、2298 V5、1288H V6、2288H V6、2488H V6、CH121 V3、CH121H V3、CH121L V3、CH140 V3、CH140L V3、CH220 V3、CH222 V3、CH242 V3、CH226 V3、CH225 V3、CH121 V5、CH242 V5、CH121L V5、CH225 V5、CH221 V5、FD Controller、CX220、CX620、CX621、CX320、CX318、CX710、CX712、CX820、CX916、CX920、CX930、MM630、MM810、MM650、MM920、MM921、MM510、RM110、RM210、XH622 V3、XH628 V3、XH620 V3、XH310 V3、XH321 V3、XH321 V5、XH321L V5、XH628 V5、9008、9016、9032、RH8100 V3、9008 V5 Base、9008 V5 Advance、8100 V5、Taishan 100 2180、TaiShan 100 2280、TaiShan 100 5280、TaiShan 100 XR320、TaiShan 200 1280、TaiShan 200 2180、TaiShan 200 2280、TaiShan 200 5280、TaiShan 200 2480、TaiShan 200 2280E、TaiShan 200 5290、TaiShan 200 XA320、G560、G2500、G560 V5、G530 V5、Atlas 800 9000、A800-9000、Atlas 800 9010、A800-9010、Atlas 500 Pro、A500 Pro、DA120 V2、DA120C V2、DH120 V5、DH120C V5、DA140C V2、DH140C V6、DA121C V2、CM221、CN221、CM221S、CN221 V2、CN221S V2、SMM410、SMM420、SMM810、SMM820、Atlas 800I A2 2UP、A800I 2UP、Atlas 900 A3 SuperPoDA900 A3 SuperPoD、Atlas9000 RCK A3A9000 RCK A3

备注:当CM221、CN221、CN221 V2、CN221S V2、SMM410、SMM420、SMM810、SMM820的BMC BMC版本为3.2.1.13及以上版本时,只默认开启Cipher suite 17支持。

完成码定义 ​

完成码描述
00h命令执行成功
C0h节点忙。命令不能处理,命令处理资源暂时不可用
C1h非法命令,通常指不能识别或者不支持的命令
C2h对某个特定LUN来说是非法命令
C3h执行命令超时,响应不可用
C4h空间不够。由于存储空间不够导致命令不能完成
C5h预定操作被取消或者无效的预定ID
C6h请求数据不完整,被截断
C7h请求数据长度非法
C8h请求数据长度超过上限
C9h参数超出范围,请求数据字段中的一个或多个参数超出范围
CAh无法返回请求的数据字节数
CBh请求的传感器、数据、记录不存在
CCh请求数据字段无效
CDh对特定传感器或者记录类型所发送的命令非法
CEh无法提供响应
CFh不能执行重复请求。此完成代码适用于无法返回为请求的原始实例返回的响应的设备。此类设备应提供单独的命令,允许确定原始请求的完成状态。事件接收器不使用此完成码,但在对(有效的)重复请求的响应中返回00h完成码
D0hSDR存储库正处在更新状态,不能提供命令响应
D1h设备正处在固件更新状态,不能提供命令响应
D2hBMC正在初始化或者初始化代理正在处理初始化任务,不能提供命令响应
D3h目的地不可达。请求不能发送到目的地址,例如如果请求消息是针对SMS的,但特定通道的接收消息队列接收被禁用,则可以返回此代码
D4h命令不能执行,权限不足或其他基于安全的限制
D5h命令不能执行,当前状态不支持该命令或者请求参数
D6h命令不能执行,参数非法,因为命令子功能被禁用或不可用
FFh未指定的错误
01h~7Eh自定义完成码
80h~BEh标准命令特定码
其他保留

产品分类说明及其注意事项 ​

不同产品支持的命令集合可能存在差异,即同一条命令非以上所有机型均支持。

【注意事项】子系统命名和划分 ​

子系统中文名称英文名称备注
融合运维子系统om1、interface,包含北向接口(含web)
2、om,运维系统,在BMC领域的运维管理
多样硬件子系统hardwarehardware,硬件管理
能效管理子系统energyenergy,不呈现动词
RAS故障管理子系统rasras,业界专用缩写,完整呈现故障管理领域功能
安全韧性子系统securitysecurity,安全相关APP
平台功能子系统bmc_corebmc_core,BMC软件的基础核心功能
基础框架子系统frameworkframework,与业务无关的纯软件框架

【注意事项】openUBMC四段式版本号规则 ​

openUBMC 软件版本采用四段式编号,格式为 a.bb.cc.dd,各段含义为 MajorVer.MinorVer.releaseMajorVer.releaseMinorVer。

段字段编码方式取值范围规范来源说明
第 1 段(a)MajorVerBinary encoded3–9IPMI 规范主版本号
第 2 段(bb)MinorVerBCD encoded00–99IPMI 规范次版本号,须保留前导 0,如 01
第 3 段(cc)releaseMajorVerBCD encoded00–99OEM 规范发布主版本号,须保留前导 0
第 4 段(dd)releaseMinorVerBCD encoded00–97OEM 规范发布次版本号,须保留前导 0;装备分离场景下对外呈现时会将本段值加 1。若商用版本号第 4 段已至 99,则装备版本号无法达到 100

示例:3.01.17.43 表示 MajorVer=3,MinorVer=01,releaseMajorVer=17,releaseMinorVer=43。对应 IPMI 响应中,四段版本号字节依次为 MajorVer(Binary encoded)、MinorVer(BCD encoded)、releaseMajorVer(BCD encoded)、releaseMinorVer(BCD encoded);Get Component Properties 响应在 MinorVer 与 releaseMajorVer 之间还包含 2 字节 Board ID。

通过 IPMI 查询版本号时,各段按上述编码方式以字节依次返回(MajorVer 为 Binary encoded,其余三段为 BCD encoded)。例如 MinorVer 为 99 时,响应中对应字节为 0x99。查询命令示例(Get Component Properties,NetFn=0x2C,CMD=0x2F,selector=1/get_current_version):

bash
ipmitool raw 0x2C 0x2F 0x00 0x00 0x01

【注意事项】接口申报责任人 ​

总体原则:

1、由BMC软件实现的IPMI命令,优先由BMC侧申报议题评审。

2、由IMU软件实现的IPMI命令,优先由IMU侧申报议题评审。

例外场景:有一些特性,确实是某个领域看的比较全,或者是对应需求发起方,就让对应领域的责任人申报议题一起评审。

【注意事项】接口修改流程 ​

步骤1、 “开发人员”获取最新的接口文档。

步骤2、 “开发人员”基于最新的文档,刷新修改或新增接口,并通过组内的SE审核(审核维度:接口完整性、接口需求满足度)。

步骤3、 “开发人员”找“接口文档看护SE”审核(审核维度:接口的合理性、通用性、兼容性),审核通过后提交SubPC评审。

步骤4、 SubPC评审通过后,“开发人员”将修改点和评审纪要邮件通知“接口文档看护SE”刷新。

【注意事项】IPMI接口修改常见问题checklist ​

1、设置、查询的内容,需要增加长度字段,如果超长内容,需要考虑分段读写。

2、不要漏了步骤4“SubPC评审通过后,“开发人员”将修改点和评审纪要邮件通知“接口文档看护SE”刷新”,测试会基于对外IPMI接口文档来验收,不更新对外IPMI文档,测试提单跟踪。

3、命令字定义,要避免与已有的IPMI冲突。

4、复用老版本命令,必须要考虑BMC全场景的兼容性,包括不限于:新老板、周边组件、工具、生产装备、现网场景等。

5、接口修改需要必须写清楚“修订记录”,包括:openUBMC软件版本、修改背景、时间、修改人。

6、IPMI命令若是特定机型专用命令,需要在“适用机型”中明确具体机型。

7、IPMI命令“使用实例”需要准确、可执行。

IPMI的OEM命令格式 ​

关键信息 ​

IPMI规范把OEM命令分成了3类:1、组织扩展类(Group Extension);2、组织级OEM(OEM/Group);3、厂商级OEM(Controller-specific OEM/Group)

第1类:Netfn为2Ch、2Dh

由请求的第一个字节来区分组织。请求和响应的第一个字节都要带这个字节。请求和响应数据中不需要填写厂商ID

下面是一个典型的PICMG组织扩展的OEM命令定义,请求、响应第一个字节都带有PICMG标识。

第2类:Netfn为2Eh、2Fh:

这些命令的请求、响应前3个字节都要填IANA号。这个IANA号可以和设备的厂商ID不同。为什么呢?因为这些命令的含义是由组织定义的,不是由某个厂商定义的。如果某个厂商要实现这些命令,也要遵从该组织的定义。多个厂商实现的该命令,含义是相同的,功能要兼容。

第3类:Netfn为30h~3Fh:

这些命令是由各个厂家自定义的OEM命令。因此不要求在命令的请求、响应中填写厂商ID。那么如果不同厂家命令定义重复了但含义不同怎么办?上层软件需要通过厂商ID来区分,但OEM命令中没有填写厂商ID怎么办呢?从Get Device ID命令中获取厂商ID。

也就是上层软件需要先获取厂商ID,再来解析OEM命令。所以此类OEM命令中不需要再重复填写厂商ID。

厂商ID ​

查询网址:https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers

申请地址:http://pen.iana.org/pen/PenApplication.page

厂商ID十六进制厂商名称
20110x7dbHUAWEI Technology Co.,Ltd
196210x4ca5alibaba

权限说明 ​

以openUBMC V3版本为例,mds ipmi.json语法支持九大权限,具体定义:

1)用户角色: role,遵循IPMI规范定义,可选的权限有Unspecified, Callback, User, Operator, Administrator ,OEM

2)九大权限: privilege,九大权限具体定义(注意"Mgmt"的单词简写):"UserMgmt" "BasicSetting" "KVMMgmt" "VMMMgmt" "SecurityMgmt" "PowerMgmt" "DiagnoseMgmt" "ReadOnly" "ConfigureSelf"

权限英文解释中文对应V2配置V3适配指导
CallbackThis may be considered the lowest privilege level. Only commands necessary to support initiating a Callback are allowed.最低权限级别。只允许支持启动回调所需的命令。
UserOnly ‘benign’ commands are allowed. These are primarily commands that read data structures and retrieve status. Commands that can be used to alter BMC configuration, write data to the BMC or other management controllers, or perform system actions such as resets, power on/off, and watchdog activation are disallowed.只允许“良性”命令。这些主要是读取数据结构和检索状态的命令。不允许使用可用于更改BMC配置、向BMC或其他管理控制器写入数据或执行系统操作(如重置、电源打开/关闭和看门狗激活)的命令。RMCP_USER查询类命令
OperatorAll BMC commands are allowed, except for configuration commands that can change the behavior of the out-of-band interfaces. For example, Operator privilege does not allow the capability to disable individual channels, or change user access privileges.允许使用所有BMC命令,但可以更改带外接口行为的配置命令除外。例如,操作员权限不允许禁用单个频道或更改用户访问权限。RMCP_OPERATOR设置类命令
AdministratorAll BMC commands are allowed, including configuration commands. An Adminstrator can even execute configuration commands that would disable the channel that the Administrator is communicating over.允许所有BMC命令,包括配置命令。管理员甚至可以执行配置命令,以禁用管理员正在通信的通道。RMCP_ADMIN修改硬件GUID等命令

命令约束 ​

消息长度 ​

IPMI IPMB最长消息信息支持254Bytes:消息头6Bytes+消息体247Bytes+校验1Byte

IPMI BT最长消息信息支持252Bytes:消息头4Bytes+消息体247Bytes+校验1Byte

IPMI LAN (RMCP)和IPMI LAN (RMCP+)最长消息信息支持254Bytes:消息头6Bytes+消息体247Bytes+校验1Byte

性能规格 ​

ipmb消息处理时间,90%的消息处理小于20ms,超时时间100ms(超时后忽略返回)

可靠性建议 ​

新增的IPMI命令的应用场景,若涉及到BT通信场景,建议在请求及响应末尾增加完整性校验字段,校验算法推荐使用CRC8