在 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 地址。删除此参数可解决问题。
我有一个非常简单的 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 地址。删除此参数可解决问题。