答案内容由AI生成,仅供参考:
总结:KP920 模组直出网卡适配建议清单
| 步骤 | 说明 | 是否必要 |
|---|---|---|
1. 在 silkconfig.json 中添加 PCIESILK 条目 |
使 BMC 获取初始设备信息 | |
2. 在 CSR 中配置 BoardNICCard 或 PCIeCard 对象 |
实现 BMC 对象建模 | |
3. 设置 "SupportedMctp": true |
启用带外管理协议 | |
4. 加载 network_adapter 组件并启用 NCSI/MCTP |
实现链路与配置管理 | |
5. 通过 EthernetInterfaces 接口开放网络配置能力 |
支持 VLAN、MTU、IP 配置 | |
| 6. 使用 UART/Telnet 排查登录问题 | 降级调试手段 |
点击此处查看详细分析解答
KP920 模组直出网卡在 openUBMC 中的适配配置方式
针对客户使用 KP920 模组并通过 CPU 直连方式引出以太网接口(即“直出网卡”)的场景,以下是基于 openUBMC 架构对该类网络资源进行适配与管理的综合指导。
问题背景分析
KP920 模组具备强大的集成网络能力:
- 支持多种速率组合(如 2×100GE、8×25GE 等)
- 支持 RoCE、PFC 等高级 DCB 特性
- 网络信号通过 SerDes 直接连接 PHY 或光模块
- 属于 CPU 内置 MAC + 外部 PHY/光模块 架构
这类“直出网卡”(On-Die 或 Integrated Ethernet Controllers)并非通过 PCIe 插卡实现,而是 CPU 自身集成的网络控制器,其管理不同于标准 PCIe 网卡。但在 BMC 系统中仍需将其纳入监控和配置体系。
适配原则与核心目标
| 目标 | 说明 |
|---|---|
| 可识别性 | openUBMC 能识别该网卡的存在,并获取关键属性(Vendor ID、Device ID、Model 等) |
| 状态监控 | 支持链路状态、速率、温度、健康状态等监控 |
| 协议支持 | 支持 NCSI、MCTP over PCIe/VDM 等带外通信协议 |
| 配置能力 | 支持 VLAN、MTU、自动/静态 IP 模式等基本配置 |
一、硬件拓扑理解(CPU直出 vs PCIe网卡)
| 类型 | CPU 直出网卡(Onboard NIC) | PCIe 网卡(Add-in Card) |
|---|---|---|
| 物理位置 | 集成于 SoC(如 Kunpeng 920) | 插在 PCIe 插槽 |
| 可插拔性 | 固定不可更换 | 支持热插拔 |
| 与 BIOS/BMC 交互方式 | 通常通过 silkconfig.json、PCIESILK 或专用描述机制 |
通过 CSR 文件定义 PCIeCard 对象 |
| BMC 识别方式 | 基于固定 SlotID 或逻辑 ID 映射 | 通过 BDF 动态发现 |
重点:尽管“直出网卡”不是 PCIe 卡,但 openUBMC 通常将其抽象为 逻辑 PCIe 卡对象 来统一管理 —— 即使用
PCIeCard_1或BoardNICCard对象建模。
二、适配方法与配置建议
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"
}
]
配置说明:
Type: 使用PCIESILK而非NICSILK(因后者依赖 Slot 概念,适用于可插拔卡)SlotID: 对于无物理插槽设备,可设为0x00或保留字段PortID: 若网卡由特定 Port 引出(如 PCIe Port 1),可填写对应编号BDF: 建议填写 CPU 内置控制器的实际 BDF(可通过 Linuxlspci获取)
注:该文件由 BIOS 提供,用于初始化 BMC 的设备拓扑信息。
2. CSR 文件中定义 NetworkAdapter 或 PCIeCard
虽然直出网卡不占 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 接口。
作用:便于其他组件(如
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"
}
支持完整的网络管理属性(速率、链路、温度、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 参与
优势:可在 OS 崩溃时仍保持网络管理通道可用
4. 网络功能接口支持(BMC Kepler)
使用 Bmc Kepler Managers EthernetInterfaces 接口提供完整网络配置功能:
| 接口方法 | 功能 |
|---|---|
SetNetworkConfig |
设置静态 IP / DHCP |
SetVLANConfig |
配置 VLAN 分组 |
AddIptablesRule / AddIp6tablesRule |
防火墙规则 |
GetAllPort |
获取所有物理端口 |
MTU Size |
设置 MTU 大小 |
SLAAC / IPv6 |
支持 IPv6 自动配置 |
推荐在
Network_Adapter组件中实现这些接口以支持高级功能
三、调试与验证建议
1. 串口日志定位问题
参考 KP920 模组文档:
UART1: 连接 KP920 模组系统打印(支持 CPU 日志透传)UART2: BMC 外部调试口,可路由 UART1 输出UART5: SOL 串口,用于远程登录
建议通过 UART1 或 UART5 查看启动阶段网卡初始化信息。
2. 使用 Telnet/SSH 登录排查
- 若 SSH 登录失败(见 KP920S08 模组升级后问题),可尝试 Telnet
- 需确保 BusyBox 工具集已集成(否则 Telnet 不可用)
3. 检查 devmon 和 framework 服务状态
systemctl status devmon.service
journalctl -u devmon.service
devmon负责设备对象发现与加载- 若
PCIeCard_1或NetworkAdapter未正确加载,检查 CSR 解析是否成功
常见问题与规避措施
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 升级 openUBMC 后无法访问 WebUI/SSH | 固件兼容性或 IAM 组件故障 | 检查 Iam Component 是否正常工作,回退版本测试 |
| 直出网卡未被识别 | 未在 silkconfig.json 或 CSR 中定义 |
添加 PCIESILK 或 BoardNICCard 对象 |
| MCTP 无法建立 | SupportedMctp=false 或缺少 endpoint |
设置 SupportedMctp=true 并注册 endpoint |
| 链路状态异常 | PHY 初始化失败或 SerDes 配置错误 | 检查 BIOS 层 SerDes 配置与硬件匹配度 |
| CPU 无法启动(SEL_GPIO0) | Flash 选择信号被 BMC 控制 | 升级前确认 BIOS Flash 控制权归属 |
总结:KP920 模组直出网卡适配建议清单
| 步骤 | 说明 | 是否必要 |
|---|---|---|
1. 在 silkconfig.json 中添加 PCIESILK 条目 |
使 BMC 获取初始设备信息 | |
2. 在 CSR 中配置 BoardNICCard 或 PCIeCard 对象 |
实现 BMC 对象建模 | |
3. 设置 "SupportedMctp": true |
启用带外管理协议 | |
4. 加载 network_adapter 组件并启用 NCSI/MCTP |
实现链路与配置管理 | |
5. 通过 EthernetInterfaces 接口开放网络配置能力 |
支持 VLAN、MTU、IP 配置 | |
| 6. 使用 UART/Telnet 排查登录问题 | 降级调试手段 |
参考资料
- openUBMC 25.09 版本发布文档:新增 NCSI over MCTP 支持
- general_hardware 组件说明:
BoardNICCard与NetworkAdapter对象定义 - 鲲鹏模组 S920X08 板载网卡适配问题:讨论
PCIESILKvsNICSILK - 白牌包升级问题:SSH/Telnet 故障排查经验
- CSR 硬件监控防抖机制:网口状态防抖策略(
contbin_H3L3)
如需进一步协助,请提供具体 CSR 配置片段或 silkconfig.json 内容,以便深入分析。
相关链接: