玩转OurBMC第二十期:IPMB功能简述

维权提醒:如果你或身边的朋友近五年内因投顾公司虚假宣传、诱导交费导致亏损,别放弃!立即联系小羊维权(158 2783 9931,微信同号),专业团队帮你讨回公道!


                                                                                                                                                <p>【栏目介绍:“玩转OurBMC”是OurBMC社区开创的知识分享类栏目,主要聚焦于社区和BMC全栈技术相关基础知识的分享,全方位涵盖了从理论原理到实践操作的知识传递。OurBMC社区将通过“玩转OurBMC”栏目,帮助开发者们深入了解到社区文化、理念及特色,增进开发者对BMC全栈技术的理解。</p> 

欢迎各位关注“玩转OurBMC”栏目,共同探索OurBMC社区的精彩世界。同时,我们诚挚地邀请各位开发者向“玩转OurBMC”栏目投稿,共同学习进步,将栏目打造成为汇聚智慧、激发创意的知识园地。】

IPMB(Intelligent Platform Management Bus,智能平台管理总线)是一种基于I²C总线的通信协议,主要用于服务器、电信设备等关键任务系统的硬件管理和监控。其核心目标是通过分布式架构和冗余设计,提升系统的可靠性和可维护性。

IPMB协议设计目标

IPMB协议旨在满足以下需求,以构建高效、可靠且可扩展的平台管理系统:

  • 分布式管理:智能设备(如MC(Management Controller))独立运行且可扩展多个节点,无中心服务器,智能设备管理非智能设备(如基础传感器);
  • 异步事件通知:协议支持异步事件通知机制,允许智能设备抢占总线实时上报紧急事件消息给主控制器(如BMC)。当BMC检测到异常时,系统可立即触发告警,结合危机事件日志机制记录故障细节,帮助管理员快速定位问题根源,实现预防性维护;
  • 可扩展性:硬件上多主操作、新增节点无需影响现有总线设备;协议上NetFn/Cmd/LUN预留OEM定制扩展;
  • 兼容性:支持非智能I²C设备(如温度传感器)与智能设备共存;
  • “带外”访问(Out-of-Band):IPMB基于‌独立的I²C/SMBus物理总线‌构建,与管理控制器(如BMC)直连,完全独立于CPU、内存及操作系统的主业务通道。即使主系统崩溃或断电,IPMB仍可维持管理功能,显著降低运维成本并提升响应速度;

IPMB协议通过满足上述需求,为数据中心、工业控制、通信设备等领域提供了高效、可靠的硬件管理解决方案。

IPMB协议消息格式

IPMB的消息结构基于I²C总线协议,结合IPMI(智能平台管理接口)增加了管理相关的协议层字段,以实现设备间的命令交互和状态管理。

cfd6d32d3ef24f3a319146ebf366d645.png

IPMB协议消息格式包含多个关键字段,以下是对各字段具体含义说明:

  • rsSA: 响应者地址,7位I²C从机地址,通讯发送仅Master写,故读写位为0;
  • netFn: 网络功能号是一个六位字段,用于标识要访问的功能,是IPMB协议中用于区分不同操作类型的重要标识;
  • rsLUN/rqLUN: 逻辑单元,用于标识BMC内部的不同子地址,以便能够向这些子地址发送消息,以下表格对不同LUN进行说明,帮助大家理解其功能和用途;

84836803a0801626e7ebe2202222876a.png

注:上图引用

  • checksum1:校验和1,从rsSA(I²C地址)到NetFn的逐字节异或(XOR)校验和;
  • rqSA:请求者地址,发起请求设备的逻辑地址(如BMC的地址);
  • Seq:序列号用于标识消息的顺序性和唯一性,确保请求者能够正确的匹配请求的具体实例,避免消息混淆或丢失;
  • Cmd:命令码,用于指示具体的操作(如:Get Device ID Command);
  • Data:数据,根据消息类型和命令码的不同,包含具体的操作参数或返回的数据内容;
  • CC:完成码(completion code),位于响应字段,用于指示命令执行的状态,例如成功或错误类型,帮助请求者确认操作结果,以下表格描述了不同完成码的定义,以帮助理解命令执行过程中可能出现的各种状态和错误情况,完整内容请直接参考《Intelligent Platform Management Interface Specification Second Generation v2.0》;

9788bee8c1d4c03054379839aa38d8f8.jpg

注:上图引用

  • checksum2:校验和2,从rqSA到Data最后一个字节的逐字节异或(XOR)校验和;

IPMB通讯流程

在IPMB通讯流程中,首先由请求者(此时作为Master,执行写操作)向响应者(此时作为Slave)发送请求数据。响应者接收到请求后,对其进行处理,随后角色发生互换,响应者转变为Master(执行写操作),向原先的请求者(此时作为Slave)回复响应数据,至此完成一次完整的IPMB通讯流程。

IPMB支持多主(Multi-Master)通信,在这种模式下会出现总线仲裁情况,当多个主设备同时发送起始条件(START)时,在地址或数据位的传输过程中,发送高电平(SDA = 1)的主设备需要退出竞争,而发送低电平(SDA = 0)的主设备则继续进行通信。也就是说,双方会逐比特地比较地址和数据,首先发送“0”的一方将赢得总线的使用权,而输掉竞争的一方则切换为从设备,监听胜方发送的消息。

此外,IPMB通讯流程中设置了超时和重传机制,协议中未明确规定超时时间,OpenBMC默认超时时间为250ms。如果主设备在时效内未收到响应,会重新发送请求。在重传之前,建议主设备等待一段随机时间(例如10~100ms),这样可以有效减少重复冲突的概率。

1c163d013a1de58b41b56c081fa0728e.png

  • 简单示例

以通过IPMB获取设备ID(Get Device ID)操作为例,整个通讯过程由请求者发起请求,随后响应者回复相应的响应数据。示例数据如下:

请求:

e8e1b12b38c19a8b6c75fab07a2c431e.png

响应:

43297060bbfe47fd5985e90d998f76fd.png

通过本期内容,我们详细了解到IPMB协议凭借其完善的消息结构、通信流程、寻址机制和完成码反馈等功能,有效满足了平台管理中设备间的高效通信与管理需求,在数据中心、工业控制等领域发挥着不可或缺的作用。

欢迎大家关注OurBMC社区,了解更多BMC技术干货。

OurBMC社区官方网站:

https://www.ourbmc.cn/

                                                                                </div>



Source link

未经允许不得转载:紫竹林-程序员中文网 » 玩转OurBMC第二十期:IPMB功能简述

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
关于我们 免责申明 意见反馈 隐私政策
程序员中文网:公益在线网站,帮助学习者快速成长!
关注微信 技术交流
推荐文章
每天精选资源文章推送
推荐文章
随时随地碎片化学习
推荐文章
发现有趣的