栏目介绍:”OurBMC大咖说” 是由 OurBMC 社区精心策划的线上讲座栏目,邀请 BMC 相关领域大咖共同探讨 BMC 全栈技术的发展趋势、挑战和机遇。无论你是初学者还是资深从业者,”OurBMC大咖说” 都将为你提供一个宝贵的学习和交流的平台。
欢迎各位关注 “OurBMC大咖说”,聆听大咖们的智慧之声,共同推动 BMC 全栈技术的进步和发展!
本期人物介绍:掬水,OurBMC 社区技术委员会委员,飞腾信息技术有限公司 BMC 软件方案专家,主要负责飞腾腾珑 E2000 的 BMC 固件设计和开发等方面的工作。
最早接触开源社区,是我 2018 年参与 DPDK(Data Plane Development Kit)项目开发工作。在向开源社区 DPDK 贡献代码的过程中,熟悉了开源社区的运作机制;同时,通过参与社区代码检视的互动流程,理解了编码规范背后的种种要求,对代码质量也有了新的认识。OurBMC 社区作为国内首个交流和创新 BMC 开源技术的根社区,坚持 “开源、共建” 的合作方式,致力于推动 BMC 技术的快速发展。通过 OurBMC 社区,可以与更多开发者探讨 BMC 技术的进展,分享想法和经验,并为推动 BMC 技术发展做出自己的贡献。
BMC 是嵌入在计算机主板上的专用微控制器,相当于是服务器的 “根”,一直以来广受行业内的青睐。我从 2020 年开始深入飞腾 BMC 方面的工作,虽然之前使用过 BMC 的部分功能,但对其强大的运维和监控能力了解甚少。这也导致在 BMC 的适配和开发过程中,遇到了不少问题。得益于之前参与开源项目的经历,通过提 ISSUE、发邮件等方式,向 OpenBMC 社区求助,得到了社区成员的及时回应和指导;同时,昆仑、百敖、中国长城等 BMC 伙伴企业也给予了很多帮助和支持。通过多方支持,我成功解决了在飞腾 BMC 适配开发过程中的一系列问题,并积累了在 BMC 软件开发、调试的宝贵经验。
下面谈谈我本人对 OurBMC 技术栈的理解。OurBMC 基于上游仓库 OpenBMC 开发,在技术栈上与 OpenBMC 保持一致,从上到下可以分为软件层和硬件层,这种划分方式有助于更好地理解和组织 BMC 相关的技术和功能。
1. 软件层
-
应用层软件: 其软件与硬件无关,主要负责与 BMC 接口管理协议的交互,如 IPMI、SNMP、RedFish、Web 等。这些协议使得 BMC 可以被外部系统或工具所管理和监控。此外,与 BMC 操作系统相关的服务,如 D-Bus 进程间通信、SSH 网络登录、iKVM 等也都属于应用层软件。
-
内核层: 此部分软件与 BMC 芯片直接相关,包括与 BMC 芯片强相关的驱动程序。在 BMC 内核驱动软件的设计和开发中,有不少值得注意的地方。例如,KCS、BT 的驱动,需要区分 Master 和 Slave 模式,确保 BMC 与 Host 端的带内通信能够正常工作;显示控制器的显存大小是在 BMC 侧设置,而显示控制器的驱动却需要在 Host 端运行,但位于服务器主板上温度传感器、eeprom 等 I2C 设备,挂接到 BMC 的 I2C、I3C 总线上及主板上风扇、支持 PmBus 的电源模块,这些部件的驱动却运行在 BMC 上。因此,深入理解 BMC 驱动的特点,有助于识别出 BMC 驱动与 Host 端驱动的差异点。
-
Uboot:处于 BMC 软件的最底层,这一层除了负责引导内核启动外,还配置与 BMC 卡硬件相关的软件参数。如设置显示控制器的显存大小和访问权限等。
2. 硬件层
-
包括 BMC SoC(System on a Chip)和连接到 BMC 的部件。其中,BMC SoC 内部的部分控制器需要区分 Master 和 Slave 模式,如 I2C 控制器在支持IPMB(Intelligent Platform Management Bus)通信及 MCTP(Management Component Transport Protocol)通信的场景下,只能使用 I2C Master Write 操作,因此需要支持 Master 和 Slave 模式的切换。另外,BMC 还与主板上的其他部件相连,如温度传感器、eeprom 等 I2C 设备、风扇以及支持 PmBus 的电源模块等。这些部件通过 BMC 与主机系统进行通信,并由 BMC 进行管理和监控。
随着服务器的大规模部署和使用,对 BMC 的功能需求越来越多,BMC 的技术栈也在不断深化和扩展。在 BMC 技术纵向发展方面,BMC 的 RedFish 接口协议日益受到重视。其中,基于 Json(JavaScript Object Notation)的数据类型使用 Schema 定义的数据模型,使得 RedFish 支持的 BMC 功能易于扩展,支持动态配置。RedFish 以 Json 格式存储的数据可读性强,在 BMC 中得到愈发广泛的使用。在 BMC 技术横向扩展方面,新技术也被纳入到 BMC 的功能特性规划中。如在 BMC 的带外管理上,使用的 PLDM(Platform Level Data Model)协议功能新增了对 MCTP over PCIE VDM(Vendor Defined Message)的支持,相比 MCTP over I2C 和 MCTP over LPC 在带宽上有显著的提高;并且,通过基于添加类型为 VDM type 1 的消息,到 PCIE 传输层的 TLP(Transaction Layer Packets)报文,使得 MCTP 消息的解析在路由上更快速。此外,BMC 作为服务器的管理系统,对服务器有着强大又全面的监控功能,这也引发了对 BMC 安全、可靠两方面的担忧。所以,在安全技术方面,除采用认证管理、授权控制、密钥管理等传统的防攻击手段之外,还需要探索适合 BMC 特有的安全特性,使得 BMC 安全稳定的长时间运行。我们坚信,随着 BMC 监控模块的增多,BMC 收集故障信息会更全面,为服务器运维人员提供更详细、更准确的诊断日志;BMC 的功能也会逐步向精细化、智能化的方向演进,其技术栈相应也会日益丰富。
OurBMC 社区目前虽然处于起步阶段,但已经吸引众多伙伴加入,为建设社区贡献力量。飞腾信息技术有限公司作为 OurBMC 的理事成员单位,在飞腾腾珑 E2000 BMC 的软硬件设计开发中,积累了丰富的实践经验和技术。飞腾与 OurBMC 社区的伙伴们,共同分享 BMC 相关的知识,深入探讨 MCTP over PCIE VDM 的实现方法,并不断完善 PLDM 协议下的 MCTP 功能。同时,也在 BMC 安全技术方面不断进行研究和探索,如在 BMC 固件里实现对安全启动、可信计算方面功能等。
最后,我们真诚地期待更多伙伴加入 OurBMC 社区,与社区携手并进,共同推动 BMC 技术的发展和应用,为共建社区添砖加瓦,为服务器的管理和监控提供更智能、更可靠、更强大的支持。