我想让任何流量生成器(例如iperf,D-ITG甚至ping)将数据发送到tun接口。此tun接口应自动转发到已绑定到DPDK的NIC。我想运行l3fwd示例,该示例从接口中拾取数据。
我在命令行中使用了--vdev = net_tun0选项,该选项创建了tun接口。我认为tun / tap PMD将自动在tun / tap接口上轮询数据包,然后重定向到NIC或从NIC重定向。但是,这没有发生。我无法收到任何数据包。
我需要dpdk和流量生成器在同一台PC上运行。 DPDK应该在用户空间选择流量。
答案 0 :(得分:0)
由于问题还不清楚(无论是DPDK RX-TX还是内核RX-TX),因此,这是DPDK应用程序观点的答案
rte_eth_rx_burst
进行轮询并在其中使用rte_eth_tx_burst
DPDK应用程序。rte_eth_rx_burst
进行轮询的接口,并且
rte_eth_tx_burst
在DPDK应用程序中。一旦使用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接口。