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
我的程序是这样的,
将我的 PF(82599ES) 与 igb_uio 驱动程序绑定
使用以下命令创建 4 个 VF,
回声“4” | sudo tee /sys/bus/pci/devices/0000:65:00.0/max_vfs
使用
将 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
使用 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
运行 带有 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/trex
,vm-1/vm-2/vm-3
使用 dpdk-1。最简单的参数是控制DST MAC 地址匹配到VF.
设置:
- 为端口 0 和端口 1 创建必要的 vf
- 将 VF 共享给相关 VM。
- 将 dpdk vf 端口绑定到 igb_uio。
- 来自 VF 的相关 mac 地址中的流量生成器端口 0。
[P.S.]这是我们在skype上讨论过的信息。
我的问题与我之前提出的一个问题有关。
为了测试简单起见,我只使用一个 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
我的程序是这样的,
将我的 PF(82599ES) 与 igb_uio 驱动程序绑定
使用以下命令创建 4 个 VF,
回声“4” | sudo tee /sys/bus/pci/devices/0000:65:00.0/max_vfs
使用
将 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
使用 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运行 带有 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/trex
,vm-1/vm-2/vm-3
使用 dpdk-1。最简单的参数是控制DST MAC 地址匹配到VF.
设置:
- 为端口 0 和端口 1 创建必要的 vf
- 将 VF 共享给相关 VM。
- 将 dpdk vf 端口绑定到 igb_uio。
- 来自 VF 的相关 mac 地址中的流量生成器端口 0。
[P.S.]这是我们在skype上讨论过的信息。