Vmware 无法通过vmxnet3使用DPDK接收数据包

Vmware 无法通过vmxnet3使用DPDK接收数据包,vmware,dpdk,Vmware,Dpdk,我已经实现了一个简单的代码,使用DPDK将数据包从一台机器发送到另一台机器。 当我使用E1000E时,我能够接收数据包。但是当我使用vmxnet3时,在接收器端,根据以太网统计数据接收错误的数据包。rte_eth_rx_burst()不接收任何数据包。 有办法解决这个问题吗?为什么数据包是错误的 更新:vmxnet3正在正确接收非DPDK数据包,但对于我们的自定义生成器发送的DPDK数据包,它仍然被归类为错误。ESXI和Vcenter中的安全性是否发生了变化?我使用vcenter 6+为早期版本

我已经实现了一个简单的代码,使用DPDK将数据包从一台机器发送到另一台机器。 当我使用E1000E时,我能够接收数据包。但是当我使用vmxnet3时,在接收器端,根据以太网统计数据接收错误的数据包。rte_eth_rx_burst()不接收任何数据包。 有办法解决这个问题吗?为什么数据包是错误的

更新:vmxnet3正在正确接收非DPDK数据包,但对于我们的自定义生成器发送的DPDK数据包,它仍然被归类为错误。ESXI和Vcenter中的安全性是否发生了变化?我使用vcenter 6+为早期版本的ESXI工作

[EDIT-1]根据评论共享的详细信息

VMShpere版本:7

  • VMShpere vswitch:仅在作为10Gbps VMXNET3 NIC备份的2个虚拟机之间连接
  • DPDK版本:18.11
  • 来宾操作系统:Ubuntu20.04(也尝试了Ubuntu16.04)
  • 数据包流:mac地址根据目标VM设置进行更改:VM-1运行DPDK应用程序,自定义数据包生成器和接收器,VM-2运行rx_突发和tx_突发

  • [基于实时调试的回答]使用e1000e或vmxnet3设备的DPDK端没有问题。基于当前调试,基于vsphere上的切换

    使用内核驱动程序调试vmnext3,显示

  • VM-1接收和发送数据包
  • VM-2接收和发送数据包
  • 还有一个物理接口也连接起来,用于转发数据包
  • 将VM-1的IP地址设置为“12.12.12.1”,将VM-2的IP地址设置为“12.12.12.2”
  • 在VM-1和VM-2之间运行iperf3,
    它会失败
  • 使用
    tcpdump
    进行调试显示VM-1没有从VM-2的交换机接收数据包。当接收到来自VM-1的数据包时

  • DPDK l2fwd/testpmd/skeleton甚至示例应用程序的行为也是如此。因此,带有vmxnet3的DPDK 18.11.11 LTS在发送或接收数据包方面没有问题。

    原因很多,您能否分享以下信息,如VMsphere版本、连接到vmxnet3的VMsphere交换机详细信息、DPDK版本、来宾操作系统版本、数据包mac dest地址、vmxnext3地址、使用的DPDK应用程序、,使用选项
    --log level=pmd,8和--log level=8运行时,vswitch仅在10gbps NIC支持的两个虚拟机之间连接。DPDK verion使用的是18.11,来宾操作系统:Ubuntu 20.04(也尝试了Ubuntu 16.04),数据包mac地址根据目标VM更改,我使用以太网统计数据验证了这一点,没有正确的mac地址,目标将不会显示任何数据包(甚至没有错误数据包)。DPDK应用程序是定制的数据包生成器和接收器。刚刚使用了数据包形成后的rte_eth_tx_突发和rte_eth_rx_突发。谢谢@avinashkrc请使用上述信息和剩余信息更新问题(没有DPDK,vmxnet3数据包是否被接收?像l2fwd/skeleton这样的标准DPDK应用程序是否能够发送和接收?日志级别的结果是什么)。您好,l2fwd在转发给其他人之前需要先发送数据包,如果我错了,请纠正我。我还没有检查骨架。我更新的其他详细信息您可以始终使用vdev端口,如tap、kni或任何pcap PMD作为第二个端口进行测试。示例
    examples/l2fwd/build/l2fwd-c0xf0--vdev=net_tap0,iface=mytestport--p0x3-t1
    。然后在另一个终端运行
    ifconfig mytestport up;ping\u i mytestport 12.12.12.12.