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)解析;多數型號無清單upOEM 品牌(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」驅動白名單dmesgethtool -m,繞過設定或編碼模組
鏈路 down,模組被識別,各項電平正常FEC/AN 不匹配,速率強制設定錯誤ethtool eth0ethtool --show-fec eth0速率與檔位
鏈路 up 但速率不對在雙速率模組上自動選擇了 10G強制設定速率
鏈路 up 但吞吐量低PCIe 寬度/速率問題lspci -vv端口與 PCIe
模組發熱,溫度警報網卡處於排風氣流中通過 ethtool -m 查看 DDM;移動網卡或改善通風
在 Linux 下正常,Windows/ESXi 下不行驅動策略不同為該作業系統使用認證模組
InfiniBand 鏈路寬度/速率下降線纜不在清單內或過長ibstatmlxlink

在 CodingBox 中

伺服器端的拒絕,診斷所用的位元組與交換機端相同。在 Check transceiver 中讀取廠商名、PN、OUI、合規代碼和校驗和;對於純 Intel 環境,code database 可以儲存驅動接受的 Intel 身份資訊。


如果您發現本文有不準確之處或錯誤,請選取相應片段並按 Ctrl+Enter,即可