咨询KP 920 模组直出网卡配置方式

问题描述

客户使用 KP920 模组,通过其 CPU 直连的网络资源引出若干以太网接口。想问下此类由 CPU 直出的网卡应如何在UBMC中进行适配?客户想在BMC中查询到直出网卡的信息。


上面是920模组手册信息

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

:white_check_mark: 总结:KP920 模组直出网卡适配建议清单

步骤 说明 是否必要
1. 在 silkconfig.json 中添加 PCIESILK 条目 使 BMC 获取初始设备信息 :white_check_mark: 必要
2. 在 CSR 中配置 BoardNICCardPCIeCard 对象 实现 BMC 对象建模 :white_check_mark: 必要
3. 设置 "SupportedMctp": true 启用带外管理协议 :white_check_mark: 推荐
4. 加载 network_adapter 组件并启用 NCSI/MCTP 实现链路与配置管理 :white_check_mark: 必要
5. 通过 EthernetInterfaces 接口开放网络配置能力 支持 VLAN、MTU、IP 配置 :white_check_mark: 高级功能
6. 使用 UART/Telnet 排查登录问题 降级调试手段 :white_check_mark: 推荐
点击此处查看详细分析解答

KP920 模组直出网卡在 openUBMC 中的适配配置方式

针对客户使用 KP920 模组并通过 CPU 直连方式引出以太网接口(即“直出网卡”)的场景,以下是基于 openUBMC 架构对该类网络资源进行适配与管理的综合指导。


:magnifying_glass_tilted_left: 问题背景分析

KP920 模组具备强大的集成网络能力:

  • 支持多种速率组合(如 2×100GE、8×25GE 等)
  • 支持 RoCE、PFC 等高级 DCB 特性
  • 网络信号通过 SerDes 直接连接 PHY 或光模块
  • 属于 CPU 内置 MAC + 外部 PHY/光模块 架构

这类“直出网卡”(On-Die 或 Integrated Ethernet Controllers)并非通过 PCIe 插卡实现,而是 CPU 自身集成的网络控制器,其管理不同于标准 PCIe 网卡。但在 BMC 系统中仍需将其纳入监控和配置体系。


:white_check_mark: 适配原则与核心目标

目标 说明
可识别性 openUBMC 能识别该网卡的存在,并获取关键属性(Vendor ID、Device ID、Model 等)
状态监控 支持链路状态、速率、温度、健康状态等监控
协议支持 支持 NCSI、MCTP over PCIe/VDM 等带外通信协议
配置能力 支持 VLAN、MTU、自动/静态 IP 模式等基本配置

:puzzle_piece: 一、硬件拓扑理解(CPU直出 vs PCIe网卡)

类型 CPU 直出网卡(Onboard NIC) PCIe 网卡(Add-in Card)
物理位置 集成于 SoC(如 Kunpeng 920) 插在 PCIe 插槽
可插拔性 固定不可更换 支持热插拔
与 BIOS/BMC 交互方式 通常通过 silkconfig.jsonPCIESILK 或专用描述机制 通过 CSR 文件定义 PCIeCard 对象
BMC 识别方式 基于固定 SlotID 或逻辑 ID 映射 通过 BDF 动态发现

:warning: 重点:尽管“直出网卡”不是 PCIe 卡,但 openUBMC 通常将其抽象为 逻辑 PCIe 卡对象 来统一管理 —— 即使用 PCIeCard_1BoardNICCard 对象建模。


:hammer_and_wrench: 二、适配方法与配置建议

1. 使用 silkconfig.json 标识板载网卡

参考社区讨论,对于非插卡型网卡(如本场景的 CPU 直出),应使用 PCIESILK 类型进行标识:

[
  {
    "Type": "PCIESILK",
    "SlotID": "0x00",  // 可以是伪 SlotID,需与系统一致
    "PortID": "0",     // 对应 OS 下的 Root Port 或 Port 编号
    "SocketID": "0",
    "BDF": "00:01.0",
    "Model": "Kunpeng920_Onboard_100GE",
    "Manufacturer": "Huawei"
  }
]

:white_check_mark: 配置说明:

  • Type: 使用 PCIESILK 而非 NICSILK(因后者依赖 Slot 概念,适用于可插拔卡)
  • SlotID: 对于无物理插槽设备,可设为 0x00 或保留字段
  • PortID: 若网卡由特定 Port 引出(如 PCIe Port 1),可填写对应编号
  • BDF: 建议填写 CPU 内置控制器的实际 BDF(可通过 Linux lspci 获取)

:pushpin: 注:该文件由 BIOS 提供,用于初始化 BMC 的设备拓扑信息。


2. CSR 文件中定义 NetworkAdapterPCIeCard

虽然直出网卡不占 PCIe 插槽,但在 openUBMC 的 CSR 配置中仍建议创建一个虚拟 PCIeCard 或直接使用 NetworkAdapter 来实现管理功能。

方案一:使用 bmc.dev.PCIeCard 接口建模

"PCIeCard_1": {
  "Name": "OnboardEthernet",
  "Model": "Kunpeng920-Integrated-NIC",
  "Manufacturer": "Huawei",
  "FunctionClass": 2,
  "Protocol": "Ethernet",
  "DeviceID": "0x1234",
  "VendorID": "0x19E5",  // 华为 OUI
  "SerialNumber": "ONBOARD-NIC-DEFAULT",
  "SlotNumber": 0,
  "RootBDF": "00:01.0",
  "SupportedMctp": true,
  "HotPluggable": false,
  "BoardName": "KP920_Module"
}

并将此对象映射到 bmc.dev.PCIeCard 接口。

:white_check_mark: 作用:便于其他组件(如 network_adapter)查询和使用。

方案二:使用 BoardNICCard 组件(推荐)

general_hardware 组件中,可通过 BoardNICCard 接口管理板载网卡:

"BoardNICCard_1": {
  "Type": "network_adapter",
  "Class": "NetworkAdapter",
  "Model": "KP920_Onboard_NIC",
  "Manufacturer": "Huawei",
  "RootBDF": "00:01.0",
  "NetworkPortCount": 2,
  "SupportedMctp": true,
  "FruId": 255,
  "SilkText": "ETH0",
  "HotPluggable": false,
  "TemperatureCelsius": 65,
  "LinkSpeed": "100Gbps",
  "LinkStatus": "Up"
}

:check_mark: 支持完整的网络管理属性(速率、链路、温度、LLDP、MCTP 等)


3. 启用 NCSI / MCTP 协议实现带外控制

(1)确认 NCSI 支持

openUBMC 的 network_adapter 组件支持通过 NCSI 协议与网卡通信,用于获取链路状态、MAC 地址等信息。

  • 需确保 network_adapter 组件已加载
  • 若使用 MCTP over PCIe VDM,需在驱动中注册 endpoint

(2)MCTP Endpoint 创建(参考文档 #4

-- 示例:触发 create_mctp_endpoint()
if SupportedMctp then
    network_adapter.init_protocol()  -- 触发 MCTP 初始化
end
  • 需要在 SupportedMctp = true 时触发 MCTP 协议分支
  • BMC 与网卡之间通过 PCIe VDM 报文交互,无需 CPU 参与

:white_check_mark: 优势:可在 OS 崩溃时仍保持网络管理通道可用


4. 网络功能接口支持(BMC Kepler)

使用 Bmc Kepler Managers EthernetInterfaces 接口提供完整网络配置功能:

接口方法 功能
SetNetworkConfig 设置静态 IP / DHCP
SetVLANConfig 配置 VLAN 分组
AddIptablesRule / AddIp6tablesRule 防火墙规则
GetAllPort 获取所有物理端口
MTU Size 设置 MTU 大小
SLAAC / IPv6 支持 IPv6 自动配置

:white_check_mark: 推荐在 Network_Adapter 组件中实现这些接口以支持高级功能


:test_tube: 三、调试与验证建议

1. 串口日志定位问题

参考 KP920 模组文档:

  • UART1: 连接 KP920 模组系统打印(支持 CPU 日志透传)
  • UART2: BMC 外部调试口,可路由 UART1 输出
  • UART5: SOL 串口,用于远程登录

建议通过 UART1 或 UART5 查看启动阶段网卡初始化信息。

2. 使用 Telnet/SSH 登录排查

  • 若 SSH 登录失败(见 KP920S08 模组升级后问题),可尝试 Telnet
  • 需确保 BusyBox 工具集已集成(否则 Telnet 不可用)

3. 检查 devmonframework 服务状态

systemctl status devmon.service
journalctl -u devmon.service
  • devmon 负责设备对象发现与加载
  • PCIeCard_1NetworkAdapter 未正确加载,检查 CSR 解析是否成功

:red_exclamation_mark: 常见问题与规避措施

问题 原因 解决方案
升级 openUBMC 后无法访问 WebUI/SSH 固件兼容性或 IAM 组件故障 检查 Iam Component 是否正常工作,回退版本测试
直出网卡未被识别 未在 silkconfig.json 或 CSR 中定义 添加 PCIESILKBoardNICCard 对象
MCTP 无法建立 SupportedMctp=false 或缺少 endpoint 设置 SupportedMctp=true 并注册 endpoint
链路状态异常 PHY 初始化失败或 SerDes 配置错误 检查 BIOS 层 SerDes 配置与硬件匹配度
CPU 无法启动(SEL_GPIO0) Flash 选择信号被 BMC 控制 升级前确认 BIOS Flash 控制权归属

:white_check_mark: 总结:KP920 模组直出网卡适配建议清单

步骤 说明 是否必要
1. 在 silkconfig.json 中添加 PCIESILK 条目 使 BMC 获取初始设备信息 :white_check_mark: 必要
2. 在 CSR 中配置 BoardNICCardPCIeCard 对象 实现 BMC 对象建模 :white_check_mark: 必要
3. 设置 "SupportedMctp": true 启用带外管理协议 :white_check_mark: 推荐
4. 加载 network_adapter 组件并启用 NCSI/MCTP 实现链路与配置管理 :white_check_mark: 必要
5. 通过 EthernetInterfaces 接口开放网络配置能力 支持 VLAN、MTU、IP 配置 :white_check_mark: 高级功能
6. 使用 UART/Telnet 排查登录问题 降级调试手段 :white_check_mark: 推荐

:books: 参考资料


如需进一步协助,请提供具体 CSR 配置片段或 silkconfig.json 内容,以便深入分析。

相关链接:

  1. 鲲鹏模组(S920X08)板载网卡适配问题
  2. iBMC升级到openUBMC 25.09后,CPU侧无法启动
  3. 南向适配网迅网卡经验分享
  4. IPMI sol命令阻塞
  5. RAID卡常见问题指南 | 文档中心 | openUBMC

网卡插在哪个位置的?riser还是IO槽


滔哥,客户这个是鲲鹏CPU直出的网络,看拓扑直接接了光模块。

什么意思,没有网卡?

是的,直接用的CPU自带的,客户称为“CPU直出”的网络资源 :sweat_smile:
和下面这位伙伴的需求是一样的

找了台机器,有些类似 SF221Q的配置,我们先试着改改


有结果或者还有问题烦请尽快答复