使用Scapy向DPDK L3FWD应用发流无接收问题求助
DPDK L3FWD无法接收Scapy流量问题解决方案
根因定位
你的连通性验证逻辑存在错误:当Host B的网卡绑定到vfio-pci驱动后,内核原生网络栈就不再接管该网卡,此时用tcpdump抓包只能抓到内核管理的网卡流量,你能抓到包说明你发流的目标口并非绑定了DPDK驱动的网口,或网卡绑定操作未生效。
分步排查&修复
1. 确认网卡绑定状态
在Host B执行dpdk-devbind.py --status,检查两块XXV710网卡的驱动是否为vfio-pci。如果仍显示为i40e内核驱动,需要先执行ifconfig 对应网卡名 down,再重新绑定vfio-pci驱动。
2. 确认物理口对应关系
你启动L3FWD时-p 0x3对应启用的两个端口,分别对应PCI地址0000:18:00.0和0000:18:00.1,需确认Host A发流的对端物理口就是这两个PCI地址对应的网口,避免插错物理口。
3. 修正Scapy发流参数
当前你发的流量不符合L3FWD默认路由规则,L3FWD默认仅处理目的IP匹配以下网段的流量,非匹配流量会直接丢弃,不会产生日志:
- IPv4:
198.18.0.0/24(端口0转发)、198.18.1.0/24(端口1转发) - IPv6:
2001:200::/64、2001:200:0:1::/64
同时二层目的MAC必须填DPDK对应端口的实际MAC,不能使用广播或错误MAC。正确发流示例如下:
# dst替换为Host B DPDK端口0的实际MAC地址 sendp(Ether(dst="xx:xx:xx:xx:xx:xx")/IP(dst="198.18.0.10", src="192.168.1.10")/ICMP(), iface="enp25s0f0", count=1000)
4. 开启L3FWD统计验证
启动L3FWD时增加--print-stats 1参数,每秒打印一次收发包统计,可直观确认是否收到流量:
./dpdk-l3fwd -l 1,2 -n 4 -- -p 0x3 --config="(0,0,1),(1,0,2)" --print-stats 1
额外优化建议
你的启动日志显示EAL: Using IOMMU type 8 (No-IOMMU),说明未开启IOMMU,会影响vfio-pci驱动运行稳定性。建议在Host B的grub配置中添加iommu=pt intel_iommu=on(AMD平台替换为amd_iommu=on),更新grub后重启主机,再重新绑定网卡启动L3FWD。
内容的提问来源于stack exchange,提问作者Vinay Gowda
相关产品推荐
相关产品推荐

