网卡上的光模块兼容性:驱动白名单 · 网卡 · 网卡与交换机 · 文档 · CodingBox
CodingBox 文档

网卡上的光模块兼容性:驱动白名单

在交换机上,模块策略是网络操作系统里的一行配置;在服务器上,这个决定由网卡驱动和固件来做,并且因厂商、操作系统和驱动版本而异。Intel 网卡是会拒绝未列入清单的模块的那一类;其他大多数厂商只要能解析就接受。本文按厂商和操作系统列出各自的行为、官方记录的绕过方式、决定 DAC 和光模块能否链路建立的 FEC/自动协商规则,以及编码身份在服务器端必须满足的条件。

各厂商的行为

厂商 / 驱动程序检查失败时覆盖方式说明
Intel ixgbe(X520、X540、X550 SFP+)Intel 认证 SFP+ 的厂商 OUI / PN 清单failed to load because an unsupported SFP+ or QSFP module type was detected,端口 down模块参数 allow_unsupported_sfp=1(Linux);重新加载驱动DAC 通常被接受;1G SFP 受限
Intel i40e(X710、XXV710、XL710)固件层面对模块的认证dmesg 中出现 unsupported module,链路 down,或 ethtool 中显示 “module not qualified”较新版 i40e 支持 allow_unsupported_sfp=1;旧版本没有XXV710 的 25G 模块检查严格
Intel ice(E810)NVM/固件层面认证Possible mis-configuration of the Ethernet port detected / 模块未通过认证取决于 NVM 和驱动版本;部分版本支持不受支持 SFP 的设置,另一些则拒绝——请查阅 Intel 发行说明近期 NVM 中是 Intel 产品线里限制最宽松的
Windows 上的 Intel(PROSet 驱动)同样的清单设备显示 “Network cable unplugged”,事件日志出现警告无官方记录的绕过方式使用 Intel 清单内或 Intel 编码的模块
VMware ESXi 上的 Intel(ixgben、i40en、icen)同样的清单链路 down,vmkernel.log 出现 “unsupported module”在驱动暴露 allow_unsupported_sfp 的情况下,通过 esxcli system module parameters set 设置模块参数;并非所有版本都支持生产环境中优先使用认证模块
Nvidia / Mellanox mlx5(ConnectX)解析 EEPROM;以太网模式下无清单链路 up;mlxlink 显示模块信息不需要InfiniBand 模式下:fabric manager 会校验线缆/模块身份,可能标记或降级(IB 线缆)
Broadcom bnxt_en(NetXtreme-E)解析;多数型号无清单up—OEM 品牌(Dell、HPE)固件可能加入额外检查
Marvell / QLogic qede解析up——
AMD Solarflare sfc解析up——
Chelsio cxgb4解析up——
Pensando ionic解析up——
服务器厂商 OEM 网卡(Dell、HPE、Lenovo、Cisco UCS VIC)可能加入各自的清单,Cisco VIC 尤其如此CIMC/UCSM 中出现 “unsupported transceiver”官方无绕过方式UCS VIC 接受 Cisco 编码的模块

行为会随驱动和固件(NVM)版本变化;请在具体的组合上验证(兼容性矩阵与固件)。

应用 Intel 的绕过设置(Linux)

# temporary (until reload)
modprobe -r ixgbe && modprobe ixgbe allow_unsupported_sfp=1
# persistent
echo "options ixgbe allow_unsupported_sfp=1" > /etc/modprobe.d/ixgbe.conf
echo "options i40e allow_unsupported_sfp=1"  > /etc/modprobe.d/i40e.conf
dracut -f   # or update-initramfs -u
# verify
cat /sys/module/ixgbe/parameters/allow_unsupported_sfp
dmesg | grep -iE 'sfp|module|unsupported'
ethtool -m eth0

对多端口网卡,部分驱动的该参数接受逗号分隔的列表(每个端口一个值)。这个设置不获 Intel 官方支持用于生产环境;它只是去掉了检查,并不能改变电气要求。

网卡上的 FEC 与自动协商

链路类型ANFEC说明
25G DAC两端都开启(Clause 73)协商决定(按线缆等级为 RS 或 BASE-R)多数“DAC 不起链路”的情况是某一端 AN 关闭
25G SR / LR 光模块关闭;强制 25000SR 必须用 RS-FEC,LR 用 RS 或不用——须与交换机一致ethtool --set-fec eth0 encoding rs
100G DAC开启RS-FEC—
100G SR4 / CWDM4 / DR关闭必须用 RS-FEC—
100G LR4关闭不用(部分平台用 RS)与交换机保持一致(FEC & AN)
200G / 400G光模块关闭始终使用 RS(544) KP4—
10G关闭不用—

各操作系统的命令参见:NIC 工具与诊断;交换机侧参见:端口配置示例。

编码模块要满足网卡的哪些要求

目标最低要求
未开启绕过的 Intel ixgbe/i40e来自 Intel 认证清单的厂商名和 PN(Intel 品牌的 E10GSFPSR/E10GSFPLR/E25GSFP28SR,或 Intel 转售的 OEM 型号),合规代码和校验和须一致
已开启绕过的 Intel,以及所有宽松厂商有效的校验和与合规代码——不需要 OEM 编码
Cisco UCS VIC与 Cisco 交换机相同的 Cisco 式身份信息(各 NOS 如何校验模块)
InfiniBand HCA符合 IBTA 及 fabric 厂商清单要求的正确线缆/模块身份

编码指南参见:厂商锁定与编码、 编号规则。

网卡侧的典型症状

症状可能原因检查
端口不存在,或 dmesg 中出现 “unsupported module”驱动白名单dmesg、ethtool -m,绕过设置或编码模块
链路 down,模块被识别,各项电平正常FEC/AN 不匹配,速率强制设置错误ethtool eth0、ethtool --show-fec eth0(速率与档位)
链路 up 但速率不对在双速率模块上自动选择了 10G强制设置速率
链路 up 但吞吐量低PCIe 宽度/速率问题lspci -vv(端口与 PCIe)
模块发热,温度告警网卡处于排风气流中通过 ethtool -m 查看 DDM;移动网卡或改善通风
在 Linux 下正常,Windows/ESXi 下不行驱动策略不同为该操作系统使用认证模块
InfiniBand 链路宽度/速率下降线缆不在清单内或过长ibstat、mlxlink

在 CodingBox 中

服务器端的拒绝,诊断所用的字节与交换机端相同。在 Check transceiver 中读取厂商名、PN、OUI、合规代码和校验和;对于纯 Intel 环境,code database 可以保存驱动接受的 Intel 身份信息。


如果您发现本资料中有不准确之处或错误,请选中相应片段并按 Ctrl+Enter,即可。