Network Adapter 网卡管理服务
版本信息
| 项目 | 内容 |
|---|---|
| 组件版本 | 1.100.33 |
| 首发版本 | openUBMC 1.0.0 |
| 文档作者 | openUBMC |
| 最后更新 | 2026-05-29 |
1. 组件概述
1.1 组件简介
Network Adapter(网卡管理服务)是 openUBMC 系统中的网卡组件管理模块,负责网卡、网口、光模块等网络设备的信息获取与管理,以及网口 NCSI 通道的配置与维护。支持通过 NCSI/PLDM over MCTP、SMBus 等带外协议获取网卡信息,同时支持通过 BMA(Board Management Agent)获取带内信息。
1.2 解决什么问题
Network Adapter 组件为用户提供了完整的网卡管理能力,包括网卡/网口/光模块状态监控、链路信息采集、带宽占用率统计、NCSI 带外通信通道管理、VLAN/Bond 配置、网卡热插拔、固件升级、日志收集等功能。通过 Network Adapter 组件,用户可以在不依赖主机操作系统的情况下完成网络设备的全生命周期管理。
1.3 核心功能
- 网卡管理:支持网卡基本信息获取、健康状态监控、热插拔管理、带宽门限设置、固件升级
- 网口管理:支持网口链路状态、MAC 地址、速率、统计信息、LLDP 信息获取与配置
- 光模块管理:支持光模块温度、功率、偏置电流、电压等诊断信息采集与告警
- 带外协议:支持 NCSI over MCTP、PLDM over MCTP、SMBus、LLDP 等多种协议
- 带内数据:支持通过 BMA 获取主机侧网口、光模块、VLAN、Bond、Bridge 等信息
- NCSI 功能:支持 NCSI 通道初始化、Tx 使能、VLAN Filter 配置,与 bmc_network 协同实现 BMC 带外通信
- VLAN/Bond 管理:支持网口 VLAN 创建/修改/删除,Bond 网口创建/删除
- IPMI 命令:支持 15 个 OEM IPMI 命令,覆盖 MAC 地址读写、NCSI 配置、网口信息查询等
- 日志与诊断:支持网卡日志收集、光模块历史信息采集、SDI 卡黑匣子日志收集、PRBS 压测
1.4 关键术语表
| 术语 | 解释 |
|---|---|
| NCSI | Network Controller Sideband Interface,网络控制器边带接口,BMC 通过网卡实现带外通信的协议 |
| MCTP | Management Component Transport Protocol,管理组件传输协议,用于 BMC 与网卡芯片通信 |
| BMA | Baseboard Management Agent,主机侧代理,将主机端信息通过带内通道推送给 BMC |
| LLDP | Link Layer Discovery Protocol,链路层发现协议,用于获取交换机端口信息 |
| SMBus | System Management Bus,系统管理总线,用于 Hi182x 等网卡的带外管理 |
| SDI 卡 | SmartNIC/DPU 智能网卡,具备独立计算能力的特殊网卡 |
| OCP 卡 | Open Compute Project 推出的服务器网络接口卡 |
| FC 卡 | Fibre Channel 光纤通道网卡 |
| Lom 卡 | LAN on Motherboard,板载网卡 |
| 光模块 | Optical Module,光纤网口上可热插拔的光电转换模块 |
1.5 外部交互边界图
说明
北向接口(Redfish/WEB/SNMP/CLI)由 rackmount 仓通过 D-Bus 资源协作接口调用 Network Adapter 组件
IPMI 接口由 ipmi_core 组件路由,Network Adapter 向 ipmi_core 注册处理函数
BMA 带内数据由 host_agent 组件直接推送给 Network Adapter 组件
NCSI 带外通信需要与 bmc_network 组件协同,由 Network Adapter 管理 NCSI 通道配置
带外通信通过 mctpd 仓管理 MCTP 通道,通过 hwproxy 仓管理 SMBus/I2C 通道
2. API 使用说明与示例
2.1 网卡组管理
busctl --user introspect bmc.kepler.network_adapter /bmc/kepler/Systems/1/NetworkAdapters bmc.kepler.Systems.NetworkAdapters
NAME TYPE SIGNATURE RESULT/VALUE FLAGS功能说明
提供网卡组级别的管理功能,包括网卡/网口数量查询、端口速率查询、带宽占用率历史数据管理等。
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Systems.NetworkAdapters |
| 资源路径 | /bmc/kepler/Systems/:SystemId/NetworkAdapters |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
方法参数说明
| 方法名 | 入参 | 出参 | 描述 |
|---|---|---|---|
| GetNetCardPortNum | Type(U8), SystemID(U8), SlotID(U8) | NetcardExist(U8), PortNum(U8) | 获取指定槽位网卡的网口数量 |
| GetPortSpeed | Type(U8), Slot(U8), PortID(U8) | Status(U8), Speed(U32) | 获取指定网口速率 |
| GetNetworkAdapterNum | - | NetworkAdapterNum(U8) | 获取网卡总数量 |
| GetNetworkPortNum | - | NetworkPortNum(U8) | 获取网口总数量 |
| GetBandwidthHistory | - | History(String) | 获取各网卡端口带宽占用率历史数据 |
| ClearBandwidthHistory | BWUWaveTitle(String) | - | 清空带宽占用率历史数据 |
| SetBandwidthThreshold | BandwidthThresholdPercent(U8) | Result(S32) | 设置网络带宽占用率门限 |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 0 | 成功 | 正常执行完成 | 无 |
| 非 0 | 失败 | 参数非法或网卡不存在 | 检查槽位号和网卡类型 |
应用场景
- 查询系统中网卡和网口数量
- 监控网口带宽占用率
- 设置带宽告警门限
调试示例
# 获取网卡数量
busctl --user call bmc.kepler.network_adapter /bmc/kepler/Systems/1/NetworkAdapters \
bmc.kepler.Systems.NetworkAdapters GetNetworkAdapterNum
# 设置带宽占用率门限为 80%
busctl --user call bmc.kepler.network_adapter /bmc/kepler/Systems/1/NetworkAdapters \
bmc.kepler.Systems.NetworkAdapters SetBandwidthThreshold y 802.2 网卡管理
busctl --user introspect bmc.kepler.network_adapter /bmc/kepler/Systems/1/NetworkAdapters/0 bmc.kepler.Systems.NetworkAdapter
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.StartRemovingDevice method a{ss}s - -
.DumpBlackBox method a{ss}s u -
.Reset method a{ss}s - -
.ID property s "0" emits-change
.Name property s "SP580" emits-change
.Model property s "Hi1822" emits-change
.TemperatureCelsius property n 45 emits-change
...功能说明
管理单个网卡的属性和操作,包括基本信息获取、健康状态监控、热插拔管理、黑匣子日志收集等。
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Systems.NetworkAdapter |
| 资源路径 | /bmc/kepler/Systems/:SystemId/NetworkAdapters/:ID |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
方法参数说明
| 方法名 | 入参 | 出参 | 描述 |
|---|---|---|---|
| StartRemovingDevice | ID(String) | - | 启动网卡热拔出流程 |
| DumpBlackBox | Path(String) | TaskId(U32) | 收集 SDI 卡黑匣子日志,当前仅 SDI 5.1 网卡支持 |
| Reset | ResetType(String) | - | 复位或上下电设备。GracefulRestart/ForceOff/ForceOn |
属性参数说明
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| ID | 输出 | string | 网卡 ID | 全局唯一 |
| SystemID | 输出 | uint8 | 系统 ID | — |
| Name | 输出 | string | 网卡型号名称 | CSR 配置 |
| DisplayName | 输出 | string | 网卡显示名称 | — |
| Manufacturer | 输出 | string | 厂商名称 | — |
| Description | 输出 | string | 网卡描述 | — |
| Position | 输出 | string | 网卡容器信息 | — |
| DeviceLocator | 输出 | string | 网卡丝印信息 | — |
| Type | 输出 | uint8 | 网卡类型 | 1=Lom, 3=PCIe, 10=OCP |
| NetworkPortCount | 输出 | uint8 | 网口个数 | — |
| Model | 输出 | string | 芯片型号,决定支持的协议 | Hi1822/CX5 等 |
| ChipVendor | 输出 | string | 芯片厂商 | — |
| ChipManufacturer | 输出 | string | 芯片厂商 | — |
| DriverName | 输出 | string | 驱动名称 | 依赖 BMA |
| DriverVersion | 输出 | string | 驱动版本 | 依赖 BMA |
| SlotNumber | 输出 | uint8 | 槽位号 | — |
| RootBDF | 输出 | string | 网卡 BDF 信息 | — |
| FirmwareVersion | 输出 | string | 固件版本 | — |
| VendorID | 输出 | string | 厂商 ID | PCIe 四元组 |
| DeviceID | 输出 | string | 设备 ID | PCIe 四元组 |
| SubsystemVendorID | 输出 | string | 子系统厂商 ID | — |
| SubsystemDeviceID | 输出 | string | 子系统设备 ID | — |
| TemperatureCelsius | 输出 | int16 | 芯片温度 | °C |
| TemperatureStatus | 输出 | uint8 | 芯片温度状态 | 0=正常, 1=失效 |
| HotPluggable | 输出 | bool | 是否支持热插拔 | — |
| ReadyToRemove | 输出 | bool | 热拔出是否已准备好 | — |
| AttentionHotPlugState | 输出 | uint8 | 热插拔状态 | 0=不可操作, 1=可拔出, 2=可插入 |
| SerialNumber | 输出 | string | 序列号 | — |
| LLDPSupported | 输出 | bool | 是否支持 LLDP | — |
| SupportedMctp | 输出 | bool | 是否支持 MCTP | — |
| BandwidthThresholdPercent | 输出 | uint16 | 网络带宽占用率门限 | 百分比,默认100 |
| NetDevFuncCapabilities | 输出 | uint8 | 网卡支持的协议 | 0:Disabled 1:Ethernet 2:FC 4:iSCSI 8:FCoE 16:OPA 32:IB |
| NetworkDeviceFunctionCount | 输出 | uint8 | 网卡可用最大物理功能数量 | — |
| MaxOperatingTemperatureCelsius | 输出 | uint16 | 稳态下支持的最大温度 | °C |
| NodeId | 输出 | string | 网卡 NodeId | 全局唯一 |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 0 | 成功 | 正常执行完成 | 无 |
| 非 0 | 失败 | 网卡不支持该操作或状态异常 | 检查网卡类型和状态 |
应用场景
- 查询网卡基本信息(型号/固件/温度/BDF 等)
- 网卡热插拔管理
- SDI 卡黑匣子日志收集
- 网卡健康状态监控
限制条件
- 热插拔操作需要网卡支持(HotPluggable=true)
- DumpBlackBox 仅适用于 SDI 卡
- 带外属性依赖网卡协议支持情况
调试示例
# 查询网卡信息
busctl --user introspect bmc.kepler.network_adapter \
/bmc/kepler/Systems/1/NetworkAdapters/0 bmc.kepler.Systems.NetworkAdapter
# 查询网卡温度
busctl --user get-property bmc.kepler.network_adapter \
/bmc/kepler/Systems/1/NetworkAdapters/0 \
bmc.kepler.Systems.NetworkAdapter TemperatureCelsius2.3 网卡状态子接口
bmc.kepler.Systems.NetworkAdapter.NetworkAdapterMetrics
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| LinkWidthCapability | 输出 | string | 网卡支持的最大带宽能力 | — |
| LinkSpeedCapability | 输出 | string | 网卡支持的最大速率能力 | — |
| LinkWidth | 输出 | string | 网卡实际带宽 | — |
| LinkSpeed | 输出 | string | 网卡实际速率 | — |
| SFPMaxTemperatureCelsius | 输出 | int16 | 光模块最大温度(用于调速) | °C |
| PowerMilliWatts | 输出 | uint32 | 网卡当前功率 | 毫瓦,默认4294967295 |
bmc.kepler.Systems.NetworkAdapter.Status
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| Health | 输出 | uint8 | 网卡健康状态 | 0=OK, 1=Minor, 2=Major, 3=Critical |
| FaultCode | 输出 | string | 异常码 | — |
| FaultState | 输出 | uint32 | 故障状态(用于告警配置) | — |
| PowerStatus | 输出 | uint8 | Hi182x 网卡电源状态 | 1=正常, 0=异常, 255=未知 |
bmc.kepler.Inventory.Hardware
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| AssetType | 输出 | string | 硬件资产类型 | — |
| AssetName | 输出 | string | 硬件资产名称 | — |
| SerialNumber | 输出 | string | 硬件资产序列号 | — |
| FirmwareVersion | 输出 | string | 硬件资产固件版本 | — |
| PCBVersion | 输出 | string | 硬件资产 PCB 版本 | — |
| Manufacturer | 输出 | string | 硬件资产制造商 | — |
| Model | 输出 | string | 硬件资产型号 | — |
2.4 网口管理
busctl --user introspect bmc.kepler.network_adapter \
/bmc/kepler/Systems/1/NetworkAdapters/0/Ports/0 bmc.kepler.Systems.NetworkPort
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.Configure method a{ss}a{ss} u -
.MACAddress property s "00:11:22:33:44:55" emits-change
.LinkStatus property s "Connected" emits-change
.SpeedMbps property u 25000 emits-change
...功能说明
管理单个网口的属性和操作,包括链路状态、MAC 地址、速率、统计信息、LLDP 信息等。
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Systems.NetworkPort |
| 资源路径 | /bmc/kepler/Systems/:SystemId/NetworkAdapters/:ID/Ports/:ID |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
方法参数说明
| 方法名 | 入参 | 出参 | 描述 |
|---|---|---|---|
| Configure | Request(Dictionary) | TaskId(U32) | 配置网口,参数含连接状态、地址、掩码等 |
属性参数说明
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| SystemID | 输出 | uint8 | 系统 ID | — |
| NodeId | 输出 | string | 网口 NodeId | 全局唯一 |
| Name | 输出 | string | 网口名称 | — |
| PortID | 输出 | uint8 | 网口 ID | — |
| PermanentMACAddress | 输出 | string | 永久 MAC 地址 | — |
| MACAddress | 输出 | string | MAC 地址 | — |
| LinkStatus | 输出 | string | 链路状态 | LinkUp/NoLink/LinkDown/Connected/Disconnected |
| LinkStatusNumeric | 输出 | uint8 | 链路状态数值 | — |
| SpeedMbps | 输出 | uint32 | 链路速率 | Mbps |
| FullDuplex | 输出 | uint8 | 全双工状态 | 0=关闭, 1=开启, 255=未知 |
| AutoSpeedNegotiation | 输出 | uint8 | 自协商状态 | 0=关闭, 1=开启, 255=未知 |
| LinkMonitorPeriodMS | 输出 | uint32 | 链路监测周期 | 毫秒 |
| MTUSize | 输出 | uint16 | 最大传输单元 | 默认1500 |
| MediumType | 输出 | string | 网口介质类型 | Copper/FiberOptic |
| FunctionType | 输出 | string | 网口类型 | Virtual/Physical |
| BDF | 输出 | string | 网口 BDF | — |
| LLDPEnabled | 输入/输出 | bool | LLDP 使能 | true/false |
| NetworkAdapterId | 输出 | string | 关联网卡 ID | — |
| DriverName | 输出 | string | 驱动名称 | 依赖 BMA |
| DriverVersion | 输出 | string | 驱动版本 | 依赖 BMA |
| FirmwareVersion | 输出 | string | 固件版本 | — |
返回值与异常
| 返回值 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| 0 | 成功 | 正常执行完成 | 无 |
| 非 0 | 失败 | 网口不存在或操作不支持 | 检查网口状态 |
应用场景
- 查询网口链路状态和速率
- 获取网口 MAC 地址
- 配置网口 LLDP 使能
- 监控网口流量统计
调试示例
# 查询网口链路状态
busctl --user get-property bmc.kepler.network_adapter \
/bmc/kepler/Systems/1/NetworkAdapters/0/Ports/0 \
bmc.kepler.Systems.NetworkPort LinkStatus2.5 网口统计与 LLDP 子接口
bmc.kepler.Systems.NetworkPort.Metrics
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| RXFrames | 输出 | string | 收到的帧数量 | — |
| TXFrames | 输出 | string | 发送的帧数量 | — |
| PacketsDropped | 输出 | uint64 | 丢包总数 | — |
| RXUnicastFrames | 输出 | string | 收到的单播帧数量 | — |
| TXUnicastFrames | 输出 | string | 发送的单播帧数量 | — |
| RXFCSErrors | 输出 | string | 接收校验错误帧数量 | — |
| BandwidthUsagePercent | 输出 | double | 网络带宽占用率 | % |
bmc.kepler.Systems.NetworkPort.LLDPReceive
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| ChassisId | 输出 | string | 从交换机接收的 Chassis ID | — |
| ChassisIdSubtype | 输出 | string | Chassis ID 类型 | — |
| PortId | 输出 | string | 从交换机接收的端口 ID | — |
| PortIdSubtype | 输出 | string | 端口 ID 类型 | — |
| SystemName | 输出 | string | 网络交换机名称 | — |
| ManagementVlanId | 输出 | uint16 | 从交换机接收的 VLAN ID | — |
bmc.kepler.Systems.NetworkPort.FibreChannel
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| FCId | 输出 | string | FC ID 信息 | — |
| WWNN | 输出 | string | 当前生效 WWNN 号 | — |
| WWPN | 输出 | string | 当前生效 WWPN 号 | — |
| SpeedGbps | 输出 | uint32 | 端口链接速率 | Gb |
2.6 光模块管理
busctl --user introspect bmc.kepler.network_adapter \
/bmc/kepler/Systems/1/NetworkAdapters/0/Ports/0/OpticalModule bmc.kepler.Systems.OpticalModule
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.Manufacturer property s "Vendor" emits-change
.TemperatureCelsius property d 35.5 emits-change
.Presence property y 1 emits-change
...功能说明
管理网口下的光模块信息,包括基本信息、温度、功率、偏置电流、电压等诊断数据。信息通过带外协议(NCSI over MCTP、SMBus 等)与 BMA 带内上报(handler_optical / handler_optical_diag)共同获取,与网口数据获取方式一致。
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Systems.OpticalModule |
| 资源路径 | .../Ports/:ID/OpticalModule |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
属性参数说明
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| Name | 输出 | string | 名称 | — |
| Manufacturer | 输出 | string | 厂商名称 | — |
| PartNumber | 输出 | string | 厂商部件名称 | — |
| SerialNumber | 输出 | string | 序列号 | — |
| TransceiverType | 输出 | string | 收发器类型 | — |
| MediumType | 输出 | string | 介质类型 | Optical/Electric/Copper |
| SupportedSpeedsMbps | 输出 | double[] | 支持的速率 | Mbps |
| Health | 输出 | uint8 | 健康状态 | — |
| TemperatureCelsius | 输出 | double | 光模块温度 | °C |
| Presence | 输出 | uint8 | 是否在位 | 0/1 |
| ChannelNum | 输出 | uint8 | 内部通道数 | — |
| RxLossState | 输出 | bool | 接收端信号是否丢失 | — |
| TxLossState | 输出 | bool | 发送端信号是否丢失 | — |
| TxFaultState | 输出 | bool | 发送端是否故障 | — |
| FaultState | 输出 | uint32 | 故障状态 | — |
| Accessible | 输出 | uint8 | 是否可访问 | 0=不可, 1=可 |
应用场景
- 查询光模块基本信息和温度
- 监控光模块功率和偏置电流
- 光模块故障诊断和告警
2.7 光模块子接口
bmc.kepler.Systems.OpticalModule.Temperature
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| ReadingCelsius | 输出 | double | 读取的芯片温度 | °C |
| LowerThresholdCritical | 输出 | double | 下限阈值 | °C |
| UpperThresholdCritical | 输出 | double | 上限阈值 | °C |
bmc.kepler.Systems.OpticalModule.Power
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| RXInputPowerMilliWatts | 输出 | double[] | 接收功率 | 毫瓦 |
| TXOutputPowerMilliWatts | 输出 | double[] | 发送功率 | 毫瓦 |
| RXInputPowerStatus | 输出 | uint32 | 接收功率异常状态(按通道位图) | — |
| TXOutputPowerStatus | 输出 | uint32 | 发送功率异常状态(按通道位图) | — |
bmc.kepler.Systems.OpticalModule.BiasCurrent
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| TXBiasCurrentMilliAmps | 输出 | double[] | 偏置电流 | 毫安 |
| TXBiasCurrentStatus | 输出 | uint32 | 偏置电流异常状态(按通道位图) | — |
bmc.kepler.Systems.OpticalModule.Voltage
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| SupplyVoltage | 输出 | double | 供电电压 | V |
| LowerThresholdCritical | 输出 | double | 下限阈值 | V |
| UpperThresholdCritical | 输出 | double | 上限阈值 | V |
bmc.kepler.Systems.OpticalModule.Diagnose
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| RxLossOfLock | 输出 | uint8 | 接收方向 CDR 失败状态 | — |
| TxLossOfLock | 输出 | uint8 | 发送方向 CDR 失败状态 | — |
| LaserRuntimeSeconds | 输出 | uint32 | 激光器运行时间 | 秒 |
| SelfTestStatus | 输出 | uint64 | 自体诊断告警状态 | — |
| PRBSTestSupported | 输出 | bool | 是否支持 PRBS 压测 | — |
| FiberDirtyDetected | 输出 | bool | 光模块是否脏污 | — |
| FiberLoosenessDetected | 输出 | bool | 光模块是否松动 | — |
bmc.kepler.Systems.OpticalModule.Channel
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| Id | 输出 | uint8 | 光模块 RX/TX 通道号 | — |
| BiasCurrentMilliAmps | 输出 | double | 通道偏置电流 | 毫安 |
| RXPowerMilliWatts | 输出 | double | 通道接收功率 | 毫瓦 |
| TXPowerMilliWatts | 输出 | double | 通道发送功率 | 毫瓦 |
2.8 VLAN 管理
busctl --user introspect bmc.kepler.network_adapter \
/bmc/kepler/Systems/1/NetworkAdapters/0/Ports/0/VLANs bmc.kepler.Systems.NetworkPort.VLANs
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.CreateVLAN method a{ss}a{ss} u -功能说明
管理网口下的 VLAN 配置,支持创建、修改和删除 VLAN。
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Systems.NetworkPort.VLANs |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
方法参数说明
| 方法名 | 入参 | 出参 | 描述 |
|---|---|---|---|
| CreateVLAN | Request(Dictionary) | TaskId(U32) | 创建网口 VLAN |
VLAN 属性参数说明(bmc.kepler.Systems.NetworkPort.VLAN)
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| VLANId | 输出 | uint16 | VLAN ID | — |
| VLANEnabled | 输出 | bool | VLAN 是否启用 | true/false |
| VLANPriority | 输出 | uint8 | VLAN 优先级 | 0~7 |
| AutoConnectOnBoot | 输出 | bool | 系统启动时自动创建和启用 | true/false |
| AutoConnectOnBootValidity | 输出 | bool | AutoConnectOnBoot 是否为有效值 | true/false |
方法参数说明(VLAN 对象)
| 方法名 | 入参 | 出参 | 描述 |
|---|---|---|---|
| ConfigureVLAN | Request(Dictionary) | TaskId(U32) | 修改 VLAN 配置 |
| DeleteVLAN | - | TaskId(U32) | 删除 VLAN |
2.9 Bond 管理
功能说明
管理 Bond 网口的创建和删除,以及链路监测周期设置。
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Systems.NetworkBondings |
| 资源路径 | /bmc/kepler/Systems/:SystemId/NetworkAdapters(方法接口);Bond 对象路径为 /bmc/kepler/Systems/:SystemId/NetworkBondings/:ID |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
方法参数说明
| 方法名 | 入参 | 出参 | 描述 |
|---|---|---|---|
| CreateBond | Request(Dictionary) | TaskId(U32) | 创建 Bond,参数含 port、BondingType 等 |
| DeleteBond | Id(String) | TaskId(U32) | 删除指定 Bond |
| SetLinkMonitorPeriodMS | Id(String), LinkMonitorPeriodMS(U32) | TaskId(U32) | 设置 Bond 链路监控周期(毫秒) |
Bond 属性参数说明(bmc.kepler.Systems.NetworkBonding)
| 参数名 | 方向 | 类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| Id | 输出 | string | Bonding ID | 由 BMA 生成 |
| Name | 输出 | string | Bonding 名称 | — |
2.10 NCSI 调试
busctl --user introspect bmc.kepler.network_adapter \
/bmc/kepler/Debug/Systems/1/NCSI bmc.kepler.Debug.Systems.NCSI
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.SendCmdOverMCTP method a{ss}sys s -功能说明
提供 NCSI over MCTP 调试命令接口,用于开发和问题定位。
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Debug.Systems.NCSI |
| 首发版本 | openUBMC 1.0.0 |
| 废弃状态 | 正常可用 |
参数说明
方法参数说明
| 方法名 | 入参 | 出参 | 描述 |
|---|---|---|---|
| SendCmdOverMCTP | NodeId(String), Command(U8), Payload(String) | Data(String) | 调试 NCSI over MCTP 命令 |
2.11 调试接口
bmc.kepler.Debug.Systems.NetworkAdapters
| 方法名 | 入参 | 出参 | 描述 |
|---|---|---|---|
| Dump | - | - | 将网卡信息转储到日志文件 |
3. IPMI 命令
数据来源:
network_adapter/mds/ipmi.json(命令定义)+network_adapter/src/lualib/network_adapter_app.lua(处理函数)
3.1 概述
Network Adapter 组件注册了 15 个 OEM IPMI 命令,网卡 MAC 地址相关命令使用 NetFn=0x30, CMD=0x90;NCSI 和网口信息查询命令使用 NetFn=0x30, CMD=0x93;DPU 相关命令使用 NetFn=0x3E。
3.2 查询类命令
| IPMI 命令 | NetFn/CMD | SubCommand | 处理函数 | 说明 |
|---|---|---|---|---|
GetMacAddress | 0x30/0x90 | 0x01 | get_mac_address_from_ipmi | 获取网口 MAC 地址 |
GetNcsiSlot | 0x30/0x93 | 0x5B | — | 获取 NCSI 槽位号 |
GetBusinessPortInfo | 0x30/0x93 | 0x5E | get_business_port_info_from_ipmi | 查询网口信息 |
GetIPMCConfiguration | 0x30/0x93 | 0x06/0x19 | — | 获取 NCSI channel 的 Rx 配置 |
GetNetworkAdapterModelByLOM | 0x30/0x93 | 0x40/0x4A | — | 通过 BDF 查询板载网卡芯片型号 |
GetNetworkAdapterModelByOCPCard | 0x30/0x93 | 0x40/0x53 | — | 通过 BDF 查询 OCP 扣卡芯片型号 |
GetDpuOSStartupStatus | 0x30/0x93 | 0x27 | — | 获取 DPU OS 启动状态 |
GetDpuHostAccess | 0x3E/0x67 | 0x02 | — | 获取 DPU 主机访问权限 |
GetDpuExtendedHostPrivilege | 0x3E/0x68 | 0x02 | — | 获取 DPU 扩展主机权限 |
GetDpuMode | 0x3E/0x69 | 0x02 | — | 获取 DPU 模式 |
3.3 设置类命令
| IPMI 命令 | NetFn/CMD | SubCommand | 处理函数 | 说明 |
|---|---|---|---|---|
WriteMacAddress | 0x30/0x90 | 0x00 | — | 设置网口 MAC 地址(通常由 BIOS 调用) |
SetIPMCConfiguration | 0x30/0x93 | 0x05/0x19 | — | 设置 NCSI channel 的 Rx |
SetDpuHostAccess | 0x3E/0x67 | 0x01 | — | 设置 DPU 主机访问权限 |
SetDpuExtendedHostPrivilege | 0x3E/0x68 | 0x01 | — | 设置 DPU 扩展主机权限 |
SetDpuMode | 0x3E/0x69 | 0x01 | — | 设置 DPU 模式 |
4. 关键特性
4.1 带外协议获取网卡信息
网卡带外管理支持多种协议,芯片型号(Model)决定了该网卡支持哪些协议:
NCSI over MCTP over PCIe
绝大多数网卡支持该协议,可获取:网卡厂商信息、芯片温度、带宽/速率能力、故障状态、网口报文统计、链路状态、MAC 地址、光模块信息等。
PLDM over MCTP over PCIe
主要用于 SDI5x/SDI6x 黑匣子日志收集,未来计划 FC 卡通过该协议获取带外信息。
SMBus
仅 Hi182x 系列网卡支持,可获取:网卡健康状态、故障状态、芯片温度、错误日志、临终遗言日志、运行日志、光模块温度、网口链路状态、MAC 地址等。
LLDP
接收 LLDP 信息,获取交换机 Chassis ID、端口 ID、交换机名称、VLAN ID 等。
4.2 带内 BMA 获取网卡信息
网口信息通过以下路径传递:带内 → SMS 接口 → host_agent → network_adapter。Network Adapter 监听 host_agent 网口相关资源协作接口对象的上树、修改、下树信号,汇总管理网口连接状态、速率、IPv4/IPv6、MAC 地址、BDF、固件版本、Bond/Bridge 网口、光模块信息等。
4.3 网卡 NCSI 功能
部分网卡(PCIe 卡、OCP 卡)具备 NCSI 功能,BMC 可通过 NCSI 通道与网卡相连实现带外通信。主要交互流程:
- 初始化时识别网卡 NCSI 能力,识别到 NCSI 网口后上报给 bmc_network 注册 NCSI 网口,并实时更新 link 状态
- bmc_network 切换到 NCSI 网口时通知 network_adapter,使能对应 NCSI 通道的 Tx;切换回专用网口时关闭原 NCSI 通道 Tx
- bmc_network 设置 NCSI VLAN 后通知 network_adapter,配置 NCSI 通道的 vlan_filter
4.4 已适配网卡类型
| 类型 | 说明 |
|---|---|
| NIC 卡 | 板载网卡(LOM 卡)、灵活 IO 插卡 |
| PCIe 标卡 | PCIe 网卡,需要 Riser 卡 |
| SDI 卡 | 智能网卡/DPU |
| OCP 卡 | Open Compute Project 服务器网络接口卡 |
| FC 卡 | 光纤通道网卡 |
4.5 网卡固件升级
数据来源:
network_adapter/src/lualib/upgrade/+firmware_mgmt(UpdateService)升级调度
Network Adapter 负责固件类型为 Nic 的网卡升级与生效,由 firmware_mgmt(UpdateService)统一发起升级流程,本组件订阅其 D-Bus 信号并执行具体刷写逻辑。
4.5.1 功能概述
- 固件类型标识:
firmware_type = Nic(与固件管理模块约定一致) - 升级对象:资源树中已登记的网卡固件(
NetworkAdapterFirmware/ FirmwareInventory),按ComponentID、ComponentIDEx及可选Targets匹配 - 升级协议:支持 SFC 协议网卡通过
upgrade_flash写 Flash;初始化时为 SFC 网卡设置默认固件路由 - 协同组件:
- UpdateService:下发 Prepare / Process / Finish 三阶段升级信号
- FirmwareActive:下电后执行缓存升级包的生效(Active)流程
- fructrl:下电升级时加/解「上电锁」,防止升级过程中 Host 意外上电
4.5.2 升级流程
| 阶段 | 处理入口 | 主要动作 |
|---|---|---|
| Prepare | on_upgrade_prepare | 校验是否在升级中、是否存在网卡固件对象;chown 配置与 HPM 文件;解析 update.cfg;记录升级前版本;下电时通过 fructl 加上电锁 |
| Process | on_upgrade_process | 按 Targets 或全量匹配升级列表;上电时仅缓存 HPM,不写 Flash;下电时调用 upgrade_flash 刷写 |
| Finish | on_upgrade_finish | 若存在缓存 HPM,向 FirmwareActive 注册生效任务(ActiveCondition=PowerOff);清理升级状态 |
| Active | on_active_process | 下电生效:读取缓存 /data/backup/nic/up_cfg/nic.hpm,解压并刷写,完成后清理缓存 |
4.5.3 固件对象登记
网卡固件对象由 firmware_objs_mgmt 管理,在 CSR 配置的 NetworkAdapterFirmware 对象上树时登记到可升级列表,下树时移除,并同步注册到 /bmc/kepler/UpdateService/FirmwareInventory 供北向查询。
升级目标 URI 前缀为:
/redfish/v1/Chassis/1/NetworkAdapters/{firmware_id}
可通过升级参数 Targets 指定逗号分隔的 URI 列表,仅升级指定网卡;未指定时按配置文件中 component_id / component_idex 匹配全部符合的网卡固件。
4.5.4 路径与配置
| 路径/文件 | 说明 |
|---|---|
update.cfg | 升级包内配置文件,定义 component_id、component_idex 等,由 parser_cfg 解析 |
| HPM 升级包 | Process 阶段传入的固件包路径,Prepare 阶段记录 hpm_path |
/data/backup/nic/up_cfg/nic.hpm | 上电升级时缓存的网卡 HPM,供下电后 Active 刷写 |
/lib/modules/hibmc/sfc0_drv.ko | SFC 协议相关驱动路径(upgrade_defs) |
4.5.5 返回值说明
| 返回值 | 含义 | 常见原因 |
|---|---|---|
| 0 | 成功 | 阶段正常完成 |
| -1 | 通用失败 | 配置解析失败、Flash 刷写失败、无固件对象等 |
| 36 | IN_UPGRADING | 已有网卡升级任务进行中 |
| 248 | OTHERS_UPGRADING | 其他固件正在升级(固件管理侧) |
4.5.6 限制与注意事项
- 仅处理
firmware_type == Nic的升级/生效请求,其他类型由对应组件处理 - 上电场景下 Process 不直接写 Flash,需等待 Host 下电后通过 Active 流程生效
- 下电升级依赖上电锁,Finish 或异常路径会解除锁并清理
cfgs、upgrade_list等状态 - Prepare 阶段要求
FirmwareInventory中已存在可升级的网卡固件对象,否则返回失败 - SFC 网卡启动时会执行
initial_set_route()恢复默认固件路由
4.5.7 相关代码目录
| 文件 | 说明 |
|---|---|
upgrade/network_adapter_upgrade.lua | 订阅升级信号、阶段调度与状态管理 |
upgrade/upgrade_process.lua | Prepare/Process/Finish 业务逻辑 |
upgrade/active_process.lua | 下电生效(Active)刷写 |
upgrade/upgrade_flash.lua | Flash 刷写与路由切换 |
upgrade/firmware_objs_mgmt.lua | 网卡固件对象登记与 FirmwareInventory 同步 |
upgrade/parser_cfg.lua | 升级配置与包路径解析 |
upgrade/upgrade_defs.lua | 常量与返回值定义 |
4.6 对象模型
NetworkAdapter 拥有 N 个 NetworkPort,每个 NetworkPort 拥有 0/1 个 OpticalModule,通过 @Parent 属性关联。主要类:
- NetworkAdapter:网卡设备信息
- NetworkPort:网口设备信息
- OpticalModule:光模块设备信息
5. 目录结构
├── src
│ ├── lualib
│ │ ├── bma # BMA 带内数据处理
│ │ │ ├── handles # BMA 上报信息处理
│ │ │ └── bma_mdb_mgmt.lua # BMA 资源管理
│ │ ├── debug # NCSI over MCTP 调试命令
│ │ ├── device
│ │ │ ├── class
│ │ │ │ ├── network_adapter.lua # 网卡相关业务代码
│ │ │ │ ├── network_port.lua # 网口相关业务代码
│ │ │ │ ├── optical_module.lua # 光模块相关业务代码
│ │ │ │ ├── log_collector.lua # 日志收集
│ │ │ │ ├── vlan/ # VLAN 对象管理
│ │ │ │ └── nic_mgmt/ # 网卡/网口/光模块管理
│ │ │ └── device_manager.lua # 设备管理(method、IPMI 实现)
│ │ ├── hardware_config # 各型号网卡协议配置
│ │ │ ├── CX4.lua # CX4 型号(SP333/SP380)
│ │ │ ├── CX5.lua # CX5 型号(SP351/SP382)
│ │ │ ├── CX6-DX.lua # CX6-DX 型号
│ │ │ ├── Hi182X.lua # Hi182x 系列(SP580)
│ │ │ └── Gemini.lua # SDI 卡协议
│ │ ├── ncsi # NCSI 协议实现
│ │ │ ├── ncsi_core.lua # NCSI 协议接口
│ │ │ ├── ncsi_service.lua # NCSI 初始化
│ │ │ └── ncsi_worker.lua # NCSI 报文接收
│ │ ├── upgrade # 网卡固件升级(Nic)
│ │ │ ├── network_adapter_upgrade.lua # 升级信号订阅与阶段入口
│ │ │ ├── upgrade_process.lua # Prepare/Process/Finish
│ │ │ ├── active_process.lua # 下电生效 Active
│ │ │ ├── upgrade_flash.lua # Flash 刷写
│ │ │ ├── firmware_objs_mgmt.lua # 固件对象登记
│ │ │ └── parser_cfg.lua # 升级包配置解析
│ │ ├── metric # 带宽数据采集
│ │ ├── dfx_collect # 光模块 DFX 信息采集
│ │ ├── prbs_test # PRBS 压测
│ │ ├── network_adapter_app.lua # 组件入口
│ │ └── ...
│ ├── lualib-src
│ │ └── ncsi_protocol # NCSI C 库实现
│ └── service
│ └── main.lua # 服务入口
├── mds/
│ ├── model.json # 资源协作接口模型定义
│ ├── ipmi.json # IPMI 命令定义(15 个命令)
│ └── service.json # 组件服务配置6. 组件扩展案例
6.1 新增 IPMI 命令
步骤一:在 mds/ipmi.json 中定义命令
{
"NewCommand": {
"netfn": "0x30",
"cmd": "0x93",
"priority": "Default",
"role": "Operator",
"privilege": ["ReadOnly"],
"req": [
{"data": "ManuId", "baseType": "U32", "len": "3B", "customizedRule": "Manufacturer"},
{"data": "SubCmd", "baseType": "U8", "len": "1B", "value": "0xXX"}
],
"rsp": [
{"data": "CompletionCode", "baseType": "U8", "len": "1B"},
{"data": "Data", "baseType": "String", "len": "*"}
]
}
}步骤二:在 device_manager.lua 中实现处理函数
function c_device_manager:new_command_from_ipmi(req, ctx)
local resp_data = {}
-- 解析请求数据
-- 执行业务逻辑
-- 构造响应数据
return resp_data
end步骤三:在 network_adapter_app.lua 中注册命令
self:register_ipmi_cmd(ipmi_struct.NewCommand, function(...)
return self.device_manager:new_command_from_ipmi(...)
end)6.2 新增网卡型号协议支持
步骤一:在 hardware_config/ 目录下创建新型号配置文件
-- hardware_config/NewModel.lua
local M = {}
function M.get_card_info()
-- 实现带外信息获取逻辑
end
return M步骤二:在网卡初始化流程中根据 Model 字段加载对应协议配置
网卡对象的 Model 属性决定使用哪种带外协议,在 nic_mgmt/card/card_init.lua 中根据 Model 匹配 hardware_config 下的配置文件。
6.3 新增配置导入导出属性
步骤一:注册导入导出处理器
local config_mgmt_engine = require 'config_mgmt.engine'
config_mgmt_engine.register_config_dealer('ClassName', self)步骤二:实现 import/export 方法
function c_my_object:import(ctx, obj_json)
self.PropertyName = obj_json.PropertyName
end
function c_my_object:export(ctx)
return { PropertyName = self.PropertyName }
end7. 日志说明
7.1 日志路径
| 日志路径 | 说明 |
|---|---|
/data/var/log/bmc/network_adapter.log | Network Adapter 组件主日志 |
/data/var/log/bmc/pciecard/ | PCIe 网卡日志收集目录 |
/data/var/log/bmc/optical_module/ | 光模块日志收集目录 |
/data/var/log/bmc/optical_module/optical_module_history_info_log.csv | 光模块历史信息采集文件 |
7.2 日志级别与关键字
| 级别 | 说明 | 关键字示例 |
|---|---|---|
| notice | 正常业务流程 | c_network_adapter start、c_network_port init start、add event successfully |
| info | 补充信息 | collect_netcard_info |
| warn | 警告 | — |
| error | 异常/错误 | get mac address fail、get events object failed、NCSI 相关错误 |
| debug | 调试信息 | NCSI 报文调试信息 |
7.3 关键日志说明
| 日志内容 | 含义 | 定位建议 |
|---|---|---|
c_network_adapter init start, NodeId(%s) | 网卡对象初始化开始 | 网卡不可见时检查是否有此日志 |
c_network_port init start | 网口对象初始化开始 | 网口信息异常时关注 |
c_optical_module init start | 光模块对象初始化开始 | 光模块信息异常时关注 |
card orm obj init start, NodeId is %s | 网卡 ORM 对象初始化 | 网卡识别异常时检查 CSR 配置 |
[Hi182x] optical module: %s init start | Hi182x 光模块初始化 | Hi182x 光模块问题定位 |
get mac address fail, cause data is invalid | IPMI 获取 MAC 地址失败 | 检查 FruId 和 MacId 参数 |
[network_adapter] reboot preparation completed | 组件重启准备完成 | 重启相关问题定位 |
[Network Adapter Upgrade] 系列日志 | 网卡固件升级流程 | 升级失败时按阶段排查 |
8. 问题定界指南
8.1 总体定界思路
8.2 网卡识别问题
现象:网卡不可见或信息为空
排查步骤:
- 检查 CSR 配置:确认
.sr文件中 NetworkAdapter 对象的 Model、SlotNumber、Type 等配置正确 - 检查 PCIe 设备:确认网卡的 PCIe 设备被正确识别
- 检查初始化日志:查看是否有
card orm obj init start和c_network_adapter init start日志 - 检查 MCTP 通信:对于 MCTP 网卡,确认 mctpd 组件正常运行bash
busctl --user get-property bmc.kepler.network_adapter \ /bmc/kepler/Systems/1/NetworkAdapters/0 \ bmc.kepler.Systems.NetworkAdapter SupportedMctp
8.3 网口信息异常
现象:网口链路状态不更新、MAC 地址为空、速率显示异常
排查步骤:
- 检查链路状态:
LinkStatus应为 Connected/LinkUp - 检查带外协议:确认网卡 Model 对应的
hardware_config协议配置正确 - 检查 BMA 数据:带内属性(IPv4/IPv6/DriverName 等)依赖 host_agent 数据推送
- 检查 NCSI 通信:查看 NCSI 相关错误日志
8.4 NCSI 通信异常
现象:BMC 无法通过 NCSI 网口进行通信
排查步骤:
- 检查 NCSI 网口注册:确认 network_adapter 已向 bmc_network 注册 NCSI 网口
- 检查 NCSI 通道 Tx 状态:切换到 NCSI 网口时 Tx 应被使能
- 检查 VLAN Filter:配置了 VLAN 后确认 vlan_filter 已正确设置
8.5 光模块信息异常
现象:光模块温度/功率信息不显示或显示异常
光模块信息与网卡/网口类似,数据来源分为带外与**带内(BMA)**两类:
| 来源 | 典型内容 | 实现路径 |
|---|---|---|
| 带外协议 | 温度、功率、偏置电流、电压、在位/可访问性、通道级诊断等 | NCSI over MCTP、SMBus(如 Hi182x)等,经 hardware_config 与网卡协议栈采集 |
| BMA 带内 | 基本信息、诊断信息、部分告警相关属性等 | 带内 → SMS → host_agent → network_adapter,handler_optical.lua / handler_optical_diag.lua 处理上报 |
排查步骤:
- 检查在位状态:
Presence=1表示在位(带外/BMA 均可更新,以实际生效源为准) - 检查可访问性:
Accessible=1表示带外可访问;为 0 时带外温度/功率等可能无效 - 检查网口介质类型:
MediumType=FiberOptic的网口才关联光模块 - 检查带外协议:确认网卡 Model 支持光模块带外读取,查看 MCTP/SMBus 通信及
[Hi182x] optical module相关日志 - 检查 BMA 数据:确认 host_agent 正常,光模块 BMA 资源上树/更新是否正常(
handler_optical/handler_optical_diag) - 检查初始化日志:查看
c_optical_module init start日志
8.6 数据不更新
现象:网卡/网口/光模块信息长时间不刷新
排查步骤:
- 检查周期采集任务:确认带外数据采集周期任务正常运行
- 检查 MCTP/SMBus 通信:查看日志中是否有通信失败
- BMA 数据不更新:确认 host_agent 组件正常运行
- 检查网卡电源状态:确认网卡供电正常
9. 常见问题解答
Q1:NCSI 网口切换后 BMC 无法通信,如何排查?
答:排查步骤:
- 确认 network_adapter 已识别网卡 NCSI 能力并注册 NCSI 网口
- 确认 bmc_network 切换网口时 network_adapter 收到信号并使能了 NCSI 通道 Tx
- 若配置了 VLAN,确认 vlan_filter 已正确设置
Q2:光模块信息显示为空,如何排查?
答:光模块属性可能来自带外或 BMA,需分别排查。常见原因:
- 网口未插入光模块(Presence=0)
- 光模块带外不可访问(Accessible=0),温度/功率等带外属性无效
- 带外协议通信异常,检查 MCTP/SMBus 及网卡
hardware_config是否支持光模块采集 - BMA 未上报或 host_agent 异常,检查
handler_optical/handler_optical_diag相关日志
Q3:某个属性值不符合预期,如何排查?
答:网卡、网口、光模块的属性可能来自带内(BMA)或带外协议,排查时应先确认数据来源,再分别验证对应链路。
步骤一:分析属性来源
| 来源 | 典型属性示例 |
|---|---|
| 带内(BMA) | IPv4/IPv6、驱动名称/版本、Bond/Bridge、部分光模块基本信息与诊断信息、OS 侧链路状态等 |
| 带外 | MAC 地址、链路状态、芯片/光模块温度、功率、偏置电流、带宽/速率能力、LLDP 等 |
可参考 mdb_interface 接口定义及组件 README.md 中各属性的获取方式;同一属性若带内、带外均有上报,需以代码实现中的更新优先级为准(例如部分网口属性 BMA 优先级更高)。
步骤二:带内属性不符合预期
- 确认 host_agent 组件运行正常,SMS 通道畅通
- 检查 host_agent 推送给 network_adapter 的 BMA 资源是否上树、是否有更新(上树/修改/下树)
- 查看
bma/handles/下对应 handler 日志(如handler_eth.lua、handler_optical.lua) - 在主机侧确认驱动、网口、光模块等带内信息本身是否正确
步骤三:带外属性不符合预期
- 确认网卡 Model 与
hardware_config/协议配置匹配,且支持该属性的带外采集 - 检查 mctpd(MCTP)或 hwproxy(SMBus/I2C)通信是否正常,日志中是否有读写失败
- 查看网卡/网口/光模块初始化及周期采集日志(如
c_network_adapter init start、NCSI/SMBus 相关错误)
步骤四:仍无法定位
对比 D-Bus 当前属性值与带内/带外原始数据,确认是采集未更新、解析错误,还是北向展示映射问题。
Q4:如何适配新型号网卡?
答:适配步骤:
- 在
hardware_config/目录下创建新型号协议配置文件 - 在 CSR 中配置 NetworkAdapter 对象,设置正确的 Model、VendorID、DeviceID 等
- 确认带外通信通道(MCTP Endpoint 或 SMBus Chip)配置正确
- 验证带外信息获取和 NCSI 功能(如适用)