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

22 天前
 HarrisIce

手边一张 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 了,仍旧没解决,最终结果完全一致。

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

864 次点击
所在节点    Linux
5 条回复
yanpj1992
22 天前
有两点 一个是 dpdk 编译的时有几个 mlx 宏要开启, 然后就是确认下 mlx 的驱动装没装好
faicker
22 天前
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
22 天前
@yanpj1992 驱动确认装了,meson 的时候看到 mlx5 已经 enabled 了
HarrisIce
22 天前
@faicker 晚点我再试试,多谢大佬
HarrisIce
21 天前
@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"`,再启动就能正常打流了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1036058

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX