【发布时间】:2021-05-22 01:36:19
【问题描述】:
我已经实现了一个简单的代码,它使用 DPDK 将数据包从一台机器发送到另一台机器。 当我使用 E1000E 时,我能够接收数据包。但是当我使用 vmxnet3 时,接收端会根据以太网统计信息接收到错误的数据包。 rte_eth_rx_burst() 没有收到任何数据包。 有没有办法解决这个问题?为什么包是错误的?
更新:vmxnet3 可以正确接收非 DPDK 数据包,但是当涉及到我们的自定义生成器发送的 DPDK 数据包时,它仍然被归类为错误。 ESXI 和 Vcenter 的安全性是否发生了变化?我使用 vCenter 6+ 为早期版本的 ESXI 工作。
[EDIT-1] 根据评论分享的详细信息
VMShpere 版本:7
- VMShpere vswitch:仅在 2 个支持 10Gbps VMXNET3 NIC 的 VM 之间连接
- DPDK 版本:18.11
- 访客操作系统:Ubuntu 20.04(也试过 Ubuntu 16.04)
- 数据包流:根据目标 VM 设置更改 MAC 地址:VM-1 运行 DPDK 应用程序是自定义数据包生成器和接收器,VM-2 运行 rx_burst 和 tx_burst。
【问题讨论】:
-
有很多原因,请您分享以下信息,例如 VMsphere 版本、连接到 vmxnet3 的 Vmsphere 交换机详细信息、DPDK 版本、guest os 版本、数据包 MAC 目标地址、vmxnext3 地址、使用的 dpdk 应用程序、并使用选项
--log-level=pmd,8 and --log-level=8运行 -
VMShpere 版本:7,vswitch 仅在两个由 10gbps NIC 支持的 VM 之间连接。使用的 DPDK 版本是 18.11,来宾操作系统:Ubuntu 20.04(也尝试过 Ubuntu 16.04),数据包 MAC 地址根据目标 VM 更改,我使用以太网统计数据验证了这一点,没有正确的 MAC 地址目标不会显示任何数据包(甚至错误数据包)。 DPDK 应用程序是自定义数据包生成器和接收器。只是在数据包形成后使用 rte_eth_tx_burst 和 rte_eth_rx_burst。
-
谢谢@avinashkrc 请用上述信息和剩余信息更新问题(没有 DPDK 是否接收到 vmxnet3 数据包?像 l2fwd/skeleton 这样的标准 DPDK 应用程序是否能够发送和接收?结果如何?日志级别的)。
-
嗨 vipin,l2fwd 在转发给其他人之前需要提供数据包,如果我错了,请纠正我。我还没有检查骨架。我更新的其余细节
-
您始终可以使用 vdev 端口(如 tap、kni 或任何 pcap PMD)作为第二个端口进行测试。示例
examples/l2fwd/build/l2fwd -c 0xf0 --vdev=net_tap0,iface=myetestport -- -p 0x3 -T 1。然后在另一个终端运行ifconfig mytestport up; ping _i mytestport 12.12.12.12.