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