栏目介绍:"OurBMC大咖说" 是由 OurBMC 社区精心策划的线上讲座栏目,邀请 BMC 相关领域大咖共同探讨 BMC 全栈技术的发展趋势、挑战和机遇。无论你是初学者还是资深从业者,"OurBMC大咖说" 都将为你提供一个宝贵的学习和交流的平台。
欢迎各位关注 "OurBMC大咖说",聆听大咖们的智慧之声,共同推动 BMC 全栈技术的进步和发展!
本期人物介绍:汪涛,南京百敖软件有限公司技术总监,百敖BMC团队负责人。毕业于德国不来梅大学电气工程专业,从事固件开发14年,历年来多次承担国家科技支撑计划、科技型中小企业、江苏省科技成果转化、无锡市科技支撑项目等,发表论文3篇,申请专利5项,参与多项BMC固件行业和团体标准制定。
前几期的专家老师们都提到了OurBMC社区标准化的问题,我对此深有感触,也十分赞同几位专家老师们的看法,百敖作为国内主要的 IBV 厂家之一,基于 OpenBMC 代码为国内多家厂商提供了基于 E2000 BMC 和基于其它 BMC 的技术服务,对 BMC 软件的开发和适配有着深厚的经验,借此机会初步探讨下当前 BMC 开发过程中遇到的一些非标准化的问题。
BMC 相关软件需求非标准化问题
BMC 的 SEL 事件日志功能是服务器管理中的一个关键组件,可以记录服务器运行过程中硬件或软件发生的各种事件或状态变化。这些事件的描述在 IPMI 规范中都有定义,主要包括,CPU、内存、硬盘、PCIE、电源、风扇等模块的硬件故障信息,相关组件的温度过高、电压异常等系统告警信息,系统开机/关机/重启等状态变化事件。
随着服务器行业的发展,对事件日志的精细化和可扩展性有了更高的要求,如果出现了系统硬件故障后,运维人员想要知道具体发生了什么样的故障,如果故障类型不能准确记录,会给系统运维人员造成很大的困扰,相反如果故障信息能精确的话,则运维人员可以针对不同的故障信息做不同的故障处理,可以大大的提高运维效率和节省运维成本。例如,有些厂商想让 BMC 能记录 CPU 或者 PCIE 设备的 MCE/AER 事件,但当前 IPMI SEL 事件中所支持的 CPU 或 PCIE 事件列表中都没有此类事件,BMC 如不能准确记录此类事件的话,则运维人员就不能做有针对的处理。
为了解决 BMC SEL 事件日志不够准确和事件类型不够丰富的问题,很多厂商都自定义了一套区别于传统 IPMI SEL 事件日志的日志规范。但由于各家的规范并不统一,要适配不同的服务器产品就意味着 BMC 需要不同的日志功能解决方案,而事件日志又是 BMC 的标配功能,这一基础功能的开发却需要实现多套不同方案,额外增加了 BMC 软件适配的工作量。如果能新制定一套统一的事件日志规范,同时能兼顾多方需求,则在能降低 BMC 的开发适配工作的同时也能大大提升服务器的运维管理能力。
BIOS 与 BMC 交互接口非标准化问题
BIOS 在启动过程中与 BMC 会有一些信息交互,这些交互基本上是通过 IPMI 命令来实现的。主要包括,BIOS 在启动过程中会获取 BMC 的版本信息、自检状态,BMC 的网络配置信息、BMC 的用户信息以及系统启动项等信息,同时在 BIOS setup 界面也可以修改 BMC 的网络配置以及用户配置,最终通过 IPMI 命令发送给 BMC,这些命令都有标准的 IPMI 规范。但是,随着服务器上的需求越来越多,BIOS 需要传送更多的信息给 BMC,例如 BIOS 的版本信息、CPU/内存/硬盘/PCIE 的设备信息或启动过程中检测到的一些设备故障信息,以及 BIOS 的 setup 配置信息等,这些信息标准的 IPMI 命令并没有实现,各家厂商实现这些需求时,要么是 BIOS 与 BMC 之间协商一套 OEM 命令,要么是用其它方式实现,总之,这些无法用标准 IPMI 命令支持的需求,各家 BIOS 和 BMC 厂商都没有一套统一的通信规范,从而造成不同厂商的 BMC 适配另一家的 BIOS 时,无法做到代码兼容,需要重新去适配 BIOS 与 BMC 之间的交互接口,增加了适配的工作量。如果能有一套统一的 BIOS 与 BMC 通信标准规范,则能大大的提高 BMC 的通用性,减少新的服务器项目中的适配工作。
其他固件升级的非标准化问题
服务器主板或各种背板上常用的 CPLD 主要由 Lattice、安路、紫光等厂商提供,服务器厂商对 CPLD 都有通过 BMC 进行在线升级的需求,然而各 CPLD 厂商通过 BMC 进行在线升级的文件格式基本各不相同,有 Lattice 的 jed 格式文件、安路的 aje 格式文件,也有 svf 格式或者 vme 格式的升级文件。不同格式的升级文件意味着 BMC 需要去适配开发不同的 CPLD 固件升级应用程序和设备驱动程序,如果某款服务器上有多个主板及背板 CPLD,且不同板卡上的 CPLD 还有几个备选厂家的话,则 BMC 在适配 CPLD 升级代码上就有较大工作量并且无法做到代码归一,这样就会加大开发此种场景下 CPLD 在线升级程序的复杂度。实际上,CPLD 的在线升级功能基本都是使用的 JTAG 接口,也有少量选择 I2C 接口,在统一使用 JTAG 接口的情况下,各 CPLD 厂商如果能提供统一的升级格式文件给到 BMC,如 svf 或者 vme 格式的在线升级文件,则 BMC 就可以用一套代码支持不同厂家的 CPLD 在线升级方案,无论服务器上有多少个 CPLD 需要升级或有多少家厂商需要支持。
同样的情况在 PSU 固件升级上也存在,服务器厂商对 PSU 也都有通过 BMC 进行在线升级的需求,而 PMBUS 规范中并没有定义固件升级相关的命令字,只是预留了一些厂商自定义命令字,因此各厂商在 PMBUS 规范中的自定义命令字里实现了各自的一些功能,包括在线升级功能,由于没有统一的规范,就会导致各家 PSU 厂商的升级功能实现各不相同,也给 BMC 的 PSU 在线升级功能的实现增加复杂度,在每适配一款新的服务器时就有可能需要重新适配修改 PSU 的在线升级代码。如果各 PSU 厂商把在线升级功能或设置 PSU 主备模式等功能相关的命令字都能做成一个标准规范的话,对 BMC 的硬件适配工作将会有极大的帮助。
BMC 接口标准化展望
在 BMC 的开发适配工作中,类似上述的非标准化接口非常之多,上述也只做了小部分举例说明,这些不仅体现在 BMC 自身的一些软件需求上,与其它领域都有涉及,例如 BIOS、CPLD、PSU、VR、PCIE网卡、NVMe硬盘、RAID卡、GPU卡、DPU卡等。百敖深耕国产化服务器已有多年,积累了深厚的服务器 BMC 开发经验,同时百敖的 BMC 和 BIOS 早已有一套通信标准,为了国产化服务器的发展繁荣,我们愿意跟行业内的相关厂商和合作伙伴分享经验并一起制定相关的 BMC 开发标准,让 BMC 的开发不再有高的门槛,使 BMC 的适配工作变得简单,大家能专注于新功能以及更有价值的功能开发,共同推动国产化服务器的新发展。
我们很荣幸能加 OurBMC社区,也很高兴看到越来越多的伙伴们加入OurBMC社区。国产 BMC 的发展,不仅依靠像飞腾这样的国产芯片厂商和 BMC 固件厂商,也依赖跟 BMC 有交互的各模块对应的厂商一起助力,也希望越来越多的厂商加入到OurBMC社区,壮大OurBMC社区,一起为国产 BMC 的发展谱写新的篇章。