了解 DPDK pktgen 的目标寻址

Understanding DPDK pktgen's destination addressing

我有两个 Emulab 服务器,都配置为 DPDK。一个(称之为客户端)运行 pktgen;另一个(称之为服务器)运行 l2fwd

在客户端,我在 pktgen 输出中看到以下内容:

    Src/Dest Port     :         1234 / 5678
    Pkt Type:VLAN ID  :     IPv4 / TCP:0001
    Dst  IP Address   :         192.168.1.1
    Src  IP Address   :      192.168.0.1/24
    Dst MAC Address   :   00:00:00:00:00:00
    Src MAC Address   :   a0:36:9f:08:1c:28

根据l2fwd的输出,服务器正在接收来自客户端的数据包。

我想我遗漏了一些有关这里寻址工作原理的信息;服务器启用 DPDK 的接口不应该有 IP 地址(我从来没有给它分配过 IP 地址)。客户端的数据包似乎没有 Dst MAC。

服务器如何获取这些数据包?客户端只是向网络广播吗? IP地址不应该是FF:FF:FF:FF:FF:FF吗?

回答您的问题:

the server's DPDK-enabled interface should not have an IP address (I never assigned it one)

不,不应该。但是 l2fwd 代表 OSI 第 2 层转发,即交换。切换不需要任何 IP 即可工作。

The client seems not to have a Dst MAC for its packets.

从输出来看,目标 MAC 全为零。 您可以使用 set mac <portlist> <mac> CLI 命令更改它。

How is the server getting these packets? Is the client just broadcasting to the network? Shouldn't the IP address be FF:FF:FF:FF:FF:FF, then?

我想,在您的情况下,它是服务器上的 unknown unicast + 混杂模式。中间的交换机在其 MAC table 中没有地址 00:00:00:00:00:00,因此它正在向所有端口(源和 VLAN 内除外)泛洪未知单播。

服务器收到这个帧是因为它把端口设置成混杂模式,所以网卡接受所有的帧,而不只是发往网卡的MAC.

希望这能回答您的问题。