DPDK 开关表示 testpmd 流命令不起作用

DPDK Switch Representation testpmd flow commands not working

我的问题与我之前提出的一个问题有关。 基本上我想做的是使用 Intel 82599ES 的 4 SR-IOV 功能和我需要的 VF 之间的直接流量。设置是这样的(不要介意X710,我现在使用82599ES)

为了测试简单起见,我只使用一个 VM 运行 warp17 来生成流量,通过 VF1 发送它并从 VF3 接收它。由于新的 dpdk 版本具有 https://doc.dpdk.org/guides-18.11/prog_guide/switch_representation.html?highlight=switch 中描述的切换功能 ,我正在尝试使用 'testpmd' 来配置切换。但似乎 test pmd 不适用于我输入的任何流程命令。我得到的只是“错误的论点”。例如,它不适用于此命令,

flow create 1 ingress pattern / end actions port_id id 3 / end

我的程序是这样的,

  1. 将我的 PF(82599ES) 与 igb_uio 驱动程序绑定

  2. 使用以下命令创建 4 个 VF,

    回声“4” | sudo tee /sys/bus/pci/devices/0000:65:00.0/max_vfs

  3. 使用

    将 2 个 VF 绑定到 vfio_pci 驱动程序

回声“8086 10ed” |须藤发球 /sys/bus/pci/drivers/vfio-pci/new_id sudo ./usertools/dpdk-devbind.py -b vfio-pci 0000:65:10.0 0000:65:10.2

  1. 使用 PCI passthough 将 VF 绑定到 VM 并启动 VM

    sudo qemu-system-x86_64 -enable-kvm -cpu host -smp 4 -hda WARP17-disk1.qcow2 -m 6144 \
    

    -显示 vnc=:0 -redir tcp:2222::22
    -net nic,model=e1000 -net user,name=mynet0
    -device pci-assign,romfile=,host=0000:65:10.0
    -device pci-assign,romfile=,host=0000:65:10.2

  2. 运行 带有 PF 和 VF 的 2 个端口代表的 testpmd

sudo ./testpmd --lcores 1,2 -n 4 -w 65:00.0,representor=0-1 --socket-mem 1024 --socket-mem 1024- -proc-type auto --file-prefix testpmd-pf -- -i --port-topology=chained

我是不是做错了什么或者这是 testpmd 的本质? 我的dpdk版本是18.11.9

请注意 82599ES 使用 ixgbe 而 X710 使用 i40e PMD。两者不同,具有不同的属性。根据比较 ixgbe PMD (http://doc.dpdk.org/guides/nics/ixgbe.html) and i40e PMD (http://doc.dpdk.org/guides/nics/i40e.html) 的文档,用于入口数据包的流导向器功能(从外部端口接收到 ASIC 的数据包)。函数 Floating VEB 是您需要使用的功能。但这仅存在于 X710 而不是 82599ES.

要启用 VEB,需要在 X710 中使用 -w 84:00.0,enable_floating_veb=1。但这限制了您将无法在物理端口上接收和发送的功能。

最好的选择是使用 2 * 10Gbps,其中使用 dpdk-0 wrap7/pktgen/trexvm-1/vm-2/vm-3 使用 dpdk-1。最简单的参数是控制DST MAC 地址匹配到VF.

设置:

  1. 为端口 0 和端口 1 创建必要的 vf
  2. 将 VF 共享给相关 VM。
  3. 将 dpdk vf 端口绑定到 igb_uio。
  4. 来自 VF 的相关 mac 地址中的流量生成器端口 0。

[P.S.]这是我们在skype上讨论过的信息。