【公示中,下次评议时间7.28】网卡驱动规范v0.1

网卡驱动规范V1.0

:warning: 注意!
本驱动规范定义了网卡部件需实现的驱动接口,目前面向社区进行意见征集,欢迎大家反馈。

概述

openUBMC的核心业务在于管理各种服务器上会使用到的硬件,因此设计了一种针对多样形态的硬件访问、管理驱动,确保openUBMC在不变更各种硬件管理增值业务的前提下,仍然可以快速适配海量硬件,扩展openUBMC的管理边界。

openUBMC引入了南向部件驱动的概念,部件厂商按照南向部件驱动接口规范实现对应的功能,即可快速被BMC纳管,达到不发布版本的硬件接入。


1 网卡部件驱动对象定义

1.1 PCIe网卡相关定义

简介: PCIeNicCard指基于openUBMC管理的PCI Express卡形式的网络接口控制器(Network Interface Controller),位于服务器的抬升卡上(Riser),与计算板通过PCI-e链路连接起来。

设备特有器件:

  • NIC板卡本身
  • NIC卡上的网口
  • 光口和光口上的光模块
1.1.1 PCIeNicCard对象

说明: 描述整体PCIeNic卡自身的对象
对象路径:/bmc/dev/Systems/1/PCIeNicCard/{NicID}
类: Component(组件)

interface 说明 可选/必选
bmc.dev.PCIeDevice 描述PCIe设备的接口 必选
bmc.dev.PCIeCard 描述PCIe标卡的接口 必选
bmc.dev.PCIeDevice.HotSwap 描述网络适配器热交换能力 可选
bmc.dev.PCIeDevice.Bandwidth 描述网络适配器带宽信息 可选
bmc.dev.NetworkAdapter 描述网络适配器自身的接口 必选
bmc.dev.NetworkAdapter.Cooling 描述网络适配器整体的温度管理 必选
bmc.dev.NetworkAdapter.FaultStatus 描述网络适配器错误信息 可选
bmc.dev.NetworkAdapter.LogCollection 描述网络适配器日志收集信息 可选
bmc.dev.Board 描述对应Board信息 必选
bmc.dev.Fru 描述对应Fru信息 可选
1.1.2 NetworkPort对象

说明: 描述整体PCIe网口的对象
对象路径:/bmc/dev/Systems/1/PCIeNicCard/{NicID}/NetworkPort/{PortID}
类:Chip(器件)

interface 说明 可选/必选
bmc.dev.NetworkPort 描述网口设备自身的接口 必选
bmc.dev.NetworkPort.LinkInfo 描述网口设备连接信息 必选
bmc.dev.NetworkPort.DataCenterBridging 描述网口设备DCB信息 可选
bmc.dev.NetworkPort.LLDPReceive 描述网口设备LLDP信息 可选
bmc.dev.NetworkPort.Metrics 描述网口设备统计信息 可选
1.1.3 OpticalModule对象

说明: 描述整体网口的光口属性以及对应光模块的对象
对象路径:/bmc/dev/Systems/1/PCIeNicCard/{NicID}/NetworkPort/{PortID}/OpticalModule
类:Chip(器件)

interface 说明 可选/必选
bmc.dev.OpticalModule 描述光模块设备的接口 必选
bmc.dev.OpticalModule.Status 描述光模块设备状态信息 可选
bmc.dev.OpticalModule.Cooling 描述光模块的温度管理 可选

2 网卡部件接口详细信息

2.1 PCIe设备相关接口

2.1.1 bmc.dev.PCIeDevice
属性名 类型 可读写 信号通知 描述
DeviceName String 只读 设备资源名称
FunctionClass U8 只读 功能分类(0:未知、1:RAID、2:网卡、3:GPU卡、4:存储卡(SSD卡/M.2卡)、5:SDI卡、6:加速卡、7:扩展卡(PCIe Riser)、8:FPGA卡、9:NPU卡)
VendorId String 只读 制造商ID
DeviceId String 只读 设备ID
SubSystemVendorId String 只读 子厂商ID
SubSystemDeviceId String 只读 子设备ID
Location String 只读 当前PCIe的物理位置,如PCieRiser1,ExpBoard等
Slot U8 只读 PCIe设备的物理槽位号
Segment U8 只读 用于多PCI Bridge场景的编号,每一个Segment对应一个PCI Bus空间
SocketId U8 只读 PCIe设备所属CPU ID
Bus U8 只读 PCIe Root Port的总线号
Device U8 只读 PCIe Root Port的设备号
Function U8 只读 PCIe Root Port的功能号
DevBus U8 读写 设备的总线号
DevDevice U8 读写 设备的设备号
DevFunction U8 读写 设备的功能号
UCEByBIOS U8 只读 BIOS上报不可纠正错误标识
BandwidthReduction U8 只读 PCIE降带宽检测失败上报事件属性
LinkSpeedReduced U8 只读 PCIe设备降速率检测告警上报事件属性(BIOS上报)
2.1.2 bmc.dev.PCIeCard
属性名 类型 可读写 信号通知 描述
Name String 只读 PCIE标卡产品名称
Model String 只读 PCIE标卡产品型号
Manufacturer String 只读 厂商
PartNumber String 只读 部件编码
Description String 只读 描述
PcbVersion String 只读 PCB版本号
SerialNumber String 读写 序列号
PredictiveFault U8 读写 预测故障标志位
DiagnosticFault U8 读写 故障诊断定位标志位
SpecialPcieCard Boolean 只读 特殊PCIE卡标志
2.1.3 bmc.dev.PCIeDevice.HotSwap
属性名 类型 可读写 信号通知 描述
HotSwappable Boolean 只读 是否支持热插拔
ReadyToRemove U8 只读 热交换器件的电源状态,0:下电;1:上电
2.1.4 bmc.dev.PCIeDevice.Bandwidth
属性名 类型 可读写 信号通知 描述
LinkWidthCapability String 只读 变更广播 最大链路带宽
LinkWidth String 只读 变更广播 链路带宽
LinkSpeedCapability String 只读 变更广播 最大链路速率
LinkSpeed String 只读 变更广播 链路速率
BandwidthThresholdPercent U16 只读 变更广播 网络带宽占用率门限

2.2 网络适配相关接口

2.2.1 bmc.dev.NetworkAdapter
属性名 类型 可读写 信号通知 描述
Manufacturer String 只读 网卡生产厂商
ChipModel String 只读 网卡芯片号
Description String 只读 网卡描述信息
ChipVendor String 只读 网卡芯片生产厂商
NetworkPortCount U8 只读 网卡下的网口数量
SupportedMctp Boolean 只读 网卡芯片是否支持mctp协议
SupportedLldp Boolean 只读 网卡芯片是否支持通过mctp接收lldp报文
FirmwareVersion String 读写 网卡固件版本
Type U8 只读 网卡类型
2.2.2 bmc.dev.NetworkAdapter.Cooling
属性名 类型 可读写 信号通知 描述
TemperatureCelsius S16 只读 变更广播 网卡芯片温度
TemperatureStatus U8 只读 变更广播 网卡芯片温度获取状态,0:正常;1:异常;2:不涉及
MaxSFPTemperatureCelsius S16 只读 变更广播 网卡光模块温度最大值,供调速使用
MaxSFPTemperatureStatus U8 只读 变更广播 网卡光模块温度最大值获取状态,供调速使用
2.2.3 bmc.dev.NetworkAdapter.FaultStatus
属性名 类型 可读写 信号通知 描述
Health U8 读写 网卡健康状态, 0:OK, 1:Minor, 2:Major, 3:Critical
FaultCode String 只读 变更广播 网卡故障码列表
FaultState U32 只读 网卡故障状态 0:正常;1:故障
2.2.4 bmc.dev.NetworkAdapter.LogCollection

接口 1:DumpErrorLog
接口说明: 收集网卡错误日志
入参说明:

名称 类型 描述
Path String Dump日志文件路径

返回值说明:

名称 类型 描述
TaskId U32 DumpErrorLog Task Id

接口 2: DumpLastWordLog
接口说明::收集网卡最后状态信息日志
入参说明:

名称 类型 描述
Path String Dump日志文件路径

返回值说明:

名称 类型 描述
TaskId U32 DumpLastWordLog Task Id

接口 3: DumpRunningLog
接口说明::收集网卡运行日志
入参说明:

名称 类型 描述
Path String Dump日志文件路径

返回值说明:

名称 类型 描述
TaskId U32 DumpRunningLog Task Id

接口 4: DumpBlackBoxLog(新增)
接口说明::收集黑匣子日志
入参说明:

名称 类型 描述
Path String Dump日志文件路径

返回值说明:

名称 类型 描述
TaskId U32 DumpBlackBoxLog Task Id

2.3 板卡相关接口

2.3.1 bmc.dev.Board
属性名 类型 可读写 信号通知 描述
Location String 只读 变更广播 所在板卡位置
Slot U8 只读 变更广播 槽位号
Name String 只读 变更广播 板名
Description String 只读 变更广播 板卡具体描述
Id U16 只读 变更广播 board id,天池组件为65535
Type String 只读 变更广播 板卡类型全名,例如 EXpBoard CpuBoard
PartNumber String 只读 变更广播 部件号
LogicRunningStatus U8 只读 变更广播 板上逻辑状态, 0:正常运行,1状态异常
CurrentUpgradeStatus U8 只读 变更广播 0表示未在升级,1:mcu正在升级,2cpld正在升级

2.4 网口相关接口

2.4.1 bmc.dev.NetworkPort
属性名 类型 可读写 信号通知 描述
PortId U8 只读 当前网卡上的网口ID
MACAddress String 读写 网口的mac地址
PermanentMACAddress String 读写 网口的初始mac地址(当前NIC卡是通过bios设置的)
BDF String 读写 网口的总线信息
NetDevFuncType U8 只读 网络设备功能类型 0:Disabled 1:Ethernet 2:FC 4:iSCSI 8:FCoE 16:OPA 32:IB,网口不能同时工作于两种模式
MediumType String 只读 网络接口类型,电口:Copper;光口:FiberOptic
MaxSpeedSupported String 只读 网口支持的最大速率
WorkloadType U8 只读 工作负载, 0:负载服务器os; 1:负载智能网卡的os; 2:服务器os及只能网卡os均卸载

接口 1: SendNcsiTestPacket(新增)
接口说明::发送NCSI测试报文,用于测试连通性
入参说明:

名称 类型 描述
CmdCode U8 命令码
ReqData String 请求数据

返回值说明:

名称 类型 描述
Result Boolean 测试结果:成功或失败
2.4.2 bmc.dev.NetworkPort.DataCenterBridging
属性名 类型 可读写 信号通知 描述
Up2cos U8[] 只读 DCB 信息中的 Up2cos(各优先级映射到的cos组)
Uppgid U8[] 只读 DCB 信息中的 Pgid(各优先级带宽组的ID)
Pgpct U8[] 只读 DCB 信息中的 PGPCT(各优先级带宽组的带宽比)
PgStrict U8[] 只读 DCB 信息中的PgStrict(严格优先级)
Pfcmap U8 只读 DCB 信息中的 Pfcmap(priority-flow-control map)
2.4.3 bmc.dev.NetworkPort.FibreChannel
属性名 类型 可读写 信号通知 描述
FCId String 读写 fc id信息
WWNN String 读写 当前生效wwnn号
DefaultWWNN String 只读 出厂wwnn号
WWPN String 读写 当前生效wwpn号
DefaultWWPN String 只读 出厂wwpn号
SpeedGbps U32 只读 端口链接速率,单位Gb,用于FC卡
2.4.4 bmc.dev.NetworkPort.LLDPReceive
属性名 类型 可读写 信号通知 描述
LLDPEnabled Boolean 只读 变更广播 端口LLDP使能模式 false - 未使能 true - 使能
ChassisId String 只读 从网络交换机接收到的Chassis ID
ChassisIdSubtype String 只读 从网络交换机接收到的Chassis ID类型
PortId String 只读 从网络交换机接收到的端口ID
PortIdSubtype String 只读 从网络交换机接收到的端口ID类型
SystemName String 只读 网络交换机名称
ManagementVlanId U16 只读 从网络交换机接收到的VLAN ID
2.4.5 bmc.dev.NetworkPort.LinkInfo
属性名 类型 可读写 信号通知 描述
LinkStatus U8 只读 变更广播 网口连接状态,0:LinkDown;1:LinkUp;2:NoLink
SpeedMbps U32 读写 网口链路速率 单位Mbps
FullDuplex Boolean 只读 网口是否开启全双工
AutoSpeedNegotiation Boolean 只读 网口是否处于自协商模式
2.4.6 bmc.dev.NetworkPort.Metrics
属性名 类型 可读写 信号通知 描述
RXFrames U64 读写 获取报文统计信息
TXFrames U64 读写 发送的报文统计
RXUnicastFrames U64 只读 收到的单播报文数量
RXMulticastFrames U64 只读 收到的多播报文数量
RXBroadcastFrames U64 只读 收到的广播报文数量
TXUnicastFrames U64 只读 发送单播报文数量
TXMulticastFrames U64 只读 发送的多播报文数量
TXBroadcastFrames U64 只读 发送的广播报文数量
RXFCSErrors U64 只读 接收到的 Frame Check Sequence 错误数量
RXUndersizeFrames U64 只读 接收到的超小帧数量
RXOversizeFrames U64 只读 接收到的巨型帧(大于1518 字节)数量
TXSingleCollisions U64 只读 发送的单碰撞帧数量
TXMultipleCollisions U64 只读 发送的多碰撞帧数量
TXLateCollisions U64 只读 发送的 late 碰撞帧数量
TXExcessiveCollisions U64 只读 发送的 Excessive 碰撞帧数量
RXFrameAlignmentErrors U64 只读 一个数据帧尾没有形成一个完整的 Byte,即帧长非整数(不能被 8bit 整除),网管上计为接收(发送)对齐错误
BandwidthUsagePercent Double 只读 网络带宽占用率
PacketsDropped U64 只读 丢包总数
2.4.7 bmc.dev.NetworkPort.NpuInfo
属性名 类型 可读写 信号通知 描述
LinkStatusValue U8 只读 变更广播 连接状态值
NpuID U8 只读 NPU的ID
PowerOn U8 只读 电源状态

2.5 光模块相关接口

2.5.1 bmc.dev.OpticalModule
属性名 类型 可读写 信号通知 描述
Manufacturer String 读写 厂商名称
PartNumber String 读写 厂商部件名称
SerialNumber String 读写 厂商序列号
RevisionNumber String 读写 产品修订版本号
ProductionDate String 读写 生产日期
WaveLengthNanometer String 读写 波长
Identifier String 只读 光模块的识别码
ConnectorType String 只读 光模块的连接器类型
MediumType String 只读 光模块的介质类型
TransmissionDistance U16 只读 传输距离
RxLossStatus Boolean 只读 光模块 Rx 端是否有信号
TxLossStatus Boolean 只读 光模块 Tx 端是否有信号
TxFaultStatus Boolean 只读 光模块 Tx 端是否故障
Presence U8 读写 变更广播 光模块在位信息
TransceiverType String 只读 收发器类型
ChannelNum U8 只读 光模块内部通道数
RxSNR Double[] 只读 端口接收信噪比
HostSNR Double[] 只读 主机侧信噪比
MediaSNR Double[] 只读 介质侧信噪比
Accessible U8 只读 光模块是否可访问,0为不可访问,1为可访问
2.5.2 bmc.dev.OpticalModule.Status
属性名 类型 可读写 信号通知 描述
PowerState U8 只读 变更广播 功率异常标志位
FaultState U32 只读 变更广播 故障状态
RxPowerMilliWatts Double[] 读写 Rx接收功率
RXPowerUpperThresholdCritical Double 读写 Rx接收功率上限阈值
RXPowerLowerThresholdCritical Double 只读 变更广播 接收功率告警下限阈值
TXPowerMilliWatts Double[] 读写 Tx发送功率
TXPowerLowerThresholdCritical Double 只读 变更广播 发送功率告警下限阈值
TXPowerUpperThresholdCritical Double 读写 Tx发送功率上限阈值
TXBiasCurrentMilliAmps Double[] 读写 Tx接收电流
TXBiasCurrentLowerThresholdCritical Double 只读 变更广播 发送偏置电流告警下限阈值
TXBiasCurrentUpperThresholdCritical Double 只读 变更广播 发送偏置电流告警上限阈值
BiasCurrentTXUpperThresholdWarning Double[] 读写 变更广播 发送偏置电流警告上限阈值
BiasCurrentTXLowerThresholdWarning Double[] 读写 变更广播 发送偏置电流警告下限阈值
PowerTXUpperThresholdWarning Double[] 读写 变更广播 发送功率警告上限阈值
PowerTXLowerThresholdWarning Double[] 读写 变更广播 发送功率警告下限阈值
PowerRXUpperThresholdWarning Double[] 读写 变更广播 接收功率警告上限阈值
PowerRXLowerThresholdWarning Double[] 读写 变更广播 接收功率警告下限阈值
TemperatureLowerThresholdWarning Double[] 读写 变更广播 低温警告阈值
TemperatureUpperThresholdWarning Double[] 读写 变更广播 高温警告阈值
VoltageLowerThresholdWarning Double[] 读写 变更广播 低压警告阈值
VoltageUpperThresholdWarning Double[] 读写 变更广播 高压警告阈值
2.5.3 bmc.dev.OpticalModule.Cooling
属性名 类型 可读写 信号通知 描述
TemperatureCelsius Double 只读 变更广播 光模块温度
TemperatureStatus U8 只读 变更广播 光模块温度获取状态
TemperatureLowerThresholdCritical Double 只读 变更广播 温度下限阈值
TemperatureUpperThresholdCritical Double 只读 变更广播 温度上限阈值
2.5.4 bmc.dev.OpticalModule.Diagnose
属性名 类型 可读写 信号通知 描述
RxLossOfLock U8 只读 变更广播 接受方向的CDR失败状态
TxLossOfLock U8 只读 变更广播 发送方向的CDR失败状态
LaserRuntimeSeconds U32 只读 激光器运行时间,单位:秒
LaserTemperatureCelsius Double 只读 激光器管芯温度
PowerOnCount U16 只读 模块上电次数
UptimeSeconds U32 只读 模块上电时间,单位:秒
PowerStatus U16 只读 模块上电状态
OdspDieTemperatureCelsius Double 只读 ODSP结温
OdspHighTempRuntimeSeconds U32 只读 ODSP高温运行时间,单位:秒
SelfTestStatus U64 只读 变更广播 光模块自体诊断告警状态,轻微隐患和严重故障各32bit
MediaInterfaceFaultStatus U16 只读 变更广播 光链路告警状态,轻微隐患和严重故障各8bit,每个bit分别代表通道1至8状态,0代表正常,1代表有错误信息
HostInterfaceFaultStatus U16 只读 变更广播 电链路告警状态,轻微隐患和严重故障各8bit,每个bit分别代表通道1至8状态,0代表正常,1代表有错误信息
RxLoS U32 只读 变更广播 接收端LoS(信号丢失);每个bit对应一个通道,某个bit取值1表示是对应通道故障;当前光模块最多8通道,属性预留32位便于扩展
TxLoS U32 只读 变更广播 发送端LoS(信号丢失);每个bit对应一个通道,某个bit取值1表示是对应通道故障;当前光模块最多8通道,属性预留32位便于扩展
TxFault U32 只读 变更广播 发送错误;每个bit对应一个通道,某个bit取值1表示是对应通道故障;当前光模块最多8通道,属性预留32位便于扩展
PRBSTestSupported Boolean 只读 变更广播 此光模块是否支持PRBS压测
FiberDirtyDetected Boolean 只读 变更广播 光模块是否脏污
FiberLoosenessDetected Boolean 只读 变更广播 光模块是否松动
2.5.5 bmc.dev.OpticalModule.Voltage
属性名 类型 可读写 信号通知 描述
SupplyVoltage Double 读写 光模块供电电压
VoltageLowerThresholdCritical Double 读写 低压告警阈值
VoltageUpperThresholdCritical Double 读写 高压告警阈值
VoltageLowerThresholdWarning Double 读写 低压警告阈值
VoltageUpperThresholdWarning Double 读写 高压警告阈值

2.6 Fru相关接口

2.6.1 bmc.dev.Fru
属性名 类型 可读写 信号通知 描述
GroupId U32 只读 变更广播 连接器的groupid,从上级连接器获取${GroupId}
Name String 只读 变更广播 Fru的名称
FruId U8 只读 变更广播 fruid配置为1-63会自动分配fruid,默认可以配为1,fruid为0保留给挂耳,配置64-255不会进行fruid分配
PcbId U8 只读 变更广播 PCB板ID