openUBMC 是 openUBMC 社区的 BMC(Baseboard Management Controller,基板管理控制器)软件套件,用于对服务器进行带外管理。为了适配不同厂商、不同形态的服务器,openUBMC 提供了一套完整的北向接口定制体系,允许厂商基于统一框架扩展自有管理命令和资源模型。
openUBMC 对外暴露的接口统称为北向接口(Northbound Interface),它们位于 BMC 软件栈的最上层,为运维平台、监控工具、自动化测试等消费方提供访问入口。
openUBMC接口总览
openUBMC 默认对外提供以下五类核心接口:
| 接口类别 | 协议 | 默认端口 | 主要用途 |
|---|---|---|---|
| CLI(命令行接口) | SSH | 22(映射 10022) | 基础命令集、运维诊断 |
| Web REST | HTTPS | 443(映射 10443) | Web UI、RESTful 资源访问 |
| Redfish | HTTPS | 443(映射 10443) | 标准化带外管理 API |
| IPMI | UDP 623(映射 10623) | 传统带外管理 | |
| SNMP | UDP 161(映射 10161) | 监控告警采集 |
接口基本概念与原理
CLI(命令行接口)
概念:通过 SSH 协议登录 BMC shell,执行 openUBMC 提供的基础命令集,如查询 MAC 地址、查看硬件信息等。
原理:BMC 启动后开启 sshd 服务,监听 22 端口。客户端使用 ssh Administrator@localhost -p 10022 登录后,进入 openUBMC 定制的命令行环境,调用 bmc.kepler.* 等 D-Bus 服务完成管理操作。
定制点:
- 命令集扩展:在 bmc.kepler 命名空间下新增 D-Bus 服务并注册命令。
- 资源树挂载:通过
busctl --user tree查看现有资源树,新增对象节点需遵循命名约定。
Web REST
概念:openUBMC 私有 RESTful 接口,承载 Web UI 后台业务,URL 形如 https://localhost:10443/UI/Rest/...。
原理:BMC 内部 Web 服务监听 443 端口,将 HTTP 请求路由到后端 REST 处理器,处理器再调用 D-Bus 服务获取/设置数据。REST 资源以资源树形式组织,支持 CRUD 操作。
定制点:
- 新增资源:在资源树中注册新节点(如
/bmc/kepler/Systems/1/...)。 - 路由扩展:在 REST 处理器中注册新的 URL 路由及对应处理器。
- 数据契约:定制资源的 schema 需同步更新,供 Web 前端与自动化测试使用。
Redfish
概念:DMTF Redfish 标准化带外管理 API,URL 形如 https://localhost:10443/redfish/v1/...,与 Web REST 共用 443 端口但路径独立。
原理:openUBMC 实现 Redfish 标准资源模型(如 Systems、Chassis、Managers、EventService),以 JSON 格式返回资源数据。客户端使用标准 Redfish 客户端库即可访问,便于跨厂商兼容。
定制点:
- 标准资源扩展:在标准资源类型下新增 OEM 字段,存放厂商私有数据。
- 自定义事件:在 EventService 中注册自定义事件类型。
- 标准合规性:新增 Redfish 接口需通过 Redfish 标准合规性验证(社区提供 RedfishLibrary 自动化测试用例)。
IPMI
概念:Intelligent Platform Management Interface,传统带外管理协议,通过 RMCP/RMCP+(UDP 623)进行命令交互。
原理:BMC 内部 IPMI 栈接收 IPMI 命令,分发到对应命令处理器(NetFn + Cmd),返回响应数据。常用工具为 ipmitool。
定制点:
- 新增命令:在对应 NetFn(如 OEM NetFn 0x32)下注册新的 Cmd 处理函数。
- 命令过滤:排查 IPMI 命令注册的过滤字段,确保与命令定义一致(社区要求新增 IPMI 接口时需进行此项检查)。
- 兼容性:OEM 命令需避免与标准命令码冲突。
SNMP
概念:Simple Network Management Protocol,用于监控告警采集,默认 UDP 161。
原理:BMC 内部 SNMP Agent 管理 MIB 树,响应 GET/SET 请求,主动发送 Trap 通知告警事件。
定制点:
- MIB 扩展:在私有 MIB 下新增节点。
- Trap 扩展:注册新的告警事件类型并绑定 Trap OID。
学习路径
openUBMC接口定制的学习路径主要包括:
新手入门:帮助您实现快速上手实操,对接口定制有整体的初步了解。
进阶开发:掌握深入原理,熟悉各类接口操作,快速实现接口定制开发。