如何使用 dpdk 向另一台服务器发送数据包?

How to send packet another server using dpdk?

我的问题是如何使用 dpdk 从我的计算机向另一个物理服务器发送数据包。

我已经看过示例代码 rxtx_callbacks 并且我想使用此代码。 但是没有地方输入特定的ip和端口到另一台服务器。

如何使用具有指定 ip 和端口的 dpdk 将数据包发送到服务器上的位置? 以及如何使用 dpdk 接收数据包?

l3fwd 是正确的还是另一个概念?

帮助我

DPDK 是一个开源库,它允许绕过内核和 ETH-IP-TCP 堆栈,直接在 NIC 或其他自定义硬件上从用户空间发送数据包。有多个示例和项目,如 pktgenTREX 用于生成用户定义的数据包(所需的 MAC 地址、VLAN、IP 和 TCP-UDP)有效载荷。

查询

  1. 如何使用具有指定 ip 和端口的 dpdk 将数据包发送到服务器上的位置?

[答]利用DPDK PKTGEN as an easy way to generate. Other examples are pcap based burst replay and trex.

但生成和发送流量的最简单方法是使用 scapy 和 DPDK 示例应用程序 skeleton。以下是实现相同目标所需的步骤。

  • 将 DPDK 安装到所需平台(最好是 Linux)
  • 构建在路径 [dpdk root folder]/examples/skeleton
  • 中找到的 DPDK 示例框架
  • 将物理 NIC(如果流量需要从服务器发送出去)与 igb_uio、uio_pci_generic 或 vfio-pci
  • 等用户空间驱动程序绑定
  • 使用选项 '-l 1 --vdev=net_tap0,iface=scapyEth' 启动应用程序。这将创建名称为 scapyEth.
  • 的 TAP 接口
  • 现在使用 scapy 创建包含所需 MAC、VLAN、IP 和端口号的自定义数据包。

以及如何使用 dpdk 接收数据包?

[Answer] 在接收方 运行 DPDK 应用程序,如 testpmd、l2fwd 或骨架,如果数据包需要由用户空间 DPDK 应用程序或任何 Linux 套接字接收 UDP 数据包。

注意:检查是否收到数据包的最简单方法是运行 tcpudmp。示例 tcpdump -eni eth1 -Q in(其中 eth1 是接收服务器上的物理接口。

注:由于要求how i can send packets to places on a server不清楚

  1. 使用 DPDK 可以使用专用 NIC、FPGA 和无线设备通过物理接口发送数据包
  2. DPDK 可以使用 memif 接口在应用程序之间发送数据包
  3. DPDK 可以使用 virtio 和 vhost 在 VM 之间发送数据包
  4. DPDK 可以向内核发送和接收数据包,其中内核路由堆栈和 ARP table 决定哪个内核接口将转发数据包。