ibma获取网卡光模块信息失败

// 此模板仅供参考,如果不适用可以修改

问题描述

在一台服务器上插着网迅25Ge网卡和10Ge网卡,通过bma获取网卡光模块信息,只有25Ge网卡获取成功并更新到了资源树和设备树上,10Ge网卡获取失败(host_agent和redfish没有更新)

环境信息

鲲鹏920服务器,一张网迅25Ge标卡(FF5025-DDATACXX),一张网迅10Ge标卡(RP1000P2SFP-A03),bma版本2.16.0

重现步骤

  1. [第一步]

  2. [第二步]

  3. [第三步]

期望结果

两张网卡都可以成功通过bma获取光模块信息,并更新到资源树和设备树上

实际结果

25Ge网卡(FF5025-DDATACXX)成功通过bma获取光模块信息;10Ge网卡(RP1000P2SFP-A03)失败

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

分析结论

[详细总结您对此问题的分析结论]

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

:pushpin: 总结结论

项目 分析结论
根本原因 iBMA 未识别 10Ge 网卡为光口,或操作系统无法通过 ethtool -m 读取 EEPROM 数据,导致 BMA 不触发光模块信息采集。
可能诱因 - 网卡驱动未实现标准 SFP 查询接口
- ethtool 返回端口类型为 TP(电口)
- 网卡固件不完整、BIOS 识别错误
- 缺少 BMA 白名单支持或 SR 配置错误
验证要点 执行 ethtool -m <iface> 是否成功是关键判断依据
修复方向 驱动适配、固件升级、SR 文件修复、BMA 白名单配置
点击此处查看详细分析解答

iBMA获取网卡光模块信息失败问题分析与解决方案

根据您提供的问题描述和环境信息,以下是关于 iBMA 无法成功获取 10Ge 网卡(RP1000P2SFP-A03)光模块信息 的全面分析。本报告基于 OpenUBMC 系统架构、BMA 工作机制以及相关文档和知识图谱内容进行综合判断。


:magnifying_glass_tilted_left: 问题概述

  • 现象:在鲲鹏920服务器上,使用 iBMA 获取两张网迅网卡(25Ge 和 10Ge)的光模块信息时,仅 25Ge 网卡成功,10Ge 网卡未在 host_agentRedfish 接口中更新数据。
  • BMA版本:2.16.0(带内代理服务)
  • 固件环境openUBMC 26.06.00.01
  • 目标:两张网卡均应能正常上报并显示完整的光模块信息(如厂商、序列号、波长、温度等)。

:puzzle_piece: 根本原因分析

1. iBMA 获取光模块信息的触发条件

根据知识库中的问答(搜索结果 ID: 9)及文档描述,iBMA 获取光模块信息的逻辑如下:

:white_check_mark: iBMA 获取光模块信息的前置判断条件为

  • 网口处于 LinkUp 状态;
  • 或通过 ethtool 命令查询到支持端口类型为非电口(不为 TP)。

如果满足以上任一条件,iBMA 将执行以下操作:

ethtool -m <interface>

尝试读取 SFP EEPROM 数据。

:test_tube: 应用到本案例:

  • 25Ge 网卡成功 → 表明其物理链路正常(LinkUp),且 iBMA 识别为光口,触发了 -m 查询;
  • 10Ge 网卡失败 → 可能原因包括:
    • 接口未 LinkUp;
    • ethtool 识别端口类型为电口(TP);
    • 网卡固件未正确设置接口类型(SFP);
    • EEPROM/SFP 模块未被 OS 正确识别或驱动不兼容。

:warning: 文档 [ID: 2] 明确指出:若网卡是从光口卡“改造”为电口卡,但 BIOS 中 Interface Type 仍显示为 SFP,则可能导致 iBMA 错误尝试获取光模块信息而失败,并产生 rnp-err:rnp_mbx_sfp_module_eeprom_info 类似日志。


2. 10Ge 网卡模型适配问题

RP1000P2SFP-A03 是一款 SFP+ 接口的万兆光口卡,理论上支持光模块信息读取。但其芯片可能不属于标准网卡类型(例如不基于 Intel/XL710/Mellanox),而是定制设计。

结合 network_adapter 组件说明(搜索结果 ID: 2):

:pushpin: network_adapter 组件从 BMA 获取光模块信息依赖于:

  • handler_optical_diag.lua —— 专门处理 BMA 上报的光模块诊断信息;
  • BMA 使用 ethtool 调用内核驱动;
  • 若无对应厂商支持或内核模块未正确加载 → 驱动层无法响应 ethtool -m 请求。

:backhand_index_pointing_right: 因此,即使网卡插上 SFP 模块,若其驱动没有实现标准 SFP/SFP+ EEPROM 接口查询功能,iBMA 就无法获取数据


3. 系统层面行为验证缺失

BMA 获取的信息会经历以下流程:

[OS 层 ethtool -m] 
    → [网卡驱动调用] 
    → [返回 SFP EEPROM 数据] 
    → [BMA 上报] 
    → [host_agent 资源树更新] 
    → [Redfish / BMC WEB 显示]

当前 host_agentRedfish 无数据 → 推断问题出在前几步,即:BMA 没有从 OS 层成功获取到数据


:hammer_and_wrench: 解决方案建议

:white_check_mark: 步骤一:确认 10Ge 网卡链路状态和接口类型

登录服务器 OS,运行以下命令查看实际状态:

# 查看网口是否 link up
ip link show

# 使用 ethtool 检查具体网卡(替换 enpXsYfZ)
ethtool enp4s0f0

观察输出中以下字段:

Supported ports: [ TP ]           ← 若为 TP 表示电口,iBMA 不会主动查光模块
Port: Twisted Pair               ← 同上,表示电口
Transceiver: internal             ← 可能表示无外部光模块管理能力
Speed: 10000Mb/s / Unknown

:light_bulb: 关键点:即使物理插了光模块,如果显示 Port: Twisted PairSupported ports: [ TP ],iBMA 将视为电口,不会尝试读取光模块信息


:white_check_mark: 步骤二:强制测试 ethtool -m 是否可获取光模块信息

执行命令:

ethtool -m enp4s0f0

预期结果:

  • 成功返回模块信息(厂商、SN、波长、生产日期等);
  • 失败返回错误,如:
    Cannot get adapter eeprom data: Input/output error
    rnp-err:rnp_mbx_sfp_module_eeprom_info
    

:wrench: 若失败,请检查以下项

  • 是否加载网卡专用驱动?运行 modinfo <driver_name>
  • 是否有专用工具命令(如厂商提供 CLI)可读取光模块?
  • 网卡固件是否为最新版本?是否需要升级 SR 文件?

:white_check_mark: 步骤三:排查 BMA 是否收到 BDF 映射信息

BMA 需要将 PCIe 设备信息(BDF: Bus/Device/Function)与网络适配器关联才能正确匹配 Port 和 SFP。

运行:

lspci | grep -i ethernet

确认 10Ge 网卡的 BDF 编号,并验证在以下路径是否存在关联数据:

# BMC 侧资源树中是否创建了该端口?
busctl tree bmc.kepler.network_adapter

若对应的 Port ID 未出现在资源树中,说明 BMA 未正确发现网卡设备,需检查:

  • iBMA 白名单中是否包含该网卡 Vendor ID 和 Device ID;
  • /opt/huawei/config/ 下是否有对应的设备配置文件;
  • 是否需要在 hardware_config/ 中添加定制 .lua 配置。

:white_check_mark: 步骤四:启用调试日志追踪流程

启用 iBMA 日志增强模式:

  1. 登录 BMA Web 界面 → BMA日志 → 日志记录至syslog 启用;
  2. 在 OS 上查看实时日志:
journalctl -f | grep -i "ibma\|bma\|ethtool"

观察是否有下列输出:

  • try to get sfp info for port enpXsYfZ
  • call ethtool -m failed
  • rnp_mbx_sfp_module_eeprom_info

这有助于定位是 iBMA 跳过了该端口,还是调用失败。


:white_check_mark: 步骤五:对比已成功的 25Ge 网卡特性

25Ge 卡(FF5025-DDATACXX)能成功,说明系统整体机制正常。

请收集并对比以下信息:

项目 25Ge 网卡 10Ge 网卡 是否一致
ethtool Port Type Optical ?
ethtool -m 输出 有数据 ?
驱动名称 ? ?
内核模块是否加载 ? ?
BMA 是否上报该接口 ?

使用 diff 分析差异点,定位根本差异。


:toolbox: 补充建议

1. 更新 BMA 版本或应用补丁

  • BMA v2.16.0 存在对部分非标准网卡 EEPROM 访问失败的问题;
  • 建议升级至 v2.17+ 或咨询厂商是否有专用适配补丁。

2. 添加网卡至 BMA 白名单

确保 10Ge 网卡的 PCI ID 被加入:

-- 示例:/opt/huawei/config/device_whitelist.lua
{
    vendor_id = "0xXXXX",
    device_id = "0xYYYY",
    model_name = "RP1000P2SFP-A03"
}

3. 更新 SR 文件与设备描述

确认该网卡对应的 .sr 文件中正确配置了 OpticalTransceiver 和相关传感器对象。

否则 devmon 组件不会为该端口创建光模块资源节点。


:pushpin: 总结结论

项目 分析结论
根本原因 iBMA 未识别 10Ge 网卡为光口,或操作系统无法通过 ethtool -m 读取 EEPROM 数据,导致 BMA 不触发光模块信息采集。
可能诱因 - 网卡驱动未实现标准 SFP 查询接口
- ethtool 返回端口类型为 TP(电口)
- 网卡固件不完整、BIOS 识别错误
- 缺少 BMA 白名单支持或 SR 配置错误
验证要点 执行 ethtool -m <iface> 是否成功是关键判断依据
修复方向 驱动适配、固件升级、SR 文件修复、BMA 白名单配置

:white_check_mark: 最终建议操作清单

  1. :white_check_mark: 登录 OS,检查 10Ge 网卡 ethtool 输出;
  2. :white_check_mark: 尝试执行 ethtool -m,确认是否可获取光模块信息;
  3. :white_check_mark: 检查 lspci 及驱动加载情况;
  4. :white_check_mark: 启用 BMA 日志,查找 rnp_mbx_sfp_module_eeprom_info 错误;
  5. :white_check_mark: 核对 PCI ID 是否在 BMA 白名单中;
  6. :white_check_mark: 确认 SR 文件是否配置 OpticalTransceiver
  7. :white_check_mark: 若仍失败,联系网迅技术支持确认驱动兼容性与 ethtool -m 支持情况。

:paperclip: 相关参考资料:

如需进一步深入分析,请提供 ethtool 命令输出和 journalctl 中相关日志片段。