ubuntu 22.04安装 Mellanox 的 MFT 工具包

Mellanox/NVIDIA 网卡 MFT(Mellanox Firmware Tools) 在 Ubuntu 上的完整安装指南。

0. 前置依赖

安装 MFT 前,需要确保系统已安装编译内核模块所需的依赖:

bash 复制代码
sudo apt update
sudo apt install -y gcc make dkms linux-headers-$(uname -r)

1. 下载安装

打开官网:

MFT-Web

选择合适的链接:

先下载 debian 系的安装包,100MB 左右:

bash 复制代码
wget https://www.mellanox.com/downloads/MFT/mft-4.36.0-147-x86_64-deb.tgz

解压:

bash 复制代码
tar zxf ./mft-4.36.0-147-x86_64-deb.tgz

一目了然:

看文件夹中的内容,无脑地先执行

bash 复制代码
sudo ./old-mft-uninstall.sh

接着执行:

bash 复制代码
sudo ./install.sh

2. 应用示例:

学习更多功能和应用方式:

点击打开 User Manual

3. 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_P1=2 将端口 1 设为 Ethernet 模式(2=Eth, 1=IB)
sudo mlxconfig -d /dev/mst/mt4119_pciconf0 set SRIOV_EN=1 NUM_OF_VFS=16 开启 SR-IOV
sudo 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.10,MFT 理论上会随 OFED 一起安装;但如果执行 mst 提示找不到命令,说明组件缺失或未正确加载,单独按上述步骤安装 MFT 即可覆盖。

安装完成后,我们就可以用 mlxconfig 配置网卡工作模式(IB/Eth)、用 flint 刷写固件、用 mlxlink 排查物理链路问题了。

5. 光路数据统计

对于 QSFP28 AOC 光纤链路,逻辑接口的包数 ≠ 物理层实际走光纤的帧数。要确认"真正通过光纤收发"的数据量,需要看 Mellanox 物理层(PHY)计数器。


5.1. 查看物理层光纤收发帧数(最准确)

bash 复制代码
sudo ethtool -S <interface> | grep -E 'phy|fec|pcs'

ConnectX-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_blocks FEC 纠错块数
fec_uncorrected_blocks FEC 无法纠错的块数(>0 说明链路质量严重恶化)

示例命令:

bash 复制代码
IFACE=eth0
echo "=== 逻辑层 ==="
ethtool -S $IFACE | grep -E 'rx_packets:|tx_packets:|rx_bytes:|tx_bytes:'

echo "=== 物理层(光纤实际收发) ==="
ethtool -S $IFACE | grep -E 'phy|fec'

5.2. 查看每 Lane(光纤通道)的详细计数

QSFP28 AOC 内部有 4 条光纤通道(4 lanes)。用 mlxlink 可以查看每条 lane 的误码和状态:

bash 复制代码
sudo mlxlink -d /dev/mst/mt4119_pciconf0 --show_counters

输出中会包含:

  • Raw counters:原始物理层计数
  • Per lane BER:每条 lane 的误码率
  • PCS/FEC counters:PCS 层和 FEC 层的纠错统计

如果你看到 fec_uncorrected_blocks 不为 0,说明光纤链路质量有问题,部分包在物理层就丢了,逻辑层 rx_dropped 可能不体现。


5.3. 一键脚本:对比逻辑层 vs 物理层光纤帧数

针对你的双 CX5 平台,下面脚本自动遍历所有 mlx5 接口,对比逻辑层和 PHY 层计数:

bash 复制代码
#!/bin/bash
# save as: mlx_fiber_stats.sh

echo "========================================"
echo " Mellanox CX5 光纤链路收发统计"
echo " Time: $(date)"
echo "========================================"

for iface in $(ls /sys/class/net/ | grep -E 'eth|ib'); do
    # 确认是 mlx5 设备
    driver=$(ethtool -i $iface 2>/dev/null | awk '/driver:/{print $2}')
    if [ "$driver" != "mlx5_core" ]; then
        continue
    fi

    echo ""
    echo ">>> 接口: $iface"
    echo "--- 逻辑层(内核协议栈视角) ---"
    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 $iface 2>/dev/null | grep -E 'phy' | sed 's/^/  /'

    echo "--- 链路质量(FEC/误码) ---"
    ethtool -S $iface 2>/dev/null | grep -E 'fec|crc|symbol_error' | sed 's/^/  /'
done

echo ""
echo "========================================"
echo " 说明:"
echo "  rx_packets_phy / tx_packets_phy = 光纤实际收发的帧数"
echo "  若 phy 计数为 0 而逻辑层有包,说明问题在网卡内部"
echo "  若 phy 计数 > 逻辑层,差值为以太网帧间隙/前导码/FEC 开销"
echo "========================================"

运行:

bash 复制代码
chmod +x mlx_fiber_stats.sh
sudo ./mlx_fiber_stats.sh

5.4. 关键判断逻辑

场景 解读
rx_packets > 0, rx_packets_phy = 0 逻辑层有统计但物理层无帧,不可能,通常说明接口未 Up 或统计未刷新
rx_packets_phy > rx_packets 正常。PHY 层包含以太网前导码(8B)、帧间隙(12B)、FEC 开销
rx_packets_phy = 0, 链路 Up 对端未发流量,或 AOC 光纤单向故障
fec_uncorrected_blocks > 0 光纤链路质量差,有包在物理层丢失且无法恢复
rx_crc_errors_phy 持续增长 AOC 光纤或光模块问题,需更换

5.5. 生成流量验证

如果你需要主动发包来验证光纤通道是否通:

bash 复制代码
# 在 A 机(服务端)
iperf3 -s

# 在 B 机(客户端,通过 CX5 + AOC 连接)
iperf3 -c <对端IP> -t 10 -i 1

然后同时运行上面的统计脚本,观察 tx_packets_phyrx_packets_phy 是否同步增长。

相关推荐
mounter62514 小时前
高性能网络技术演进与创新探索:RDMA、eBPF/XDP 深度解析及 LSF/MM/BPF 2023 专题演讲
linux·ebpf·linux kernel·kernel·rdma·xdp
tiantianuser3 天前
NVME-oF IP 设计8 :设计扫盲6
网络协议·rdma·高速传输·nvme-of
tiantianuser9 天前
NVME-oF IP 设计7 :设计扫盲5
网络协议·rdma·roce v2·nvme of
mounter62510 天前
探索未来 AI 算力网络的基石:从传统 RoCE 走向 SRv6 驱动的弹性弹性网络(解析 Netdev 0x1A 创新实践)
linux·网络·人工智能·linux kernel·kernel·rdma·rocev2
tiantianuser11 天前
NVME-oF IP 设计5 :设计扫盲3
rdma·高速传输·cmac·roce v2·nvme of
tiantianuser15 天前
NVME-oF IP 设计1 :为什么要设计它?
网络·网络协议·rdma·roce v2·nvme of
tiantianuser17 天前
NVME-oF IP 设计2 :设计之前的调研!
网络·网络协议·rdma·roce v2·nvme of
mounter62520 天前
深入解析 RDMA 中的 Address Handler (AH) 缓存:AWS EFA 驱动的硬件演进与软件复用艺术
linux·kernel·rdma·hashtable·hash table·address handle
caodongwang2 个月前
GPU Direct RDMA调研
gpu·rdma·gdr