由于问题不是那么清楚(无论是 DPDK RX-TX 还是 Kernel RX-TX),这里是 DPDK 应用观点的答案
- DPDK TUN PMD 允许创建具有 ip 层以上的内核 TUN 接口(没有 MAC 层)。就像所有 PMD 设备一样,您必须在 DPDK 应用程序中进行轮询
rte_eth_rx_burst
和使用。rte_eth_tx_burst
- 同样,如果您打算使用 TAP PMD,dpdk 将创建内核 TAP 接口,该接口必须在 DPDK 应用程序中
rte_eth_rx_burst
进行
轮询。rte_eth_tx_burst
一旦你使用vdev=net_tap0
它创建内核点击界面dtap0
。因此,要获取接收到内核接口的数据包,您必须调用rte_eth_rx_burst
将特定数据包发送到您需要使用的内核 TAP 接口rte_eth_tx_burst
。
根据您的要求,将任何流量生成器引导到内核到 TAP 接口,然后发送到与 DPDK 绑定的物理 NIC,这就是您必须做的
- 使用一个简单的应用程序,如
examples/skeleton
ortestpmd
或 examples/l2fwd 没有 mac 更新`
- 确保将 传递
vdev=net_tap0,iface=<your desired name for interface>
给 DPDK 应用程序。
- 使用
ip
或ifconfig
启动 ip 地址和状态为 up 的接口(Promisc 模式是可选的)。
- 通过交叉检查确保您的目标地址路由是通过点击界面
route -n
。
- 现在根据需要使用 dest-ip 和接口启动您的流量生成器。
注意:在我的部署案例中,我最终也设置了静态 ARP。
这会将数据包发送到内核 TAP 接口,然后由 DPDK 应用程序通过 rx_burst 调用拦截。使用端口到端口转发行为,然后将其转发到 DPDK 物理 NIC。在相反的方向,从物理网卡接收的数据包通过 rx_burst 购买到应用程序中,然后通过 tx_burst 到 TAP PMD。然后这将注入内核 TAP 接口。