首页 > 解决方案 > DPDK 开关表示 testpmd 流命令不起作用

问题描述

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

在此处输入图像描述

为了简化测试,我只使用一个运行 warp17 的 VM 来生成流量,通过 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”| sudo tee /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 passthrough 将 VF 绑定到 VM 并启动 VM

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

    -display 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=,主机=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=链式

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

标签: virtualizationqemudpdk

解决方案


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

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

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

设置:

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

[PS] 这是我们在 Skype 上讨论过的信息。


推荐阅读