gpt4 book ai didi

c - 如何从tun接口(interface)接收数据到dpdk绑定(bind)的网卡?

转载 作者:行者123 更新时间:2023-11-30 16:15:25 26 4
gpt4 key购买 nike

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

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

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

最佳答案

由于问题不太清楚(无论是DPDK RX-TX还是Kernel RX-TX),这里从DPDK应用角度回答

  • DPDK TUN PMD 允许创建具有 ip 层的内核 TUN 接口(interface)向前(没有 MAC 层)。就像所有 PMD 设备一样,您有投票 rte_eth_rx_burst并使用rte_eth_tx_burst里面DPDK应用程序。
  • 同样,如果您计划使用 TAP PMD,dpdk 将创建内核 TAP必须使用 rte_eth_rx_burst 轮询的接口(interface)和 rte_eth_tx_burst在 DPDK 应用程序内部。

一旦您使用vdev=net_tap0这将创建内核tap接口(interface)dtap0 。因此,要获取内核接口(interface)收到的数据包,您可以调用 rte_eth_rx_burst要将特定数据包发送到内核 TAP 接口(interface),您需要使用 rte_eth_tx_burst .

根据您的要求,即将任何流量生成器引导到内核到 TAP 接口(interface),然后发送到与 DPDK 绑定(bind)的物理网卡,这是您必须做的

  1. 使用简单的应用程序,如 examples/skeletontestpmd或没有 mac 更新的示例/l2fwd`
  2. 确保您通过 vdev=net_tap0,iface=<your desired name for interface>到 DPDK 应用程序。
  3. 使用ipifconfig使用 IP 地址启动接口(interface)并将状态设置为 up(Promisc 模式可选)。
  4. 通过交叉检查确保您的目标地址路由是通过 Tap 接口(interface) route -n .
  5. 现在根据需要使用目标 IP 和接口(interface)启动流量生成器。

注意:在我的部署案例中,我最终也设置了静态 ARP。

这会将数据包发送到内核 TAP 接口(interface),然后由 DPDK 应用程序通过 rx_burst 调用拦截。然后使用端口到端口转发行为将其转发到 DPDK 物理网卡。在相反方向上,从物理网卡接收到的数据包通过 rx_burst 购买到应用程序中,然后通过 tx_burst 购买到 TAP PMD。然后这将注入(inject)到内核 TAP 接口(interface)。

关于c - 如何从tun接口(interface)接收数据到dpdk绑定(bind)的网卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57109819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com