You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Mellanox ConnectX-4上为DPDK启用RX巨帧卸载?

问题描述

我正尝试在Ubuntu 20.04.6 LTS上运行DPDK应用,使用的组件如下:

  • Ubuntu 20.04.6 LTS
$ uname -a
Linux the-hostname-001 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
  • Mellanox Technologies MT27700 Family [ConnectX-4]
$ lspci -vvv | grep -i mellanox
d8:00.0 Ethernet controller: Mellanox Technologies MT27700 Family [ConnectX-4]
        Subsystem: Mellanox Technologies ConnectX-4 Stand-up dual-port 100GbE MCX416A-CCAT
d8:00.1 Ethernet controller: Mellanox Technologies MT27700 Family [ConnectX-4]
        Subsystem: Mellanox Technologies ConnectX-4 Stand-up dual-port 100GbE MCX416A-CCAT
  • DPDK 22.11.1
  • Fastclick 2.1

我尝试通过以下Click路由器配置在两个DPDK端口之间搭建简单网桥:

FromDPDKDevice(0, PROMISC true, JUMBO true, MTU 9000) -> ToDPDKDevice(1);
FromDPDKDevice(1, PROMISC true, JUMBO true, MTU 9000) -> ToDPDKDevice(0);

我的接口已配置为MTU 9000:

$ ip link sh

4: ens50f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether <hidden mac addr> brd ff:ff:ff:ff:ff:ff
5: ens50f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether <hidden mac addr> brd ff:ff:ff:ff:ff:ff

运行程序时得到如下输出:

$ sudo ./fastclick-main/bin/click  --dpdk -a d8:00.0 -a d8:00.1 -c 0xFFF0 -n 4 --socket-mem 16000,16000 -- --file bridge.click
EAL: Detected CPU lcores: 48
EAL: Detected NUMA nodes: 2
EAL: Detected static linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Probe PCI driver: mlx5_pci (15b3:1013) device: 0000:d8:00.0 (socket 1)
mlx5_net: Default miss action is not supported.
EAL: Probe PCI driver: mlx5_pci (15b3:1013) device: 0000:d8:00.1 (socket 1)
mlx5_net: Default miss action is not supported.

Initializing DPDK
/home/user1/bridge.click:2: While initializing ‘ToDPDKDevice@4 :: ToDPDKDevice’:
  Rx jumbo frame offload is not supported by this device!

我想知道是否有标准方法确保我的mlx5设备支持"RX jumbo frame offload"。我意识到该错误信息是Fastclick应用特有的,但这更像是DPDK + mlx5设备的问题,怀疑是否在DPDK编译过程中遗漏了某些参数。我已确保接口在启动时启用并设置MTU为9000,但仍出现该错误。


解决方案

1. 确认DPDK mlx5驱动的巨帧支持状态

ConnectX-4硬件本身支持巨帧,但DPDK mlx5驱动对RX巨帧卸载的支持需要满足两个核心条件:

  • 检查编译选项:进入DPDK编译目录,执行以下命令验证MLX5_RX_JUMBO_FRAME是否启用:
    grep -r MLX5_RX_JUMBO_FRAME build/.config
    
    若输出为CONFIG_RTE_LIBRTE_MLX5_RX_JUMBO_FRAME=y则表示已启用;若为n或无结果,需重新编译DPDK并开启该选项。
  • 检查固件版本:ConnectX-4需要固件版本≥12.20.1000,过低版本可能缺失卸载支持。执行以下命令查看固件版本:
    mlxfwmanager --query
    
    版本不足时,升级至官方稳定版。

2. 用DPDK testpmd验证端口巨帧能力

使用DPDK自带的testpmd工具直接检测网卡的RX巨帧卸载支持:

  1. 启动testpmd:
    sudo dpdk-testpmd -a d8:00.0 -a d8:00.1 -c 0xFFF0 -n 4 --socket-mem 16000,16000 -- --port-topology=chained
    
  2. 在交互界面中查看端口特性:
    show port info 0
    
    查找Rx offload capabilities部分,确认是否包含JUMBO_FRAME。若无此条目,说明驱动或硬件配置存在问题。

3. 调整FastClick配置参数

FastClick的JUMBO参数可能触发了对RX巨帧卸载的强制检查,而mlx5驱动的巨帧处理逻辑无需显式开启该选项:

  • 移除JUMBO true参数,仅保留MTU 9000,mlx5驱动会自动适配巨帧:
    FromDPDKDevice(0, PROMISC true, MTU 9000) -> ToDPDKDevice(1);
    FromDPDKDevice(1, PROMISC true, MTU 9000) -> ToDPDKDevice(0);
    
  • 若必须保留JUMBO参数,可检查FastClick的DPDK适配代码,确认其对DEV_RX_OFFLOAD_JUMBO_FRAME标志的判断逻辑是否适配mlx5驱动。

4. 检查系统驱动绑定与网卡配置

  • 确认驱动绑定状态:使用dpdk-devbind.py检查网卡是否绑定到DPDK兼容驱动(如vfio-pci):
    sudo dpdk-devbind.py --status
    
    若绑定到内核驱动mlx5_core,执行以下命令切换:
    sudo dpdk-devbind.py --bind=vfio-pci d8:00.0 d8:00.1
    
  • 启用网卡巨帧卸载:执行以下命令检查并开启网卡的RX巨帧卸载:
    ethtool -k ens50f0 | grep jumbo
    sudo ethtool -K ens50f0 rx-jumbo-frame on
    
    对另一个端口重复上述操作。

5. 重新编译DPDK与FastClick

若上述步骤无效,重新编译组件确保依赖正确:

  1. 编译DPDK时启用全量mlx5相关选项:
    meson setup build -Dprefix=/usr/local/dpdk -Dlibdpdk=librte-all -Ddrivers=net/mlx5
    ninja -C build
    sudo ninja -C build install
    
  2. 编译FastClick时指定DPDK路径:
    ./configure --enable-dpdk --with-dpdk=/usr/local/dpdk
    make
    

内容的提问来源于stack exchange,提问作者cgonchar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:17:03