在具有VMXNET3接口的VMWare上运行DPDK时出现“不兼容的硬件版本”错误

时间:2018-09-27 17:32:23

标签: vmware esxi dpdk

我们正在尝试在运行Centos 7.5的客户机中运行DPDK示例应用程序。主机是ESXi版本6.5。

我正在尝试运行客户机的客户机上构建dpdk。我已经尝试了DPDK版本18.05和18.08。

我们在esxi上创建了五个用于连接到来宾的接口。 1个管理端口和4个数据端口。我们将这四个数据端口绑定到DPDK。这些端口均为VMXNET3接口。它们基本上像 [https://doc.dpdk.org/guides/nics/vmxnet3.html]中的VMXNET3接口一样进行设置,使用vswitch连接到物理接口。但是请注意,我们没有本文档中所示的任何VF接口,只有VMXNET3接口。不幸的是,该文档未显示有关如何进行设置的任何详细信息。

vmware的

This文档也显示了非常相似的设置。但是同样没有关于如何设置的详细信息。

从根本上说,我们遇到的障碍是启动DPDK示例应用程序时VMXNET3接口初始化失败。这是我们看到的:

[root@rg-vm ~]# ./dpdk-18.08/examples/packet_ordering/build/packet_ordering -c 0x0e0 -- -p 0xf
EAL: Detected 24 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Probing VFIO support...
EAL: PCI device 0000:04:00.0 on NUMA socket -1
EAL:   Invalid NUMA socket, default to 0
EAL:   probe driver: 15ad:7b0 net_vmxnet3
eth_vmxnet3_dev_init(): Incompatible hardware version: 0
EAL: Requested device 0000:04:00.0 cannot be used

对于试图绑定到DPDK的所有四个接口,我们都可以看到。但是,奇怪的是,有时在重新启动后,前两个接口会正确初始化。但是,在第一次尝试之后,所有四个接口都会以相同的方式失败。

这是我们用来设置DPDK的命令。

modprobe uio
insmod ./dpdk-18.08/build/build/kernel/linux/igb_uio/igb_uio.ko
./dpdk-18.08/usertools/dpdk-devbind.py --bind=igb_uio 04:00.0
./dpdk-18.08/usertools/dpdk-devbind.py --bind=igb_uio 0c:00.0
./dpdk-18.08/usertools/dpdk-devbind.py --bind=igb_uio 13:00.0
./dpdk-18.08/usertools/dpdk-devbind.py --bind=igb_uio 1b:00.0

请注意,我们还尝试使用uio_pci_generic获得相同的结果。我们无法获得vfio-pci驱动程序来绑定到VMXNET3接口。

我不确定是否很重要,但是我们要连接的vswitch另一侧的物理接口是: 17:00.0以太网控制器:英特尔公司I350千兆光纤网络连接(rev 01)

我们还尝试使用基于Intel 82576芯片组的以太网卡(这是DPDK在其文档中使用的芯片组),以及一个基于Intel X710的以太网卡。使用这些卡中的任何一个,我们都看到与使用i350时相同的错误。因此,我认为这消除了有意义的以太网硬件,因为在我们和以太网控制器之间使用vswitch应该使我们与实际情况无关。

我们在Dell R540上运行。还要注意,当我们在没有VMWare的硬件上运行带有DPDK的Centos 7.5时,一切正常。同样,如果我们在VMWare中运行,但是将i350接口“传递”到VM(而不是使用vswitch和vmxnet),那么在这种情况下,一切也都可以正常工作。

我尝试将内核(3.10)更新为最新版本(4.18),但仍然遇到相同的错误。

如果我尝试使用ethtool读取vmxnet3 pci条形寄存器(在我绑定到DPDK之前)中的版本寄存器(VRRS)(导致此错误的版本),则看起来很好(0xf)。我在Google上搜索了很多,但似乎在这方面找不到太多帮助。问题很可能与我如何进行设置有关,但是我找不到任何信息来提供有关其他操作方法的详细信息。

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:3)

尝试以下步骤:

  1. cd /etc/default
  2. vi grub
  3. 编辑GRUB-CMDLINE并添加“ nopku”

    GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet nopku transparent_hugepage=never log_buf_len=8M"

  4. 重新编译grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg

  5. 重新启动VM并尝试DPDK。