我想让任何流量生成器(例如iperf,D-ITG甚至ping)将数据发送到tun接口。此tun接口应自动转发到已绑定到DPDK的NIC。我想运行l3fwd示例,该示例从界面中拾取数据。
我在命令行中使用了--vdev = net_tun0选项,该选项创建了tun接口。我认为tun / tap PMD将自动在tun / tap接口上轮询数据包,然后重定向到NIC或从NIC重定向。但是,这没有发生。我无法接收任何数据包。
我需要dpdk和流量生成器在同一台PC上运行。 DPDK应该在用户空间选择流量。
由于问题还不清楚(无论是DPDK RX-TX还是内核RX-TX,所以这是DPDK应用程序观点的答案]
rte_eth_rx_burst
轮询并在内部使用rte_eth_tx_burst
DPDK应用程序。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,这是您必须要做的
examples/skeleton
或testpmd
或examples / l2fwd,vdev=net_tap0,iface=<your desired name for interface>
传递给DPDK应用程序。ip
或ifconfig
打开具有IP地址且状态为up的接口(Promisc模式是可选的。)>route -n
,确保您的目标地址路由是通过点击界面进行的。注意:在我的部署情况下,我最终也设置了静态ARP。
这会将数据包发送到内核TAP接口,然后DPDK应用程序会通过rx_burst调用截获该数据包。使用端口来转发行为,然后将其转发到DPDK物理NIC。相反,从物理网卡接收的数据包由rx_burst购买,然后由tx_burst购买到TAP PMD。然后将其注入内核TAP接口。