问题描述
客户使用 KP920 模组,通过其 CPU 直连的网络资源引出若干以太网接口。想问下此类由 CPU 直出的网卡应如何在UBMC中进行适配?客户想在BMC中查询到直出网卡的信息。
上面是920模组手册信息
客户使用 KP920 模组,通过其 CPU 直连的网络资源引出若干以太网接口。想问下此类由 CPU 直出的网卡应如何在UBMC中进行适配?客户想在BMC中查询到直出网卡的信息。
答案内容由AI生成,仅供参考:
| 步骤 | 说明 | 是否必要 |
|---|---|---|
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 模组并通过 CPU 直连方式引出以太网接口(即“直出网卡”)的场景,以下是基于 openUBMC 架构对该类网络资源进行适配与管理的综合指导。
KP920 模组具备强大的集成网络能力:
这类“直出网卡”(On-Die 或 Integrated Ethernet Controllers)并非通过 PCIe 插卡实现,而是 CPU 自身集成的网络控制器,其管理不同于标准 PCIe 网卡。但在 BMC 系统中仍需将其纳入监控和配置体系。
| 目标 | 说明 |
|---|---|
| 可识别性 | openUBMC 能识别该网卡的存在,并获取关键属性(Vendor ID、Device ID、Model 等) |
| 状态监控 | 支持链路状态、速率、温度、健康状态等监控 |
| 协议支持 | 支持 NCSI、MCTP over PCIe/VDM 等带外通信协议 |
| 配置能力 | 支持 VLAN、MTU、自动/静态 IP 模式等基本配置 |
| 类型 | 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对象建模。
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(可通过 Linux lspci 获取)
注:该文件由 BIOS 提供,用于初始化 BMC 的设备拓扑信息。
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 等)
openUBMC 的 network_adapter 组件支持通过 NCSI 协议与网卡通信,用于获取链路状态、MAC 地址等信息。
network_adapter 组件已加载-- 示例:触发 create_mctp_endpoint()
if SupportedMctp then
network_adapter.init_protocol() -- 触发 MCTP 初始化
end
SupportedMctp = true 时触发 MCTP 协议分支
优势:可在 OS 崩溃时仍保持网络管理通道可用
使用 Bmc Kepler Managers EthernetInterfaces 接口提供完整网络配置功能:
| 接口方法 | 功能 |
|---|---|
SetNetworkConfig |
设置静态 IP / DHCP |
SetVLANConfig |
配置 VLAN 分组 |
AddIptablesRule / AddIp6tablesRule |
防火墙规则 |
GetAllPort |
获取所有物理端口 |
MTU Size |
设置 MTU 大小 |
SLAAC / IPv6 |
支持 IPv6 自动配置 |
推荐在
Network_Adapter组件中实现这些接口以支持高级功能
参考 KP920 模组文档:
UART1: 连接 KP920 模组系统打印(支持 CPU 日志透传)UART2: BMC 外部调试口,可路由 UART1 输出UART5: SOL 串口,用于远程登录建议通过 UART1 或 UART5 查看启动阶段网卡初始化信息。
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 控制权归属 |
| 步骤 | 说明 | 是否必要 |
|---|---|---|
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 排查登录问题 | 降级调试手段 |
BoardNICCard 与 NetworkAdapter 对象定义PCIESILK vs NICSILKcontbin_H3L3)如需进一步协助,请提供具体 CSR 配置片段或 silkconfig.json 内容,以便深入分析。
相关链接:
网卡插在哪个位置的?riser还是IO槽
什么意思,没有网卡?
有结果或者还有问题烦请尽快答复