DPDK L2FWD应用运行问题咨询:端口异常及数据包计数为0
关于DPDK L2FWD的两个问题解析
一、所有数据包计数为0的原因
大概率是没有数据包流入你启用的DPDK端口,毕竟L2FWD是转发收到的数据包,没收到自然就没有计数。你可以从这几个方向排查:
- 先确认链路状态:检查物理端口的指示灯是否亮起,或者用
ethtool命令查看端口是否处于UP状态; - 验证端口绑定:用
dpdk-devbind.py --status查看你要用的两个端口是否已经绑定到DPDK兼容的驱动(比如vfio-pci或igb_uio),没绑定的话端口根本无法收发包; - 检查启动参数:启动L2FWD时有没有用
-p参数指定端口掩码?比如要启用端口0和1,得加-p 0x3(二进制0011对应前两个端口),如果没指定,程序可能没监听你实际要用的端口。
如果以上都没问题,你可以用tcpreplay工具往端口注入测试流量,或者用另一台设备ping该端口的IP,看看计数会不会变化。
二、为什么显示16个端口但你只用了2个
这是因为DPDK的EAL环境初始化时,会枚举系统中所有能被DPDK识别的网络设备,包括虚拟网卡(比如虚拟机里的virtio网卡、主机上的docker虚拟网卡)、甚至一些非物理的网络接口,所以会出现枚举到16个端口的情况。
解决方法很简单:
- 用
dpdk-devbind.py --status列出所有设备,找到你实际要用的两个物理端口对应的编号; - 启动L2FWD时通过
-p参数指定端口掩码,只启用这两个端口。比如端口0和1对应掩码0x3,启动命令类似:
./build/l2fwd -l 0-1 -n 4 -p 0x3
这样程序就只会处理你指定的两个端口,其他未启用的端口计数会一直是0,属于正常现象。
内容的提问来源于stack exchange,提问作者Haritha
相关产品推荐
相关产品推荐

