Mellanox/NVIDIA 网卡MFTMellanox Firmware Tools在 Ubuntu 上的完整安装指南。0. 前置依赖安装 MFT 前需要确保系统已安装编译内核模块所需的依赖sudoaptupdatesudoaptinstall-ygccmakedkms linux-headers-$(uname-r)1. 下载安装打开官网MFT-Web选择合适的链接先下载 debian 系的安装包100MB 左右wgethttps://www.mellanox.com/downloads/MFT/mft-4.36.0-147-x86_64-deb.tgz解压tarzxf ./mft-4.36.0-147-x86_64-deb.tgz一目了然看文件夹中的内容无脑地先执行sudo./old-mft-uninstall.sh接着执行sudo./install.sh2. 应用示例学习更多功能和应用方式点击打开 User Manual3. ConnectX-5 常用命令速查命令作用sudo mst start启动 MST 服务sudo mst status查看 MST 设备状态ls /dev/mst/列出所有 MST 设备节点sudo flint -d /dev/mst/mt4119_pciconf0 q查询固件版本、GUID、PSID 等信息sudo mlxconfig -d /dev/mst/mt4119_pciconf0 q查询网卡当前配置sudo mlxconfig -d /dev/mst/mt4119_pciconf0 set LINK_TYPE_P12将端口 1 设为 Ethernet 模式2Eth, 1IBsudo mlxconfig -d /dev/mst/mt4119_pciconf0 set SRIOV_EN1 NUM_OF_VFS16开启 SR-IOVsudo mlxlink -d /dev/mst/mt4119_pciconf0查看物理层链路状态速率、FEC、误码等ConnectX-5 的 MST 设备名通常为mt4119_pciconf0双端口卡会有mt4119_pciconf0.1。如果机器上的 网卡设备名不同以mst status输出为准。4. 与 MLNX_OFED 的关系MFT 是独立的固件管理工具包不依赖 MLNX_OFED驱动。如果已经安装了MLNX_OFED_LINUX-24.10MFT 理论上会随 OFED 一起安装但如果执行mst提示找不到命令说明组件缺失或未正确加载单独按上述步骤安装 MFT 即可覆盖。安装完成后我们就可以用mlxconfig配置网卡工作模式IB/Eth、用flint刷写固件、用mlxlink排查物理链路问题了。5. 光路数据统计对于 QSFP28 AOC 光纤链路逻辑接口的包数 ≠ 物理层实际走光纤的帧数。要确认真正通过光纤收发的数据量需要看 Mellanox 物理层PHY计数器。5.1. 查看物理层光纤收发帧数最准确sudoethtool-Sinterface|grep-Ephy|fec|pcsConnectX-5 的关键 PHY 计数器计数器含义rx_packets_phy物理层接收帧总数含以太网帧间隙、前导码tx_packets_phy物理层发送帧总数rx_bytes_phy物理层接收字节总数tx_bytes_phy物理层发送字节总数rx_crc_errors_phy物理层 CRC 错误光纤信号质量指标rx_in_range_len_errors_phy物理层长度错误rx_symbol_errors_phy物理层编码错误AOC 链路质量差时增长fec_corrected_blocksFEC 纠错块数fec_uncorrected_blocksFEC 无法纠错的块数0 说明链路质量严重恶化示例命令IFACEeth0echo 逻辑层 ethtool-S$IFACE|grep-Erx_packets:|tx_packets:|rx_bytes:|tx_bytes:echo 物理层光纤实际收发 ethtool-S$IFACE|grep-Ephy|fec5.2. 查看每 Lane光纤通道的详细计数QSFP28 AOC 内部有 4 条光纤通道4 lanes。用mlxlink可以查看每条 lane 的误码和状态sudomlxlink-d/dev/mst/mt4119_pciconf0--show_counters输出中会包含Raw counters原始物理层计数Per lane BER每条 lane 的误码率PCS/FEC countersPCS 层和 FEC 层的纠错统计如果你看到fec_uncorrected_blocks不为 0说明光纤链路质量有问题部分包在物理层就丢了逻辑层rx_dropped可能不体现。5.3. 一键脚本对比逻辑层 vs 物理层光纤帧数针对你的双 CX5 平台下面脚本自动遍历所有 mlx5 接口对比逻辑层和 PHY 层计数#!/bin/bash# save as: mlx_fiber_stats.shechoecho Mellanox CX5 光纤链路收发统计echo Time:$(date)echoforifacein$(ls/sys/class/net/|grep-Eeth|ib);do# 确认是 mlx5 设备driver$(ethtool-i$iface2/dev/null|awk/driver:/{print $2})if[$driver!mlx5_core];thencontinuefiechoecho 接口:$ifaceecho--- 逻辑层内核协议栈视角 ---cat/sys/class/net/$iface/statistics/rx_packets|awk{printf RX packets: %s\n, $1}cat/sys/class/net/$iface/statistics/tx_packets|awk{printf TX packets: %s\n, $1}cat/sys/class/net/$iface/statistics/rx_bytes|awk{printf RX bytes: %s\n, $1}cat/sys/class/net/$iface/statistics/tx_bytes|awk{printf TX bytes: %s\n, $1}echo--- 物理层光纤实际收发含开销 ---ethtool-S$iface2/dev/null|grep-Ephy|seds/^/ /echo--- 链路质量FEC/误码 ---ethtool-S$iface2/dev/null|grep-Efec|crc|symbol_error|seds/^/ /doneechoechoecho 说明echo rx_packets_phy / tx_packets_phy 光纤实际收发的帧数echo 若 phy 计数为 0 而逻辑层有包说明问题在网卡内部echo 若 phy 计数 逻辑层差值为以太网帧间隙/前导码/FEC 开销echo运行chmodx mlx_fiber_stats.shsudo./mlx_fiber_stats.sh5.4. 关键判断逻辑场景解读rx_packets 0,rx_packets_phy 0逻辑层有统计但物理层无帧不可能通常说明接口未 Up 或统计未刷新rx_packets_phyrx_packets正常。PHY 层包含以太网前导码(8B)、帧间隙(12B)、FEC 开销rx_packets_phy 0, 链路 Up对端未发流量或 AOC 光纤单向故障fec_uncorrected_blocks 0光纤链路质量差有包在物理层丢失且无法恢复rx_crc_errors_phy持续增长AOC 光纤或光模块问题需更换5.5. 生成流量验证如果你需要主动发包来验证光纤通道是否通# 在 A 机服务端iperf3-s# 在 B 机客户端通过 CX5 AOC 连接iperf3-c对端IP-t10-i1然后同时运行上面的统计脚本观察tx_packets_phy和rx_packets_phy是否同步增长。