在 mininet 机器上使用 DPTCL 转发 ARP 请求

Fowarding ARP requests using DPTCL on a mininet machine

我有一个非常简单的 3 台主机、1 台交换机拓扑,已在附图中进行了说明。

我正在尝试编写一个 dpctl 命令,以便将来自主机 1 的 ARP 请求发送到主机 3。

这是我正在尝试使用的命令:

 dpctl add-flow tcp:127.0.0.1:6634 idle_timeout=0,in_port=1,dl_type=0x0806,actions=output:3

但是,当我尝试从主机 1 ping 主机 3 时,我没有看到任何数据包到达主机 3。

我在这里做错了什么,我该如何解决?

提前致谢!

请注意,您需要安装 2 个流程。一个用于发送 ARP 请求,一个用于接收它。特别是,控制器知道如何将 ARP 请求从主机 1 发送到主机 3,但它不知道如何将 ARP 响应从主机 3 转发到主机 1。 您将安装两个流程。像这样:

dpctl add-flow tcp:127.0.0.1:6634 idle_timeout=0,in_port=1,dl_type=0x0806,actions=output:3
dpctl add-flow tcp:127.0.0.1:6634 idle_timeout=0,in_port=3,dl_type=0x0806,actions=output:1

请注意,我使用的是您自己的代码,并且我假设语法和格式是正确的。让我知道是否有帮助。

当然,按照@Nik 的建议,检查是否安装了流程。

所以,事实证明我在设置自动填充每个主机的 ARP 表的网络拓扑时传递了参数 --arp。因此,host1 不会发送 ARP 请求,因为它已经知道目标主机的 MAC 地址。删除此参数可解决问题。