答案内容由AI生成,仅供参考:
总结
| 项目 | 结论 |
|---|---|
| 是否为已知问题? | bmc_network 的不稳定行为强相关 |
| 是否与版本相关? | |
| 是否可通过配置规避? | |
| 是否需要厂商修复? | bmc_network 和 network_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操作,网口名保持不变
初步判断:此问题极有可能与 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的问题,导致服务启动失败。
如果
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后行为差异
关键线索: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”日志,说明其数据库操作存在问题。
解决方案建议
推荐方案一:核查并固化网口命名规则(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
优点:不依赖BMC行为,稳定可靠
缺点:需每台机器部署,无法根治BMC侧问题
推荐方案二:反馈至OpenUBMC社区,定位bmc_network行为变更
前往官方论坛提交问题:
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 或升级说明?
推荐方案三:临时回退至 OpenUBMC 25.09
若业务允许:
- 回退到已验证稳定的
OpenUBMC 25.09.03.01(即 Available Openubmc Version) - 等待 OpenUBMC 团队发布修复版本后再升级
总结
| 项目 | 结论 |
|---|---|
| 是否为已知问题? | bmc_network 的不稳定行为强相关 |
| 是否与版本相关? | |
| 是否可通过配置规避? | |
| 是否需要厂商修复? | bmc_network 和 network_adapter 在 AC 后的初始化一致性 |
后续建议
- 开启日志收集:收集
/var/log/app.log中bmc_network和network_adapter的完整启动流程 - 比对资源树:使用 BMC Studio 比较 AC 前后的
/redfish/v1/Systems和network_adapter的对象树是否一致 - 上报问题至 SIG-network 小组,要求提供
bmc_network组件变更说明
如需我们协助撰写正式的技术 Issue 或调试脚本,请进一步说明。
相关链接: