0

我有两个 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 地址(我从未分配过它)。客户端似乎没有其数据包的 Dst MAC。

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

4

1 回答 1

1

回答您的问题:

服务器的启用 DPDK 的接口不应该有 IP 地址(我从未分配过)

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

客户端似乎没有其数据包的 Dst MAC。

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

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

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

服务器收到此帧是因为它将端口置于混杂模式,因此 NIC 接受所有帧,而不仅仅是寻址到 NIC 的 MAC。

希望这能回答你的问题。

于 2017-08-03T20:36:24.320 回答