网卡工具与诊断:从服务器读取模块信息 · 网卡 · 网卡与交换机 · 文档 · CodingBox
CodingBox 文档

网卡工具与诊断:从服务器读取模块信息

服务器上没有 show interface transceiver,但底下一层有同样的信息:网卡驱动读取模块 EEPROM,并通过 ethtool、厂商工具,以及在 Windows 和 ESXi 上通过各自的命令暴露出来。本文按操作系统和厂商列出这些工具、各自能看到什么(身份信息、DDM、FEC 计数器、链路状态、PCIe),以及在链路 down 或错误累积时如何解读输出。

Linux: ethtool

命令显示内容
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 / Mellanoxmlxlink -d <pci> -m -e -c模块信息和 DDM(-m)、眼图/BER 和 FEC(-e、-c)、链路对端;mlxlink … --fec_override、--speeds
Nvidia / Mellanoxmlxconfig -d <pci> q / set端口类型(IB/ETH)、链路类型、KEEP_ETH_LINK_UP、FEC 覆盖、拆分
Nvidia / Mellanoxmst status、mlxfwmanager设备列表、固件
Nvidia / Mellanoxibstat、ibportstate、iblinkinfoInfiniBand 端口状态、宽度、速率(IB 组网)
Intelethtool -m主要工具;Intel 没有专用的模块转储工具
Intelnvmupdate64e、epct64eNVM 固件更新;端口配置(E810 端口选项,例如 2×100G 与 4×25G 之间切换)
Inteldmesgixgbe/i40e/ice: unsupported module 一类消息(光模块兼容性)
Broadcombnxtnvm、niccliNVM、端口设置、FEC/AN、光模块信息
Marvellqedctl—
AMD Solarflaresfupdate、sfboot固件、端口模式
Chelsiocxgbtool—

Windows

命令显示内容
Get-NetAdapter链路状态、速率
Get-NetAdapterAdvancedProperty -Name "Ethernet 2"速率/双工、FEC 模式、jumbo——可用 Set-NetAdapterAdvancedProperty 设置
Get-NetAdapterHardwareInfoPCIe 插槽、链路宽度/速率
Get-NetAdapterStatistics计数器
Intel PROSet:Get-IntelNetAdapter、Get-IntelNetAdapterSettingIntel 特有设置;模块信息在设备管理器 → 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 listPCIe 链路状态

解读输出

现象含义下一步
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 x8PCIe 瓶颈插槽/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)。


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