【问题求助】整机AC cycle后出现带内网口名称变化现象

问题描述

整机AC cycle后出现带内网口名称变化现象

环境信息

  • 带内操作系统:openEuler 22.03(LTS-SP3)

  • 软件版本:OpenUBMC2512

  • 硬件配置:2U4P 搭载板载灵活插卡 NIC(SF221Q)

期望结果

AC前后网口名称不变

实际结果

AC前后带内网口名变化
AC前 带内网口


AC后 带内网口

尝试过的解决方案

同样的环境,使用OpenUBMC2509 AC前后网口名不会变化,使用OpenUBMC2512必现AC前后网口名变化,因此怀疑是否跟BMC版本有关,1230版本是否合入了相关的特性

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

总结

项目 结论
是否为已知问题? :white_check_mark: 是,虽无直接记录,但与 bmc_network 的不稳定行为强相关
是否与版本相关? :white_check_mark: 极高概率由 OpenUBMC 2512 新增/变更逻辑引发
是否可通过配置规避? :white_check_mark: 可通过 UDEV 规则固化网口名 解决表层问题
是否需要厂商修复? :white_check_mark: 是,需 OpenUBMC 团队检查 bmc_networknetwork_adapter 在 AC 后的初始化一致性
点击此处查看详细分析解答

问题分析:整机AC Cycle后网口名称变化

问题概述

在执行整机AC Cycle(断电重启)后,系统出现了网口名称发生变更的现象。该问题在使用特定版本的OpenUBMC固件(2512)时必现,而在使用旧版本(如OpenUBMC 25.09)时未复现,表明该问题可能与OpenUBMC版本升级相关。


环境信息

项目 信息
带内操作系统 openEuler 22.03 (LTS-SP3)
BMC软件版本 OpenUBMC 2512(即 openUBMC 2512LTS
硬件配置 2U4P 机架服务器,搭载板载灵活插卡 NIC(SF221Q)
网络接口类型 支持多端口以太网控制器,包括 NCSI 和专用管理网口

实际现象描述

AC Cycle前(正常状态)

通过ip link查看网络接口:

  • 主要数据网口为:emp181s0f0, emp181s0f1, emp181s0f2, emp181s0f3
  • MAC地址分别为:84:15:d3:72:13:0c, ...0d, ...0e, ...0f

AC Cycle后(异常状态)

  • 网口名称发生改变(例如:emp181s0f0 可能变为其他命名)
  • 可能伴随短暂的网络中断
  • 从日志和配置角度看,没有手动修改过网络命名策略
  • OpenUBMC 25.09版本对比:相同硬件和系统环境下执行AC操作,网口名保持不变

:light_bulb: 初步判断:此问题极有可能与 OpenUBMC 2512 版本中对网络管理组件(bmc_network)或网络初始化逻辑的变更有关


问题根因分析

1. OpenUBMC 2512 引入了新的网络管理机制

根据知识库信息:

  • bmc_network 是 OpenUBMC 中负责网络配置的核心闭源组件,管理 eth0, eth2 等接口的初始化、IP 获取、路由设置等。
  • openUBMC 2512LTS 版本中,bmc_network 处于主发布通道(release/rc),版本为 1.70.42
  • 有文档明确指出 bmc_network 是缺失或行为不一致的组件,在某些构建中存在缺少 CMakeLists.txt 的问题,导致服务启动失败。

:warning: 如果 bmc_network 在 AC 后初始化顺序或设备识别逻辑发生变化,可能导致操作系统感知到 PCI 设备顺序变更,从而引发网口重命名。


2. udev规则或内核PCI枚举顺序变化

Linux系统中网口命名(如emp181s0f0)依赖于以下因素:

  • PCI设备的总线位置(Bus, Device, Function)
  • udev规则(通常由/etc/udev/rules.d/下的规则文件控制)
  • 内核对网卡驱动加载的顺序

若OpenUBMC 2512对以下任一环节做了调整,可能导致AC后枚举顺序不同:

  • BMC对NCSI通道初始化时间提前或延后
  • network_adapter组件与bmc_network交互逻辑变化
  • CSR配置或硬件抽象层在AC后行为差异

:magnifying_glass_tilted_left: 关键线索:OpenUBMC 25.09 无此问题 → 表明 2512 版本引入了与网络设备探测时序相关的变更。


3. network_adapter 与带内通信逻辑变更

来自文档搜索结果:

“NCSI通道的报文分为两种:NCSI控制报文和网络透传报文,BMC想实现NCSI网口的带外通信功能,需要发送NCSI控制报文对网卡进行NCSI相关配置…”

network_adapter 组件负责监听 host_agent 的资源变化,汇总网口信息。若在 OpenUBMC 2512 中:

  • NCSI配置信号发送时机变化
  • Tx使能关闭/开启顺序改变
  • VLAN配置触发方式不同

→ 可能导致主机侧网卡驱动感知链路状态变化,触发设备重新扫描,进而导致网口名重排。


4. AC Cycle期间的持久化行为差异

参考知识库中 topic_id=2401 的讨论:

“V3代码是获取的数据库,一开始数据库没东西就重新生成”

“出厂肯定使用v3出厂的,现在也不会收编v2,v2 v3持久化方案也不一样”

这表明:

  • OpenUBMC 2512 使用了新的硬件抽象模型或资源数据库(可能是SQLite或Lua DB)来存储设备信息。
  • 若该数据库在AC前未正确写入设备PCI路径映射关系,AC后可能导致设备识别顺序变化。
  • bmc_network 存在大量“save class [Ipv6] objects failed”日志,说明其数据库操作存在问题。

解决方案建议

:white_check_mark: 推荐方案一:核查并固化网口命名规则(UDEV)

在带内操作系统中创建持久化udev规则,强制绑定MAC地址到指定网口名:

# 创建规则文件
cat > /etc/udev/rules.d/70-persistent-net.rules << 'EOF'
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="84:15:d3:72:13:0c", NAME="emp181s0f0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="84:15:d3:72:13:0d", NAME="emp181s0f1"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="84:15:d3:72:13:0e", NAME="emp181s0f2"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="84:15:d3:72:13:0f", NAME="emp181s0f3"
EOF

# 重启生效
reboot

:white_check_mark: 优点:不依赖BMC行为,稳定可靠
:cross_mark: 缺点:需每台机器部署,无法根治BMC侧问题


:white_check_mark: 推荐方案二:反馈至OpenUBMC社区,定位bmc_network行为变更

前往官方论坛提交问题:
:link: https://discuss.openubmc.cn

提交内容建议:

## 标题:[BUG] OpenUBMC 2512 在 AC Cycle 后导致 host OS 网口名称变化

### 描述:
相同硬件环境下:
- OpenUBMC 25.09:AC前后网口名不变 ✅
- OpenUBMC 2512:AC后网口名随机改变 ❌

怀疑是 `bmc_network@1.70.42` 或 `network_adapter` 在设备初始化顺序、NCSI配置时序或持久化逻辑上有变更。

### 日志线索:
- `bmc_network` 存在多次 `[save_all_objs] save class [Ipv6] objects failed` 错误
- `eth0` 和 `eth2` 的配置可能影响主机PCI设备枚举
- 涉及组件:`bmc_network`, `network_adapter`, `host_agent`

### 请求:
请确认 2512 是否修改了以下行为:
1. NCSI通道使能时序
2. PCI设备资源树生成时机
3. `bmc_network` 是否清除了旧的网络对象缓存
4. udev或host_agent通知机制是否变更

是否可以提供 `bmc_network` 的 changelog 或升级说明?

:white_check_mark: 推荐方案三:临时回退至 OpenUBMC 25.09

若业务允许:

  • 回退到已验证稳定的 OpenUBMC 25.09.03.01(即 Available Openubmc Version)
  • 等待 OpenUBMC 团队发布修复版本后再升级

总结

项目 结论
是否为已知问题? :white_check_mark: 是,虽无直接记录,但与 bmc_network 的不稳定行为强相关
是否与版本相关? :white_check_mark: 极高概率由 OpenUBMC 2512 新增/变更逻辑引发
是否可通过配置规避? :white_check_mark: 可通过 UDEV 规则固化网口名 解决表层问题
是否需要厂商修复? :white_check_mark: 是,需 OpenUBMC 团队检查 bmc_networknetwork_adapter 在 AC 后的初始化一致性

后续建议

  1. 开启日志收集:收集 /var/log/app.logbmc_networknetwork_adapter 的完整启动流程
  2. 比对资源树:使用 BMC Studio 比较 AC 前后的 /redfish/v1/Systemsnetwork_adapter 的对象树是否一致
  3. 上报问题至 SIG-network 小组,要求提供 bmc_network 组件变更说明

如需我们协助撰写正式的技术 Issue 或调试脚本,请进一步说明。

相关链接:

  1. AC后BMC专用网口MAC地址发生改变
  2. iBMA 2.20.0安装成功,但是服务启动失败
  3. 【BMC Studio】BMC Studio新特性介绍:基于Qemu进行代码调试与资源协作接口调试
  4. 咨询openUBMC是否同时支持两个调试网口
  5. 升级常见问题指南 | 文档中心 | openUBMC

bmc有做修改os mac的需求,网口名变化应该和bmc关系不大。

同样的环境,使用OpenUBMC2509 AC前后网口名不会变化,使用OpenUBMC2512必现AC前后网口名变化,目前看问题跟随BMC版本,从现象上看跟BMC强相关。
或者这块网卡申请网口名的机制是什么

问下os的同事有什么答复吗

os同事反馈enp开头的网口名对应pcie卡,eno对应板载网卡;类型通过dmi信息获取,可能与bmc上报丝印有关,待进一步复现确认

好的