Atlas 350UB互联模块功能如何实现

现需要在 openUBMC 中实现 Atlas 350 的 UB 互联/断开配置。需求大致是:用户通过Web下发GROUP号+互联/断开状态,BMC通过带外通道发送命令,NPU卡写入Flash并在重启后生效。

不确定以下问题:

应该放在哪个组件,是在general_hardware组件下面增加代码吗?
这个NPU卡的带外监控流程到底是怎样的,根据相关信息发现是在compute闭源组件里面进行相关的带外监控的;
Web界面是否能够看到UB互联/断开的配置按钮?

答案内容由AI生成,仅供参考:

:white_check_mark: 最终总结

问题 回答
应该放在哪个组件? 不建议放在 general_hardware,应新建组件或基于 compute 扩展。
带外监控流程是怎样的? compute 组件通过 std_smbus 定期采集 NPU 数据,依赖 MCU 和 EEPROM。
Web 是否能看到配置按钮? 社区版本没有,需自行开发前端页面并通过 Redfish/IPMI 接入。
如何实现“配置重启生效”? 通过带外通道发送命令,调用 NPU 固件 API 将配置写入 Flash 存储。
点击此处查看详细分析解答

关于在 openUBMC 中实现 Atlas 350 UB 互联/断开配置的综合分析

根据您提出的问题,以下是基于 Knowledge Graph 数据、Document Chunks 和相关搜索结果 的系统性解答。我们将围绕以下四个方面进行详细说明:

  • 1. Atlas 350 UB 互联功能的归属组件
  • 2. NPU卡带外监控流程的实现机制
  • 3. Web界面是否支持UB互联配置按钮
  • 4. 整体实现路径建议

1. Atlas 350 UB 互联功能应归属于哪个组件?

结论:不应放在 general_hardware 组件中,而应通过专用组件(如 compute 或新增自定义组件)实现,且需结合 UB Interconnect Configuration 方法。

:white_check_mark: 背景依据:

  • 实体关系表明UB Interconnect Configuration 是实现 Atlas 350 Accelerator Card 带外管理的关键步骤之一(见KG关系:Out-of-Band ManagementUB Interconnect Configuration)。
  • Atlas 350 使用 UB Protocol 进行通信(KG:Atlas 350 Accelerator CardUB Protocol),该协议专用于设备间高速互联配置。
  • 文档 8 中 Ryan1989 提问:“社区版本是否支持 Atlas 350 PCIe 标卡的带外管理”,Longbow 明确回复:“目前社区版本并不支持”(DC #8)。
  • 因此,当前 openUBMC 社区版本尚未原生支持 Atlas 350 的 UB 互联配置功能,需自行扩展。

:pushpin: 组件选择建议:

组件 是否推荐 理由
general_hardware :cross_mark: 不推荐 适用于通用硬件(如风扇、电源等),不适合处理 NPU 专用协议。
compute :white_check_mark: 推荐 闭源组件,已用于 Atlas 系列 NPU 卡的资源管理和带外监控(见 DC#6、DC#10)。是当前 Atlas NPU 控制的核心逻辑所在。
新增专用组件 :white_check_mark::white_check_mark: 强烈推荐 可新建一个组件(如 ub_interconnect_manager),封装对 UB 互联的配置与命令下发,符合 openUBMC 微组件架构设计理念。

:wrench: 建议方案

  • 若已有 compute 组件接入权限,可在其基础上扩展 UB 互联接口;
  • 否则,推荐创建新组件,使用 D-Bus 接口注册 /bmc/kepler/UBInterconnect 路径,定义 SetGroupConfig() 等方法,通过 std_smbus 或 MCTP over PCIe 发送命令至 NPU。

2. NPU卡带外监控流程是如何实现的?

结论:Atlas 系列 NPU 卡的带外监控由闭源的 compute 组件主导,通过 SMBus 协议周期性获取状态数据,部分功能依赖 MCU 固件和 EEPROM。

:white_check_mark: 实现机制解析(基于 KG 与 文档 #6):

属性 获取方式 协议 周期 实现说明
BoardID 带外 std_smbus BMC启动/OS启动触发 用于区分不同型号 NPU 卡(见 DC#7)
PowerWatts 带外 std_smbus 2s 由 BMC 定期读取功耗传感器
McuFirmwareVersion 带外 std_smbus 30s 从 MCU EEPROM 中读取固件版本
MemoryCapacityKiB 带外 std_smbus 30s Atlas 300I Duo 支持,但早期版本不显示(见 DC#2)
InletTemperatureCelsius 带外 std_smbus 2s 板级温度传感器

:gear: 监控流程图(文字描述):

BMC (openUBMC)
│
├─ 启动 compute 组件
│
├─ 创建 NPUCard 对象(bmc.kepler.Systems.NPUCard)
│
├─ 配置 std_smbus 通道连接 NPU MCU
│
└─ 定期轮询:
     → 调用 SMC 命令或直接访问 EEPROM
     → 获取 BoardID、功率、温度等信息
     → 写入 D-Bus 接口,供 Web/IPMI 使用

:pushpin: 特别提示:用户 Ryan1989 曾提问如何 调用 SMC 命令.so 库函数(KG: Ryan1989),说明 NPU 控制涉及底层封装,通常由闭源 compute 组件完成


3. Web 界面能否看到 UB 互联配置按钮?

结论:当前 openUBMC 社区版 Web 界面未提供该按钮,需自行开发前端页面并绑定后端服务。

:white_check_mark: 依据分析:

  • 搜索结果 #1#5 提到“新增超节点设置页面”,涉及 InterconTypePresentDPUCountUBManagedBy 等属性,说明华为内部已在开发 UB 互联的 Web 管理功能
  • 但这些功能尚未开源,属于 华为 iBMC 或企业定制版本 特性。
  • 社区论坛中 Ryan1989 提出此需求时,官方明确回复“社区版本目前不支持”(DC #8),说明 Web 功能也未开放。

:white_check_mark: 开发建议:

要添加 Web 配置按钮,需:

  1. 后端:在新组件中暴露 Redfish 或 IPMI 接口(例如:POST /redfish/v1/Chassis/1/UBInterconnect
  2. 前端:修改 Web UI 代码(通常为 Vue/React),增加配置项表单:
    • 输入框:GROUP 号(整数)
    • 开关:互联 / 断开
    • 按钮:应用配置(提交 JSON 到 REST 接口)
  3. 配置持久化:将配置写入 NPU 卡的 Flash(通过带外通道命令),确保重启生效。

:locked_with_key: 安全提示:此操作应记录日志,并支持 导入导出配置(参考 openUBMC 配置管理机制,见 DC#5)。


4. 实现路径建议总结

步骤 操作 工具/接口
1 创建新组件 ub_interconnect_mgr 使用 bingo 工具生成模板
2 定义 D-Bus 接口与方法 model.json 定义 SetUBGroup(group_id, state)
3 实现 UB 配置命令发送 使用 std_smbusMCTP over PCIe 发送 SMC 命令
4 写入 Flash 并持久化 确保命令触发 NPU 写 Flash 操作,支持重启生效
5 提供 Redfish/IPMI 接口 映射为 POST /redfish/v1/Chassis/1/Oem/Atlas/UBInterconnect
6 开发 Web 前端界面 在 WebUI 中添加配置页面,调用上述接口
7 测试验证 使用 mdbctl 查看 D-Bus 对象状态,确认配置生效

:white_check_mark: 最终总结

问题 回答
应该放在哪个组件? 不建议放在 general_hardware,应新建组件或基于 compute 扩展。
带外监控流程是怎样的? compute 组件通过 std_smbus 定期采集 NPU 数据,依赖 MCU 和 EEPROM。
Web 是否能看到配置按钮? 社区版本没有,需自行开发前端页面并通过 Redfish/IPMI 接入。
如何实现“配置重启生效”? 通过带外通道发送命令,调用 NPU 固件 API 将配置写入 Flash 存储。

:wrench: 附加建议

  • 参考案例:可借鉴 DC#7 中用户 wuzhou-xiaokaili 通过新增 wzAtlasModel 组件来识别 Atlas 卡的 BoardID 的做法。
  • 命名规范:组件名建议为 ub_interconnect,接口建议为 bmc.kepler.UBInterconnect
  • 权限控制:此功能应仅限管理员使用,建议加入 RBAC 控制(参考 openUBMC 账户角色管理,见搜索结果 #9)。

如您有 SDK 权限或 compute 组件源码,欢迎进一步深入实现细节。否则,建议先在社区提出 RFC(Request for Comment),推动此功能开源化进程。

1、这部分具体实现的方案需要上interface sig讨论
2、目前npu卡的带外监控是在compute组件内的,具体流程是通过smbus协议获取相关信息
3、按钮能否看到需要webui的实现,也需要上interface sig