CodingBox ドキュメント

NIC 上のトランシーバー互換性:ドライバーのホワイトリスト

スイッチではモジュールポリシーはネットワーク OS の設定1行で決まりますが、サーバーでは NIC のドライバーとファームウェアが決定し、ベンダー、OS、ドライバーバージョンごとに異なります。リストにないモジュールを拒否するのは Intel のアダプターで、それ以外の大半はパースできるものなら何でも受け入れます。このページでは、ベンダーと OS 別の挙動、公式に文書化されたオーバーライド、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、ポートダウンモジュールパラメーター allow_unsupported_sfp=1(Linux);ドライバーの再読み込みDAC は概ね受け入れられる;1G SFP は制限あり
Intel i40e(X710、XXV710、XL710)ファームウェアレベルでのモジュール認定dmesg に unsupported module、リンクダウン、または ethtool に「module not qualified」新しい i40e では allow_unsupported_sfp=1;古いビルドにはなしXXV710 の 25G モジュールは厳格に検査される
Intel ice(E810)NVM/ファームウェアによる認定Possible mis-configuration of the Ethernet port detected /未認定モジュールNVM とドライバーのリリースに依存する。unsupported-SFP 設定を尊重するビルドもあれば拒否するビルドもあるため、Intel のリリースノートを確認する最近の NVM では Intel 製品の中でもっとも寛容
Intel(Windows)(PROSet ドライバー)同じリストデバイスが「Network cable unplugged」と表示、イベントログに警告文書化されたオーバーライドなしIntel のリストに載るか Intel コーディングされたモジュールを使う
Intel(VMware ESXi)(ixgben、i40en、icen)同じリストリンクダウン、vmkernel.log に「unsupported module」ドライバーが allow_unsupported_sfp を公開している場合は esxcli system module parameters set 経由のモジュールパラメーター;全バージョンにあるわけではない本番環境では認定モジュールを推奨
Nvidia / Mellanox mlx5(ConnectX)EEPROM をパースするのみ;Ethernet:リストなしリンクアップ;mlxlink がモジュール情報を表示不要InfiniBand モードではファブリックマネージャーがケーブル/モジュールの識別情報を検証し、警告やダウングレードを行うことがある(IB ケーブル
Broadcom bnxt_en(NetXtreme-E)パースのみ;大半の SKU にリストなしアップOEM ブランド(Dell、HPE)のファームウェアが検査を追加することがある
Marvell / QLogic qedeパースのみアップ
AMD Solarflare sfcパースのみアップ
Chelsio cxgb4パースのみアップ
Pensando ionicパースのみアップ
サーバーベンダーの OEM NIC(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

マルチポートカードでは、一部のドライバーでこのパラメーターがカンマ区切りのリスト(ポートごとに1つの値)を受け付けます。この設定は Intel によって本番環境向けにはサポートされておらず、チェックを外すだけで電気的な要件までは外れません。

NIC における FEC とオートネゴシエーション

リンク種別ANFEC備考
25G DAC両端でオン(Clause 73)ネゴシエートされる(ケーブルクラスに応じて RS または BASE-R)「DAC でリンクしない」事例の大半は、片端で AN がオフになっている
25G SR/LR 光学部品オフ;25000 に固定SR は 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オフなし

OS ごとのコマンド:NIC ツールと診断。スイッチ側:ポート設定レシピ

NIC 向けにコーディングされたモジュールが満たすべき条件

対象最低条件
Intel ixgbe/i40e(オーバーライドなし)Intel の認定リストにあるベンダー名と PN(Intel ブランドの E10GSFPSR/E10GSFPLR/E25GSFP28SR、またはそれらが再販する OEM 品)、整合の取れたコンプライアンスコードとチェックサム
Intel(オーバーライドあり)、寛容な全ベンダー有効なチェックサムとコンプライアンスコード。OEM コーディングは不要
Cisco UCS VICCisco のスイッチと同様の Cisco 形式の識別情報(各 NOS がモジュールを検証する方法
InfiniBand HCAIBTA とファブリックベンダーのリストに沿った正しいケーブル/モジュールの識別情報

コーディングの指針:ベンダーロックとコーディング型番の構成

NIC 側で見られる典型的な症状

症状考えられる原因確認方法
ポートが存在しない、または dmesg に「unsupported module」ドライバーのホワイトリストdmesgethtool -m、オーバーライドまたはコーディング済みモジュール
リンクダウン、モジュールは認識、レベルは正常FEC/AN の不一致、速度の固定設定が誤っているethtool eth0ethtool --show-fec eth0速度とレート
誤った速度でリンクアップデュアルレートモジュールで自動的に 10G が選ばれた速度を固定する
リンクアップするがスループットが低いPCIe のレーン幅/速度lspci -vvポートと PCIe
モジュールが高温、温度アラームカードが排気側の気流にあるethtool -m 経由の DDM;カードを移動するか気流を改善する
Linux では動くが Windows/ESXi では動かないドライバーのポリシーが異なるその OS 向けの認定モジュールを使う
InfiniBand リンクの幅/速度が低下ケーブルがリストにない、または長すぎるibstatmlxlink

CodingBox では

サーバー側の拒否も、スイッチ側と同じバイトから診断します。ベンダー名、PN、OUI、コンプライアンスコード、チェックサムは Check transceiver で読み取ります。Intel のみで構成された環境では、code database にドライバーが受け入れる Intel の識別情報を保持しておけます。


この記事に不正確な点や誤りを見つけた場合は、該当する箇所を選択して Ctrl+Enter を押すと、できます。