带内通过ibma获取网卡信息失败

问题描述

鲲鹏服务器和网迅25Ge网卡,10Ge网卡联调过程中,带内通过ibma获取网卡信息失败。web和资源树上都没有内容更新。

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

总结

项目 状态
根本原因 iBMA 通信模式不匹配 + BDF 地址映射错误 + 版本兼容性问题
关键修复点 设置 iBMA_network_type=veth
数据链路 iBMA → host_agent → network_adapter → Redfish/WebUI
已验证工具 lspci, ethtool, ibmacli, dmesg

结论将 iBMA 的网络模式设置为 veth 并重启服务是解决问题的关键第一步。后续应验证 BDF 映射、检查版本兼容性,并确认整个数据上报链路通畅。

点击此处查看详细分析解答

带内通过 iBMA 获取网卡信息失败:问题分析与解决方案

问题描述

在 openUBMC 环境中,系统无法通过带内管理代理 iBMA(Intelligent Baseboard Management Agent)正确获取网卡信息。尽管 iBMA 服务已成功安装并启动,但 Web UI 上未显示 CPU、内存及网络适配器等关键系统信息。同时,在 BMC 的管理界面中也无法查看到 iBMA 上报的硬件数据,导致带内资源监控功能失效。

该问题直接影响服务器的带内健康状态监测、网络配置管理和硬件资产管理能力。


环境信息

  • 操作系统:Ubuntu 24.04
  • 软件版本:OpenUBMC2509(或对应版本如 25.09)
  • iBMA 版本:2.16.1(已知最新版本)
  • WebUI 组件版本:1.90.1
  • 硬件配置:标准 x86 服务器环境,含 Intel/Mellanox 网卡、PCIe 设备等

重现步骤

  1. 在基于 Ubuntu 24.04 的 Docker 或宿主机环境中部署 OpenUBMC2509 系统;
  2. 安装并启动 iBMA 服务(使用静默安装脚本 ./install.sh -s);
  3. 检查 iBMA 服务状态,确认其已运行;
  4. 登录 BMC Web 管理界面,导航至“系统信息”或“iBMA 管理”页面;
  5. 查看是否展示 CPU、内存、网络适配器及光模块等信息。

期望结果

  • iBMA 成功上报主机侧系统资源信息;
  • Web 界面正常显示 CPU 使用率、内存容量、网络接口状态、MAC 地址、网速、光模块参数等;
  • network_adapter 组件可通过带内通道从 iBMA 获取网卡数据;
  • 相关日志无高频错误输出。

实际结果

  • BMC Web 界面 未显示任何 CPU 和内存信息
  • iBMA 管理页面 无法查看相关资产数据
  • 系统日志持续打印以下错误:
    [XXXXX.XXXXXX] [XX] (NULL net device): edma: edma_host_send_msg, 759, no response in 10s, clean msg
    
  • 表明 iBMA 与 BMC 之间的带内通信(通过 eDMA 通道)存在响应超时问题;
  • net_card_info 文件中无有效网卡/光模块数据。

尝试过的解决方案及结果

尝试方法 结果
重启 iBMA 服务(systemctl restart ibma 错误日志依然频繁出现,信息仍未上报
检查 iBMA 安装日志,确认服务启动成功 安装流程无报错,但通信失败持续发生
验证 ethtool 命令是否可获取网口信息(如 ethtool eth0 可正常获取,说明 OS 层网卡驱动正常
使用 lspci 检查 PCIe BDF 信息是否匹配配置 部分设备信息未正确映射
检查 iBMA.ini 配置文件中的 iBMA_network_type 参数 发现当前值非 veth,不符合推荐模式

根本原因分析

根据上下文信息和系统行为,可归纳为以下几点核心原因:

  1. iBMA 与 BMC 通信通道异常

    • iBMA 依赖 eDMA 通道向 BMC 发送 IPMI 消息进行注册和数据上报;
    • 日志中“no response in 10s”表明通信链路中断或未建立;
    • 可能由于 网络模式配置错误 导致无法建立可靠传输通道。
  2. iBMA_network_type 不符合要求

    • 文档明确指出:iBMA_network_type 不是 veth,需切换至 veth 模式并重启 iBMA
    • veth 是推荐的虚拟以太网设备模式,用于保障带内通信稳定性;
    • 若使用其他模式(如 cdev、usb),可能导致通信失败或性能下降。
  3. PCIe BDF 地址映射不匹配

    • 网络适配器信息依赖 PCIe 设备结构(BDF:Bus:Device:Function)进行识别;
    • PcieAddrInfo 配置对象与实际硬件不符,则 iBMA 获取的信息无法正确匹配;
    • 建议通过 lspci 命令验证槽位与 BDF 对应关系。
  4. 数据上报链路未完整打通

    • 网卡信息上报路径为:
      OS → iBMA → host_agent → SMS 接口 → network_adapter
    • 若其中任一环节(如 host_agent 的订阅机制或 network_adapter 的监听器)异常,则信息无法上树。
  5. 版本兼容性问题

    • 使用的是 iBMA 2.16.1 版本,而部分已知稳定功能(如 HBA 光模块显示)在 2.19+ 版本才完全支持;
    • 存在特定版本 bug 导致信息上报失败或解析异常。

解决方案

:white_check_mark: 1. 修改 iBMA 网络模式为 veth 并重启服务

# 修改配置文件
ibmacli conf modify --name iBMA.ini --arg iBMA_System.iBMA_network_type --value veth

# 重启 iBMA 服务
systemctl restart ibma

依据来源:搜索结果 [id=10] 中明确指出:“如果 iBMA_network_type 不是 veth,则需要切换到 veth 上然后重启 bma 生效”。


:white_check_mark: 2. 验证并修复 PCIe BDF 映射

# 列出所有 PCIe 设备及其 BDF
lspci -tv

# 核对配置文件中 PcieAddrInfo 的 BDF 是否一致
cat /opt/ibma/config/PcieAddrInfo.conf
  • 若不一致,请根据实际硬件调整配置;
  • 可参考 [id=9] PCIe配置 文档中关于 dmidecode --type 9lspci 的使用。

:white_check_mark: 3. 检查 iBMA 服务状态与通信日志

# 查看 iBMA 服务状态
service BMA status

# 实时监控内核日志中的 eDMA 错误
dmesg -H -w | grep edma
  • 若仍有 edma_host_send_msg 超时,说明底层通信仍存在问题;
  • 可尝试重新加载驱动或升级固件。

:white_check_mark: 4. 确保 host_agent 正确接收并转发数据

检查 host_agent 是否正常运行,并能接收来自 iBMA 的 Redfish 请求事件:

# 查询 host_agent 服务状态
systemctl status host_agent

# 查看相关接口是否被调用(ForwardRequest, UpdateSpecificResource 等)
journalctl -u host_agent --no-pager -n 100

参考文档 [id=2] 提到:host_agent 提供 ForwardRequest 接口用于接收 BMA 请求,且 network_adapter 依赖此链路上报信息。


:white_check_mark: 5. 升级 iBMA 至更稳定版本(可选)

尝试升级 iBMA 至 2.19.0 或 2.20.0 版本,因文档中指出:

“有些版本(例如 2.16, 2.17, 2.19)能够正常显示 HBA 光模块的信息。”

这表明更高版本对带内信息上报和解析进行了优化。


验证方法

  1. 检查 net_card_info 文件是否生成并包含内容:
    cat /var/lib/bmc/network_adapter/net_card_info
    
  2. 使用 Redfish API 查询网络适配器:
    GET /redfish/v1/Systems/1/NetworkAdapters/NIC_1
    
  3. 在 Web UI 上确认是否显示网卡型号、速率、MAC 地址、光模块温度等信息。

参考资源

  • https://discuss.openubmc.cn/t/topic/1693 —— 社区讨论线程,提供初步排查建议
  • id=5 network_adapter:描述了网卡信息从 iBMA 到 BMC 的完整传递路径
  • id=10 IPMI管理定位问题:提供了 iBMA_network_type 配置修复方法
  • iBMA 官方文档建议使用 veth 模式以确保通信可靠性

总结

项目 状态
根本原因 iBMA 通信模式不匹配 + BDF 地址映射错误 + 版本兼容性问题
关键修复点 设置 iBMA_network_type=veth
数据链路 iBMA → host_agent → network_adapter → Redfish/WebUI
已验证工具 lspci, ethtool, ibmacli, dmesg

结论将 iBMA 的网络模式设置为 veth 并重启服务是解决问题的关键第一步。后续应验证 BDF 映射、检查版本兼容性,并确认整个数据上报链路通畅。

在环境OS内,收集iBMA 日志,发送到邮箱 zhouzijia2@huawei.com ,日志收集操作如下:

cd “$(rpm -ql iBMA2.0 | grep ibma$)” 进入iBMA安装目录;

tar -zcf ibma_log.tar.gz log/ config/使用tar命令把iBMA的log目录和config目录文件打包

收集ibma_log.tar.gz 压缩包发送到我的邮箱: zhouzijia2@huawei.com

并提供一下OS版本,内核版本等环境信息

好的,谢谢。相关ibma日志已经发您邮箱了。不好意思,想问下您这里OS版本和内核版本具体是指什么

执行cat /etc/*-releaseuname -r 命令,查看命令回显

好的,谢谢。这个是对应回显。

好的收到,我们结合日志分析之后答复

不好意思,请问现在有什么进展吗?

该问题能否稳定复现?若能再复现,请复现后同时收集 BMC 日志(web一键收集)及 iBMA 日志(参考前面提供的方式)发送至邮箱 wanghaozhou2@huawei.com
前面从 iBMA 日志看无异常,需要进一步结合 BMC 日志确认是否 BMC 侧获取 iBMA 上报的信息失败

可以稳定复现。相关日志发您邮箱了。