V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
HarrisIce
V2EX  ›  Linux

Mellanox 网卡跑 DPDK 一直发不出去包,求大佬解答

  •  
  •   HarrisIce · 11 天前 · 759 次点击

    手边一张 Mellanox MCX512A ,装了 DPDK 和 Pktgen 向外打流做测试,然后发现 Pktgen 开始打流的时候计数一直是 0 始终不动,pktgen 、dpdk-testpmd 、dmesg 都看不到有异常信息。

    下边这个输出,是 start all 之后的,持续为 0 ,即便是设置了新的协议、IP 、MAC 等仍旧发不出去包,非常诡异。

    # pktgen -l 6,7 -m 2048 -a 0000:01:00.0 -a 0000:01:00.1 -- -P -T -m "0.0,1.1"
    | Ports 0-1 of 2   <Main Page>  Copyright(c) <2010-2023>, Intel Corporation                                                                                                                                          
      Port:Flags        : 0:P------      Single 1:P------      Single                                                                                                                                                    
    Link State          :         <UP-10000-FD>         <UP-10000-FD>     ---Total Rate---                                                                                                                               
    Pkts/s Rx           :                     0                     0                    0                                                                                                                                
           Tx           :                     0                     0                    0                                                                                                                               
    MBits/s Rx/Tx       :                   0/0                   0/0                  0/0                                                                                                                               
    Pkts/s Rx Max       :                     0                     0                    0                                                                                                                               
           Tx Max       :                     0                     0                    0                                                                                                                               
    Broadcast           :                     0                     0                                                                                                                                                    
    Multicast           :                     0                     0                                                                                                                                                    
    Sizes 64            :                     0                     0                                                                                                                                                    
          65-127        :                     0                     0                                                                                                                                                    
          128-255       :                     0                     0                                                                                                                                                    
          256-511       :                     0                     0                                                                                                                                                    
          512-1023      :                     0                     0                                                                                                                                                    
          1024-1518     :                     0                     0                                                                                                                                                    
    Runts/Jumbos        :                   0/0                   0/0                                                                                                                                                    
    ARP/ICMP Pkts       :                   0/0                   0/0                                                                                                                                                    
    Errors Rx/Tx        :                   0/0                   0/0                                                                                                                                                    
    Total Rx Pkts       :                     0                     0                                                                                                                                                    
          Tx Pkts       :                     0                     0                                                                                                                                                    
          Rx/Tx MBs     :                   0/0                   0/0
    

    已做的尝试:

    1. 因为这张网卡有个内置的 eSwitch ,不论是否开关,不论在 pktgen 中传递 dv_xmeta_en=0/1/2 的参数,问题依旧。
    2. Mellanox 的卡驱动比较特殊,不用 DPDK 的兼容驱动,可以同时保留 Linux 驱动的接口,只是无非 DPDK 启动之后 Linux 系统的接口就发不出去包了。使用这个接口外发 Ping ,DPDK 启动后就没响应了,但是 dpdk-tespmd 中显示 Rx 计数器增加(不应该是 Tx ?)。
    3. 更换 DPDK 、Pktgen 版本,换了两个版本了,驱动从 LTS 换到了最新,换了两个操作系统,应该不是 bug 了,仍旧没解决,最终结果完全一致。

    有需要补充的,我继续补充,多谢各路大佬。

    5 条回复    2024-04-28 10:06:25 +08:00
    yanpj1992
        1
    yanpj1992  
       10 天前
    有两点 一个是 dpdk 编译的时有几个 mlx 宏要开启, 然后就是确认下 mlx 的驱动装没装好
    faicker
        2
    faicker  
       10 天前   ❤️ 1
    pktgen -l 6,7 -m 2048 -a 0000:01:00.0 -a 0000:01:00.1 -- -P -T -m "0.0,1.1"
    这里,-m "6.0,7.1"
    HarrisIce
        3
    HarrisIce  
    OP
       10 天前 via iPhone
    @yanpj1992 驱动确认装了,meson 的时候看到 mlx5 已经 enabled 了
    HarrisIce
        4
    HarrisIce  
    OP
       10 天前 via iPhone
    @faicker 晚点我再试试,多谢大佬
    HarrisIce
        5
    HarrisIce  
    OP
       9 天前
    @faicker 多谢大佬,感谢!之前折腾了一天,多亏大佬一句话,找到问题了,就是 -m "0.0,1.1" 这个参数的问题。

    我这台机器有 8 个逻辑核,一开始我把参数改成了 -m "6.0,7.1" ,启动就会得到下边的错误。

    ``
    pktgen -l 6,7 -m 2048 -a 0000:01:00.0 -a 0000:01:00.1 -- -P -T -m "6.0,7.1"

    *** Copyright(c) <2010-2023>, Intel Corporation. All rights reserved.
    *** Pktgen created by: Keith Wiles -- >>> Powered by DPDK <<<

    EAL: Detected CPU lcores: 8
    EAL: Detected NUMA nodes: 1
    EAL: Detected shared linkage of DPDK
    EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
    EAL: Selected IOVA mode 'VA'
    EAL: VFIO support initialized
    EAL: Probe PCI driver: mlx5_pci (15b3:1017) device: 0000:01:00.0 (socket -1)
    EAL: Probe PCI driver: mlx5_pci (15b3:1017) device: 0000:01:00.1 (socket -1)
    TELEMETRY: No legacy callbacks, legacy socket not created
    *** Error can not use initial lcore for a port
    The initial lcore is 6
    ```

    问了 GPT4 ,告诉我说要留一个核心 reserved for management ,然后我把命令改成了`pktgen -l 5-7 -m 2048 -a 0000:01:00.0 -a 0000:01:00.1 -- -P -T -m "6.0,7.1"`,再启动就能正常打流了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1357 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:41 · PVG 01:41 · LAX 10:41 · JFK 13:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.