網卡工具與診斷:從伺服器讀取模組資料
伺服器上沒有 show interface transceiver,但底下一層有同樣的資訊:網卡驅動讀取模組 EEPROM,並通過 ethtool、廠商工具,以及在 Windows 和 ESXi 上通過各自的命令暴露出來。本文按作業系統和廠商列出這些工具、各自能看到甚麼(身份資訊、DDM、FEC 計數器、鏈路狀態、PCIe),以及在鏈路 down 或錯誤累積時如何解讀輸出。
| 命令 | 顯示內容 |
|---|
ethtool eth0 | 鏈路狀態、速率、雙工、自動協商、支援/宣告的模式、端口類型(FIBRE/DA) |
ethtool -m eth0(--module-info) | 解碼後的 EEPROM:識別碼、廠商、PN、SN、日期、合規代碼、波長、長度;若模組支援 DDM,則包括溫度、Vcc、偏置電流、Tx/Rx 光功率、閾值、警報旗標 |
ethtool -m eth0 raw on hex on | 原始 A0h(及 A2h)轉儲,用於逐位元組比較(記憶體映射) |
ethtool -m eth0 page 0x11 …(較新版本) | 400G 以上模組的 CMIS 頁面 |
ethtool -i eth0 | 驅動、版本、固件/NVM 版本、總線地址 |
ethtool -S eth0 | 統計資訊,包括 CRC 錯誤;部分驅動還有 FEC 已糾正/未糾正計數 |
ethtool --show-fec eth0 / --set-fec eth0 encoding rs | 已配置和當前生效的 FEC 模式 |
ethtool -s eth0 speed 25000 duplex full autoneg off | 強制設定速率 |
ethtool -p eth0 5 | 閃爍端口 LED 以識別端口 |
ethtool --show-priv-flags eth0 | 驅動特有的旗標(例如 link-down-on-close) |
其他 Linux 資訊來源:按 sfp、module、link 過濾的 dmesg(驅動關於模組認證的消息)、lspci -vv -s <addr>(LnkSta 下的 PCIe 鏈路寬度/速率)、 ip -s link show eth0(計數器)、/sys/class/net/eth0/(載波、速率)。
廠商工具
| 廠商 | 工具 | 主要用途 |
|---|
| Nvidia / Mellanox | mlxlink -d <pci> -m -e -c | 模組資訊和 DDM(-m)、眼圖/BER 和 FEC(-e、-c)、鏈路對端;mlxlink … --fec_override、--speeds |
| Nvidia / Mellanox | mlxconfig -d <pci> q / set | 端口類型(IB/ETH)、鏈路類型、KEEP_ETH_LINK_UP、FEC 覆蓋、拆分 |
| Nvidia / Mellanox | mst status、mlxfwmanager | 設備列表、固件 |
| Nvidia / Mellanox | ibstat、ibportstate、iblinkinfo | InfiniBand 端口狀態、寬度、速率(IB 組網) |
| Intel | ethtool -m | 主要工具;Intel 沒有專用的模組轉儲工具 |
| Intel | nvmupdate64e、epct64e | NVM 固件更新;端口配置(E810 端口選項,例如 2×100G 與 4×25G 之間切換) |
| Intel | dmesg | ixgbe/i40e/ice: unsupported module 一類消息(光模組兼容性) |
| Broadcom | bnxtnvm、niccli | NVM、端口設定、FEC/AN、光模組資訊 |
| Marvell | qedctl | — |
| AMD Solarflare | sfupdate、sfboot | 固件、端口模式 |
| Chelsio | cxgbtool | — |
Windows
| 命令 | 顯示內容 |
|---|
Get-NetAdapter | 鏈路狀態、速率 |
Get-NetAdapterAdvancedProperty -Name "Ethernet 2" | 速率/雙工、FEC 模式、jumbo——可用 Set-NetAdapterAdvancedProperty 設定 |
Get-NetAdapterHardwareInfo | PCIe 插槽、鏈路寬度/速率 |
Get-NetAdapterStatistics | 計數器 |
Intel PROSet:Get-IntelNetAdapter、Get-IntelNetAdapterSetting | Intel 特有設定;模組資訊在設備管理器 → Link Speed 選項卡 |
Nvidia WinOF-2:mlx5cmd -Stat、mlxlink(Windows 版本) | 模組資訊和鏈路診斷 |
| 事件檢視器 → System | 驅動關於不受支援模組的消息 |
Windows 驅動很少暴露 DDM;請使用廠商工具,或在工作台上直接讀取模組。
VMware ESXi
| 命令 | 顯示內容 |
|---|
esxcli network nic list / get -n vmnic0 | 鏈路、速率、驅動、固件 |
esxcli network nic stats get -n vmnic0 | 計數器 |
esxcli system module parameters list -m ixgben / set -m ixgben -p "…" | 驅動參數(在驅動支援的情況下) |
esxcli intnet …(Intel 插件)、esxcli mellanox … / mlxlink(Nvidia 插件) | 廠商診斷,包括模組資訊 |
vmkernel.log | 「unsupported module」、鏈路抖動 |
esxcli hardware pci list | PCIe 鏈路狀態 |
解讀輸出
| 現象 | 含義 | 下一步 |
|---|
ethtool -m:「Cannot get module EEPROM information: Operation not supported」 | 驅動未暴露該功能、端口沒有模組,或模組的 I²C 無響應 | 檢查 dmesg,重新插拔,換個端口試試(讀寫錯誤) |
身份可讀,Link detected: no,Rx 光功率正常 | 速率/FEC/AN 不匹配 | ethtool --show-fec,與交換機對比(FEC & AN) |
| Rx 光功率 −40 dBm / 「-inf」 | 無光 | 光纖、遠端、極性(無鏈路) |
| 偏置電流和 Tx 光功率正常,Rx 臨界 | 連接器髒污、鏈路過長 | 清潔、核對預算(Rx 功率與預算) |
| FEC 不可糾正計數上升 | 鏈路處於臨界狀態 | DDM 各項指標、線纜等級、溫度(VDM 與 FEC 指標) |
| 1U 伺服器中溫度 > 70 °C | 氣流 | 調整位置,或改用 OCP 插槽(端口與 PCIe) |
2×100G 網卡上出現 LnkSta: Speed 8GT/s, Width x8 | PCIe 瓶頸 | 插槽/bifurcation 設定 |
dmesg 中出現 unsupported module | 驅動白名單 | 網卡上的光模組兼容性 |
從伺服器進行監測
ethtool -m 的輸出可解析;用 cron 任務,或帶 ethtool 採集器的 node exporter,把 DDM 匯出到 Prometheus 風格的監測系統(監測)。- Nvidia
mlxlink 的 JSON 輸出(--json)和 Intel ethtool -S 的 FEC 計數器,都是不錯的故障前兆信號(鏈路可靠性與監測)。 - 30–60 秒的輪詢間隔已經足夠;DDM 本身最快也就每秒更新一次。
在 CodingBox 中
ethtool -m raw on hex on 和 CodingBox 讀取的是同樣的位元組:當一個模組在網卡上和在工作台上表現不同時,把兩份轉儲逐欄位對比——不改寫任何內容的驅動會顯示完全相同的數據,任何差異都指向模組自身的動態頁面,或是讀取錯誤(Check transceiver、 用工具讀取 DDM)。