网卡配置指南

网卡配置指南

:open_book: 文档说明

新适配一张网卡需要做什么

新增一个sr文件

这个sr文件是用来告诉openUBMC如何识别、管理和监网卡的"说明书"。就像给电脑安装新硬件时需要驱动程序一样,这个配置文件告诉BMC:

  • 网卡的名称以及型号等固定信息
  • 网卡支持什么带外协议
  • 如何监控网卡的工作状态
  • 出现什么问题时需要上报告警
  • 管理网卡的传感器

为什么需要这个配置文件?

  1. 设备识别:让BMC可以识别安装了什么网卡
  2. 状态监控:实时监控网卡,网口,光模块的温度等信息
  3. 故障预警:当网卡出现问题时及时告警
  4. 维护支持:方便技术人员进行维护和故障排查

如何配置这个文件?

第一步:了解需要配置的网卡

  • 查看网卡型号(通常在网卡上会标注)
  • 确认网卡类型(PCIe、OCP、板载等)
  • 记录网卡的基本信息(四元组等)
  • 热设计

第二步:修改配置文件

  1. 基础信息配置(第1节)
    • 配置正确的文件名称,根据BOM+四元组信息组成对应网卡的文件名
    • 填写网卡名称和型号
    • 选择正确的网卡类型
    • 输入厂商和设备ID

以上步骤配置完成后网卡可加载起来

  1. 端口/光模块配置(第2节)

    • 设置网卡端口数量
    • 配置端口类型(光纤、铜缆等)
    • 配置光模块关联端口
  2. 监控配置(第3节)

    • 设置温度监控阈值,用于告警或调速
    • 配置电压和功率监控,如告警或传感器
    • 设置状态监控参数
  3. 其余配置(第4节)

    • 配置故障报警条件
    • 设置LED指示灯代码
    • 定义报警级别
  4. 带外信息获取

    • 在 NetworkAdapter对象下有一个Model属性,该属性用于配合社区组件network_adapter加载并指定协议获取网卡带外信息
    • 目前社区已支持协议smbus、ncsi/pldm over mctp等
    • 如果需要新增厂商自定义协议等,可以上sig-hardware申报议题,后续会在社区提供适配新协议的指导说明

对配置有疑问或者需要支撑的可以在当前话题评论或新增话题我们将尽快回复您

1. 基础设备对象

1.1 PCIe设备对象 (PCIeDevice_1)

{
    "PCIeDevice_1": {
        "DeviceName": "PCIe Card $ (设备型号)",
        "FunctionClass": 2,  // 功能类型
        "PCIeDeviceType": "MultiFunction",  // 设备类型
        "SlotType": "FullLength",  // 插槽类型
        "FunctionProtocol": "PCIe",  // 协议类型
        "FunctionType": "Physical"  // 功能类型
    }
}
  • 用途:定义PCIe设备的基本属性和类型
  • 必需配置:是
  • 关键属性
    • 设备名称
    • 功能类型
    • 设备类型
    • 插槽类型

1.2 网卡对象 (PCIeCard_1)

{
    "PCIeCard_1": {
        "Name": "设备型号",
        "Description": "设备描述",
        "VendorID": "厂商ID",
        "DeviceID": "设备ID",
        "Manufacturer": "制造商",
        "PartNumber": "部件号",
        "Model": "型号",
        "FirmwareVersion": "固件版本",
        "SerialNumber": "序列号"
    }
}
  • 用途:定义网卡的基本信息和属性
  • 必需配置:是
  • 关键属性
    • 名称
    • 描述
    • 厂商ID
    • 设备ID
    • 制造商信息

1.3 网络适配器对象 (NetworkAdapter_1)

{
    "NetworkAdapter_1": {
        "Name": "适配器名称",
        "Description": "适配器描述",
        "NetworkPortCount": "端口数量",
        "VendorID": "厂商ID",
        "DeviceID": "设备ID",
        "SupportedMctp": true,  // 是否支持MCTP
        "SupportedLLDP": true,  // 是否支持LLDP
        "HotPluggable": false,  // 是否支持热插拔
        "LinkWidth": "链路宽度",
        "LinkSpeed": "链路速度"
    }
}
  • 用途:定义网络适配器的功能和特性
  • 必需配置:是
  • 关键属性
    • 名称
    • 描述
    • 端口数量
    • 支持特性

1.4 网卡类型对象

根据网卡类型的不同,会使用不同的对象类型:

1.4.1 标准PCIe网卡对象 (BoardPCIeCard_1)

{
    "BoardPCIeCard_1": {
        "Slot": 1,
        "UID": "N/A",
        "Name": "网卡名称",
        "Manufacturer": "制造商",
        "Type": "PCIeCard",
        "Description": "网卡描述",
        "PartNumber": "部件号",
        "BoardType": "BoardPCIeCard",
        "Number": 1,
        "DeviceName": "<=/PCIeDevice_1.DeviceName",
        "Position": "<=/PCIeDevice_1.Position",
        "LinkWidthCapability": "<=/NetworkAdapter_1.LinkWidthCapability",
        "LinkSpeedCapability": "<=/NetworkAdapter_1.LinkSpeedCapability",
        "LinkWidth": "<=/NetworkAdapter_1.LinkWidth",
        "LinkSpeed": "<=/NetworkAdapter_1.LinkSpeed",
        "BoardNodeId": "<=/PCIeDevice_1.DeviceName",
        "FruID": "<=/Fru_PCIeCard.FruId"
    }
}
  • 用途:用于标准PCIe网卡
  • 适用场景:普通PCIe网卡
  • 关键属性
    • 插槽信息
    • 链路能力
    • 板卡类型
    • FRU信息

1.4.2 OCP网卡对象 (OCPCard_1)

{
    "OCPCard_1": {
        "Slot": 1,
        "UID": "N/A",
        "Name": "OCP网卡名称",
        "Manufacturer": "制造商",
        "Type": "OCPCard",
        "Description": "OCP网卡描述",
        "PartNumber": "部件号",
        "BoardType": "OCPCard",
        "Number": 1,
        "DeviceName": "<=/PCIeDevice_1.DeviceName",
        "Position": "<=/PCIeDevice_1.Position",
        "LinkWidthCapability": "<=/NetworkAdapter_1.LinkWidthCapability",
        "LinkSpeedCapability": "<=/NetworkAdapter_1.LinkSpeedCapability",
        "LinkWidth": "<=/NetworkAdapter_1.LinkWidth",
        "LinkSpeed": "<=/NetworkAdapter_1.LinkSpeed",
        "BoardNodeId": "<=/PCIeDevice_1.DeviceName",
        "FruID": "<=/Fru_PCIeCard.FruId"
    }
}
  • 用途:用于OCP(Open Compute Project)网卡
  • 适用场景:OCP规格网卡
  • 关键属性
    • OCP特定属性
    • 链路能力
    • 板卡类型
    • FRU信息

1.4.3 板载网卡对象 (BoardNICCard_1)

{
    "BoardNICCard_1": {
        "Slot": 1,
        "UID": "N/A",
        "Name": "板载网卡名称",
        "Manufacturer": "制造商",
        "Type": "NICCard",
        "Description": "板载网卡描述",
        "PartNumber": "部件号",
        "BoardType": "BoardNICCard",
        "Number": 1,
        "DeviceName": "<=/PCIeDevice_1.DeviceName",
        "Position": "<=/PCIeDevice_1.Position",
        "LinkWidthCapability": "<=/NetworkAdapter_1.LinkWidthCapability",
        "LinkSpeedCapability": "<=/NetworkAdapter_1.LinkSpeedCapability",
        "LinkWidth": "<=/NetworkAdapter_1.LinkWidth",
        "LinkSpeed": "<=/NetworkAdapter_1.LinkSpeed",
        "BoardNodeId": "<=/PCIeDevice_1.DeviceName",
        "FruID": "<=/Fru_PCIeCard.FruId"
    }
}
  • 用途:用于板载网卡
  • 适用场景:主板集成网卡
  • 关键属性
    • 板载特定属性
    • 链路能力
    • 板卡类型
    • FRU信息

1.5 网卡类型选择指南

  1. 标准PCIe网卡 (BoardPCIeCard_1)

    • 适用于独立的PCIe网卡
  2. OCP网卡 (OCPCard_1)

    • 适用于OCP规格的网卡
  3. 板载网卡 (BoardNICCard_1)

    • 适用于主板集成的网卡

2. 端口对象

2.1 网络端口对象 (NetworkPort_X)

{
    "NetworkPort_0": {
        "@Parent": "NetworkAdapter_1",
        "SystemID": 1,
        "PortID": 0,
        "NetDevFuncType": "设备功能类型",
        "MediumType": "FiberOptic",  // 介质类型
        "SupportedLinkCapability": "链路能力"
    }
}
  • 用途:定义网络端口属性和能力
  • 必需配置:是
  • 关键属性
    • 端口ID
    • 介质类型
    • 链路能力

2.2 光学模块对象 (OpticalModule_X)

{
    "OpticalModule_0": {
        "@Parent": "NetworkPort_0",
        "ChannelNum": 1,
        "TemperatureCelsius": 0,
        "PowerState": 0,
        "IsSupportedType": 0,
        "Temp_UpperThresholdCritical": 125
    }
}
  • 用途:定义光学模块属性和监控参数
  • 必需配置:对于光纤网卡是必需的
  • 关键属性
    • 通道号
    • 温度
    • 电源状态
    • 阈值

3. 监控对象

传感器定制与开发请参考传感器定制与开发进行配置,以下仅举例网卡相关传感器

3.1 阈值传感器对象 (ThresholdSensor)

{
    "ThresholdSensor_Temp": {
        "AssertMask": 128,
        "DeassertMask": 28800,
        "ReadingMask": 2056,
        "Linearization": 0,
        "M": 100,
        "RBExp": 224,
        "UpperNoncritical": 105,
        "PositiveHysteresis": 2,
        "NegativeHysteresis": 2
    },
    "ThresholdSensor_Voltage": {
        "AssertMask": 128,
        "DeassertMask": 28800,
        "ReadingMask": 2056,
        "Linearization": 0,
        "M": 100,
        "RBExp": 224,
        "LowerNoncritical": 3.0,
        "UpperNoncritical": 3.6,
        "PositiveHysteresis": 0.1,
        "NegativeHysteresis": 0.1
    },
    "ThresholdSensor_Power": {
        "AssertMask": 128,
        "DeassertMask": 28800,
        "ReadingMask": 2056,
        "Linearization": 0,
        "M": 100,
        "RBExp": 224,
        "UpperNoncritical": 25,
        "PositiveHysteresis": 1,
        "NegativeHysteresis": 1
    }
}
  • 用途:用于监控连续变化的物理量
  • 适用场景
    • 温度监控
    • 电压监控
    • 功率监控
  • 关键属性
    • 阈值设置
    • 滞后值
    • 线性化参数

3.2 离散传感器对象 (DiscreteSensor)

{
    "DiscreteSensor_Presence": {
        "AssertMask": 1,
        "DeassertMask": 2,
        "ReadingMask": 3,
        "Type": 0
    },
    "DiscreteSensor_PowerState": {
        "AssertMask": 4,
        "DeassertMask": 8,
        "ReadingMask": 12,
        "Type": 0
    },
    "DiscreteSensor_FaultState": {
        "AssertMask": 16,
        "DeassertMask": 32,
        "ReadingMask": 48,
        "Type": 0
    }
}
  • 用途:用于监控离散状态
  • 适用场景
    • 设备在位状态
    • 电源状态
    • 故障状态
  • 关键属性
    • 状态掩码
    • 类型定义

3.3 散热控制对象 (CoolingRequirement_X)

{
    "CoolingRequirement_1_50": {
        "Description": "网卡芯片调速",
        "MonitoringStatus": "监控状态",
        "TargetTemperatureCelsius": 90,
        "MaxAllowedTemperatureCelsius": 102
    }
}
  • 用途:定义散热控制参数
  • 必需配置:是
  • 关键属性
    • 目标温度
    • 最大允许温度

4. 事件对象

精细化告警开发请参考事件定制进行配置,以下仅举例网卡相关告警

4.1 基本事件对象

{
    "Event_PCIeBandWidth": {
        "EventKeyId": "PCIeCard.PCIeCardBandWidthDecreased",
        "xxx": "xxxx"
    },
    "Event_PCIeLinkSpeed": {
        "EventKeyId": "PCIeCard.PCIeCardLinkSpeedReduced",
        "xxx": "xxxx"
    },
    "Event_PCIeCardUCE": {
        "EventKeyId": "PCIeCard.PCIeCardUncorrectableErr",
        "xxx": "xxxx"
    }
}
  • 用途:定义基本事件监控
  • 必需配置:否

4.2 温度相关事件

{
    "Event_OverTemp": {
        "EventKeyId": "PCIeCard.PCIeCardOverTemp",
        "xxx": "xxxx"
    },
    "Event_TempFail": {
        "EventKeyId": "PcieCard.PCIeCardTempFail",
        "xxx": "xxxx"
    },
    "Event_TempSensorFail": {
        "EventKeyId": "PcieCard.PCIeCardTempSensorFail",
        "xxx": "xxxx"
    }
}

4.3 电源相关事件

{
    "Event_PowerFail": {
        "EventKeyId": "PCIeCard.PCIeCardPowerFail",
        "xxx": "xxxx"
    },
    "Event_VoltageAlarm": {
        "EventKeyId": "PCIeCard.PCIeCardVoltageAlarm",
        "xxx": "xxxx"
    },
    "Event_PowerOverload": {
        "EventKeyId": "PCIeCard.PCIeCardPowerOverload",
        "xxx": "xxxx"
    }
}

4.4 端口相关事件

{
    "Event_Port1LinkDown": {
        "EventKeyId": "Port.PortDisconnected",
        "xxx": "xxxx"
    },
    "Event_OM1PowerAlarm": {
        "EventKeyId": "Port.PortOpticalModulePowerAlarm",
        "xxx": "xxxx"
    },
    "Event_OM1SpeedMatch": {
        "EventKeyId": "Port.PortOpticalModuleSpeedMismatch",
        "xxx": "xxxx"
    },
    "Event_Port1BWUsageMntr": {
        "EventKeyId": "NICCard.SystemNetworkBandwidthUsageHigh",
        "xxx": "xxxx"
    }
}

4.5 设备状态事件

{
    "Event_DevicePresence": {
        "EventKeyId": "PCIeCard.PCIeCardPresence",
        "xxx": "xxxx"
    },
    "Event_PowerState": {
        "EventKeyId": "PCIeCard.PCIeCardPowerState",
        "xxx": "xxxx"
    },
    "Event_FaultState": {
        "EventKeyId": "PCIeCard.PCIeCardFaultState",
        "xxx": "xxxx"
    }
}

4.6 事件配置说明

  • EventKeyId:事件唯一标识符
  • Condition:触发条件
    • 数值:直接触发条件
    • 表达式:基于传感器值的条件
  • Hysteresis:滞后值,防止频繁触发
  • LedFaultCode:故障LED指示代码

5. 硬件管理对象

5.1 FRU对象 (Fru_PCIeCard)

{
    "Fru_PCIeCard": {
        "PcbId": "PCB ID",
        "FruId": 1,
        "FruName": "FRU名称",
        "ConnectorGroupId": "连接器组ID",
        "BoardId": 255
    }
}
  • 用途:定义FRU信息
  • 必需配置:是
  • 关键属性
    • FRU ID
    • 名称
    • PCB ID

5.2 芯片对象 (Chip_X)

{
    "Chip_Hi1822": {
        "OffsetWidth": 0,
        "AddrWidth": 1,
        "Address": 232,
        "WriteTmout": 100,
        "ReadTmout": 100
    }
}
  • 用途:定义芯片访问参数
  • 必需配置:是
  • 关键属性
    • 地址
    • 超时时间

6. 管理拓扑对象

6.1 管理总线对象

{
    "ManagementTopology": {
        "Anchor": {
            "Buses": [
                "I2cMux_Chan"
            ]
        }
    }
}
  • 用途:定义管理总线拓扑
  • 必需配置:是
  • 关键属性
    • 总线类型
    • 通道
8 个赞

文档已被收集至社区文档中心。https://gitcode.com/openUBMC/docs/pull/84
归档此文章

1 个赞