BMC_IPMI_v2.0_消息接口描述

目录

一、Network Function Codes

1、Chassis-00,01-机箱设备请求和响应

2、Bridge-02,03-桥接请求和响应

3、Sensor/Event-04,05-传感器和事件请求与响应

4、App-06,07-应用请求与响应

5、Firmware-08,09-固件传输请求和响应

6、Storage-0A,0B-非易失性存储请求和响应

7、Transport-0C,0D-特定媒体的配置和控制

8、Reserved-0E,2B

二、Completion Codes-完成码

三、Completion Code Requirements

1、非零通用完成代码的响应字段截断

2、完成码使用总结

四、传感器所有者识别

五、软件ID

六、消息内容的隔离性


一、Network Function Codes

连接头中的网络层由一个六位字段组成,用于标识要访问的功能。其余两个比特为 LUN 字段。LUN 字段提供节点内的进一步子地址。 网络功能用于将命令聚类为功能命令集。在解析层次结构中,LUN 字段可视为节点中特定网络功能处理程序的选择器,而网络功能可视为节点中特定命令集处理程序的选择器。

1、Chassis-00,01-机箱设备请求和响应
00h 表示命令/请求,01h 表示响应。

响应,与通用底盘控制和状态功能有关

2、Bridge-02,03-桥接请求和响应

02h(请求)或 03h(响应)标识报文包含桥接到下一条总线的数据。该数据通常是另一条报文,也可能是桥接报文。该功能仅存在于桥接节点上。

3、Sensor/Event-04,05-传感器和事件请求与响应

该功能可出现在任何节点上。04h 表示命令/请求信息,05h 表示响应信息,与事件信息和系统传感器的配置和传输有关。

4、App-06,07-应用请求与响应

06h 表示报文是应用命令/请求,07h 表示响应。应用程序报文的确切格式取决于特定设备的具体实施,但 IPMI 规范定义的应用程序报文除外。

请注意,本规范的新版本可能会确定新的 App 命令。为避免与本规范的未来版本发生冲突,强烈建议使用 OEM/群组网络功能来提供 “增值 ”功能,而不是 App 网络功能代码。

5、Firmware-08,09-固件传输请求和响应

固件传输请求和响应的格式与应用程序报文的格式一致。固件传输报文的类型和内容由特定设备定义。

6、Storage-0A,0B-非易失性存储请求和响应

任何提供非易失性存储和检索服务的节点都可以使用该功能。

7、Transport-0C,0D-特定媒体的配置和控制

请求(0Ch)和响应(0Dh),用于 IPMI 指定的介质特定配置和操作信息,如串行接口和局域网接口的配置。

8、Reserved-0E,2B

**reserved (30 Network Functions [15 pairs])**

二、Completion Codes-完成码

所有响应信息都包含一个完成代码,作为响应数据字段的第一个字节。管理控制器如果收到对无效(未执行)LUN 的请求,必须在响应中使用该 LUN 作为响应者的 LUN (RsLUN) 返回错误完成代码。完成代码表示关联请求报文是否正常成功完成,如果没有,则提供一个表示完成条件的值。 完成代码在 “命令 ”级别工作。它们是通过报文传送接口接收和验证命令后对命令解释的响应。在 “网络”(报文传送接口)层面出现的错误则由不同的错误报告机制来处理。例如,SMIC 系统接口包括独立于 IPMI 信息数据的状态代码,用于报告通信阶段的变化或接口中的错误。 完成代码值分为 “通用”、“设备特定”(包括 OEM)和 “命令特定 ”范围。所有命令都可以返回 “通用完成代码”。成功完成的命令将返回 00h,即 “命令正常完成 ”的完成代码。 产生错误条件或返回的响应与命令的请求参数所指定的不同的命令,将按规定返回一个非零的完成代码。

三、Completion Code Requirements

  1. 完成代码的作用:完成代码用于系统调试和错误处理。所有符合本文档命令规范的设备都应该实现“00h,命令正常完成”这一完成代码。
  2. 错误条件和非零完成代码:如果设备产生错误条件,或者返回的响应与请求参数指定的不符,那么设备必须返回一个非零的完成代码。
  3. 特定条件的完成代码:在某些情况下,对于特定条件需要返回特定的完成代码。这通常发生在命令特定的完成代码中。这些情况在描述特定命令或功能的章节中有文档记录。
  4. 通用或命令特定的完成代码:如果设备实现的完成条件与通用或命令特定的完成代码匹配,设备应该返回那个特定的值,或者返回“未指定错误”的完成代码FFh。尽可能地,设备实现应该返回明确的完成代码,而不是“未指定错误”。
  5. 多个非零完成条件:如果同时出现多个“非零”完成条件,实现者应该返回他们认为最能指示请求者应该首先纠正或处理的条件的完成代码。
  6. IPMI 1.5的新要求:对于不支持的命令,IPMI 1.5控制器和软件必须返回C1h(无效命令)。除非控制器或软件处于一般命令处理不可用的模式,例如,如果控制器处于固件更新模式,它可以合法地返回D1h(由于设备处于固件更新模式,无法提供命令响应)而不是C1h。
  7. IPMI v2.0的新要求:D4h完成代码已经扩展,用于表示由于固件防火墙导致权限不足或命令限制,命令无法访问。同样,新增了D6h完成代码,用于表示由于固件防火墙,特定子功能无法访问。

这些要求确保了IPMI命令的一致性和可预测性,同时也为错误处理提供了清晰的指导。

1、非零通用完成代码的响应字段截断

1. **响应字段截断**:当IPMI命令返回一个非零的完成代码时,响应者(即执行命令的设备)可以选择在完成代码字段之后截断数据字节。这包括任何IPMI规定的地址扩展字节,例如NetFn 2Ch/2Dh的组扩展代码或NetFn 2Eh/2Fh的IANA(Internet Assigned Numbers Authority)。
2. **实施选项**:是否截断数据字节是实现者(即设备制造商)的一个选项。这意味着不同的设备可能会有不同的行为。
3. **通常行为**:通常情况下,响应者会在非零完成代码和地址扩展字节之后截断所有字段。这意味着在这些字段之后,通常不会返回任何额外的数据。
4. **额外字段**:如果响应者返回了额外的字段,这些字段应该被认为是设备特定的内容,除非有其他明确的说明。这意味着,如果响应者在非零完成代码之后返回了额外的数据,这些数据可能与IPMI标准无关,而是特定于该设备制造商的实现。
5. **含义**:这段规则意味着,当命令执行出现错误时,响应者可能会选择不返回任何额外的数据,以简化错误处理。然而,如果响应者确实返回了额外的数据,这些数据可能包含有关错误的更多信息,但需要根据具体设备的行为来解释。

在处理IPMI命令时,对于非零完成代码后的响应字段,设备制造商可以有灵活性来决定是否提供额外的数据,以及这些数据的解释方式。

2、完成码使用总结

1. **标准命令的正常响应**:对于标准命令的正常响应,必须返回`00h`完成代码。
2. **OEM命令的正常响应**:对于OEM(原始设备制造商)命令的正常响应,建议也返回`00h`完成代码。
3. **标准命令的错误或非典型响应**:对于标准命令的错误或非典型响应,必须返回非零的完成代码。
4. **OEM命令的错误或非典型响应**:对于OEM命令的错误或非典型响应,建议返回非零的完成代码。
5. **不支持的命令**:对于不支持的命令,必须返回`C1h`(无效命令)的完成代码,除非设备处于一般命令处理不可用的模式。
6. **特定条件的特定完成代码**:如果规范指定对于给定条件必须返回特定的完成代码,那么必须返回该代码。
7. **通用完成代码**:如果没有特定的完成代码要求,建议实现者返回最接近的通用完成代码。如果实现者资源受限或错误分类不明确,可以返回`FFh`(未指定错误)的完成代码。
8. **设备特定的(OEM)完成代码**:只有在没有合适的通用完成代码时,才应返回设备特定的(OEM)完成代码。通用软件将设备特定的完成代码视为`FFh`(未指定错误)的完成代码。
9. **非零完成代码的依赖性**:除了强制性的完成代码外,软件不应依赖于对于给定错误条件返回特定的非零完成代码,因为有可能返回`FFh`或设备特定的代码。
10. **非法返回条件**:对于不存在的条件,非法返回通用或命令特定的完成代码,除非它被用作模拟设备或接口的一部分。例如,实现者可能允许使用主读写命令来访问一个实际上不是I2C总线的私有管理总线接口。作为仿真的一部分,实现者被允许返回与I2C总线状态相关的完成代码。

四、传感器所有者识别

1. **请求/响应标识符的定义**:请求者ID和响应者ID的定义是特定于所使用的消息接口的。这意味着不同的IPMI实现可能会有不同的方法来识别请求者和响应者。
2. **传感器数据记录和SEL信息**:传感器数据记录(Sensor Data Record)和系统事件日志(SEL)信息必须包含识别传感器所有者的信息。
3. **管理控制器的识别**:对于管理控制器,使用从机地址(Slave Address)和逻辑单元号(LUN)来识别IPMB(Intelligent Platform Management Bus)上的传感器所有者。
4. **系统软件的识别**:对于系统软件,使用软件ID来识别传感器的所有者。
5. **事件消息中的识别**:在事件消息中,来自管理控制器或IPMB的事件通过一个八位字段来识别,其中最高的7位是用于表示从机地址或系统软件ID。最低有效位(LSB)为0表示该值是代表从机地址,为1表示该值是代表系统软件ID。
6. **传感器编号**:传感器编号不是传感器所有者ID的一部分,而是用于识别与传感器所有者相关联的特定传感器的单独字段。
7. **唯一识别**:传感器所有者ID和传感器编号的组合在系统中唯一地识别了一个传感器。
8. **传感器所有者ID和传感器编号字段定义**:
    - IPMB传感器所有者ID:7位用于表示从机地址,最低位(0b)表示ID是来自从机地址。
    - 系统传感器所有者ID:7位用于表示系统软件ID,最低位(1b)表示ID是来自系统软件ID。
    - LUN(2位):逻辑单元号,用于进一步区分同一从机地址下的不同传感器。
    - 传感器编号(8位,FFh为保留值):用于唯一标识传感器。

五、软件ID

  1. 系统软件传感器所有者ID:列出了用于系统软件传感器所有者或IPMI消息生成器的传感器所有者ID。这些值用于系统软件通过系统接口发出事件消息时,以及远程控制台软件向BMC(基板管理控制器)发送消息时。
  2. 事件消息生成:例如,如果BIOS(基本输入输出系统)检测到处理器故障,它可以生成一个事件消息以记录故障事件。在格式化事件消息时,BIOS的“系统所有者ID”将包含在事件消息中。之后,系统管理软件可以访问系统事件日志,并确定事件消息是由BIOS生成的。
  3. IPMB消息:对于IPMB消息,传感器所有者ID被假定为消息的原始设备。因此,使用事件生成器的从机地址和LUN。
  4. 系统端传感器:对于系统端传感器,假定生成传感器命令的软件类别是传感器的“所有者”。
  5. 系统软件类型ID:表中列出了不同类型的系统软件类型ID,它们是7位的值,加上最低位(LSB)为1,以形成一个8位的值。
  6. 系统软件类型及其ID
    • BIOS:00h-0Fh,加上1b,结果为01h, 03h, 05h, …, 1Fh。
    • SMI(系统管理中断)处理器:10h-1Fh,加上1b,结果为21h, 23h, 25h, …, 3Fh。
    • 系统管理软件:20h-2Fh,加上1b,结果为41h, 43h, 45h, …, 5Fh。
    • OEM(原始设备制造商):30h-3Fh,加上1b,结果为61h, 63h, 65h, …, 7Fh。
    • 远程控制台软件:1-7,40h-46h,加上1b,结果为81h, 83h, 87h, …, 8Dh。
    • 终端模式远程控制台软件:47h,加上1b,结果为8Fh。
    • 保留的其余值:1b。
  7. 系统软件ID的使用:系统软件ID通常用在一个8位字段中,其中最低位是1b,以指示该字段包含的是软件ID而不是从机地址。例如,这发生在事件消息中的生成器ID字段的第一个字节中。表中的最后一列展示了7位软件ID如何在这样一个单字节字段中显示。

六、消息内容的隔离性

  1. 设计原则:SEL、SDR和事件命令的设计使得实现这些命令集的设备通常与SEL条目、传感器数据记录和事件消息的内容保持隔离。
  2. 事件接收器:事件接收器设备接收并路由事件消息,但不会解释它们。这意味着事件接收器的功能是将事件消息从一个源传递到另一个目的地,而不会深入分析消息的具体内容。
  3. SEL设备:SEL设备负责检索和存储日志条目,但不会解释这些日志条目的内容。SEL设备的功能是记录和管理事件日志,而不是对日志条目进行详细分析。
  4. SDR设备:SDR设备负责检索和存储传感器数据记录,同样不会解释这些记录的内容。SDR设备的作用是维护传感器的状态和数据,而不是对这些数据进行深入的解释。
  5. 隔离性:这种设计原则的目的是将事件的接收、路由、存储和解释功能分离,从而提高系统的灵活性和可扩展性。通过隔离,每个设备可以专注于其核心功能,而不需要处理与其主要任务无关的复杂性。
  6. 解释的职责:通常,解释事件消息、SEL条目和传感器数据记录内容的职责由系统管理软件或其他高级分析工具来承担。这些工具可以对收集到的数据进行深入分析,并根据需要采取相应的行动。
  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值