如何从tun接口接收数据到dpdk绑定的NIC?

问题描述 投票:0回答:1

我想让任何流量生成器(例如iperf,D-ITG甚至ping)将数据发送到tun接口。此tun接口应自动转发到已绑定到DPDK的NIC。我想运行l3fwd示例,该示例从界面中拾取数据。

我在命令行中使用了--vdev = net_tun0选项,该选项创建了tun接口。我认为tun / tap PMD将自动在tun / tap接口上轮询数据包,然后重定向到NIC或从NIC重定向。但是,这没有发生。我无法接收任何数据包。

我需要dpdk和流量生成器在同一台PC上运行。 DPDK应该在用户空间选择流量。

c tap dpdk tun
1个回答
0
投票

由于问题还不清楚(无论是DPDK RX-TX还是内核RX-TX,所以这是DPDK应用程序观点的答案]

  • DPDK TUN PMD允许使用ip层创建内核TUN接口开始(没有MAC层)。就像所有PMD设备一样,用rte_eth_rx_burst轮询并在内部使用rte_eth_tx_burstDPDK应用程序。
  • 类似地,如果您打算使用TAP PMD,则dpdk将创建内核TAP必须使用rte_eth_rx_burst轮询的接口DPDK应用程序中的rte_eth_tx_burst

一旦使用vdev=net_tap0,就会创建内核抽头接口dtap0。因此,要抓取已接收到内核接口的数据包,您可以调用rte_eth_rx_burst将特定数据包发送到内核TAP接口,您需要使用rte_eth_tx_burst

根据您的要求,即将任何流量生成器定向到内核到TAP接口,然后发送到绑定了DPDK的物理NIC,这是您必须要做的

  1. 使用没有Mac更新的简单应用程序,例如examples/skeletontestpmd或examples / l2fwd,
  2. 确保将vdev=net_tap0,iface=<your desired name for interface>传递给DPDK应用程序。
  3. 使用ipifconfig打开具有IP地址且状态为up的接口(Promisc模式是可选的。)>
  4. 通过交叉检查route -n,确保您的目标地址路由是通过点击界面进行的。
  5. 现在根据需要使用dest-ip和接口启动流量生成器。
  6. 注意:在我的部署情况下,我最终也设置了静态ARP。

这会将数据包发送到内核TAP接口,然后DPDK应用程序会通过rx_burst调用截获该数据包。使用端口来转发行为,然后将其转发到DPDK物理NIC。相反,从物理网卡接收的数据包由rx_burst购买,然后由tx_burst购买到TAP PMD。然后将其注入内核TAP接口。

© www.soinside.com 2019 - 2024. All rights reserved.