You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用netcat为DPDK Skeleton示例提供输入数据包?

解决DPDK Skeleton示例的数据包输入问题

首先明确:DPDK Skeleton示例是直接操作物理/虚拟网口的二层转发程序,它不监听TCP/UDP端口,所以nc localhost 2399这类基于套接字的操作完全无效。下面分两种场景给出可行方案:

场景1:单台机器测试(用虚拟网口模拟)

如果只有一台机器,需要创建DPDK可识别的虚拟网口对来生成流量:

  1. 加载DPDK兼容的驱动(二选一即可):
    # 方案1:用内核自带的vfio-pci
    sudo modprobe vfio-pci
    # 方案2:用DPDK编译的igb_uio
    sudo insmod <你的DPDK编译目录>/build/kmod/igb_uio.ko
    
  2. 创建虚拟网口对:
    sudo ip link add veth0 type veth peer name veth1
    sudo ip link set veth0 up
    sudo ip link set veth1 up
    
  3. 将其中一个网口绑定到DPDK驱动:
    # 查询veth1的PCI总线地址
    sudo lshw -class network -businfo | grep veth1
    # 假设输出的地址是0000:02:00.0,执行绑定
    sudo <你的DPDK目录>/usertools/dpdk-devbind.py --bind=vfio-pci 0000:02:00.0
    
  4. 启动Skeleton示例并指定启用该网口:
    sudo ./dpdk-skeleton -l 1 -n 4 -- -p 0x1
    
    这里-p 0x1表示启用编号为0的DPDK网口(对应刚才绑定的veth1)。
  5. 在另一个终端发送二层数据包:
    用scapy构造并发送(需先安装scapy):
    from scapy.all import *
    # 替换为Skeleton输出的网口MAC地址
    sendp(Ether(dst="XX:XX:XX:XX:XX:XX")/IP()/UDP()/Raw(load="test data"), iface="veth0")
    
    此时Skeleton会收到数据包并完成转发。

场景2:两台机器物理直连测试

如果有两台机器用网线直接连接:

  1. 在运行Skeleton的机器上,将物理网口绑定到DPDK驱动:
    # 查询物理网口的PCI地址
    sudo lshw -class network -businfo | grep Ethernet
    # 假设地址是0000:01:00.0,执行绑定
    sudo ./dpdk-devbind.py --bind=vfio-pci 0000:01:00.0
    
  2. 启动Skeleton示例并启用该网口:
    sudo ./dpdk-skeleton -l 1 -n 4 -- -p 0x1
    
  3. 在另一台机器上发送二层数据包:
    同样用scapy构造发送,目标MAC填Skeleton输出的网口MAC,发送网口选直连的物理网口:
    from scapy.all import *
    sendp(Ether(dst="XX:XX:XX:XX:XX:XX")/IP()/UDP()/Raw(load="test data"), iface="<本机直连网口名>")
    
    也可以用tcpreplay加载现成的pcap包发送:
    sudo tcpreplay -i <本机直连网口名> test.pcap
    

关键注意事项

  • Skeleton只做二层以太网帧的转发,不处理IP/TCP/UDP的套接字逻辑,所有基于localhost端口的操作都不适用。
  • 必须确保网口已正确绑定到DPDK兼容驱动,否则示例无法识别并使用该网口。
  • 发送的数据包目标MAC必须匹配Skeleton输出的网口MAC,否则网口会直接丢弃数据包。

内容的提问来源于stack exchange,提问作者intrigued_66

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:05:18