1

我有一个非常简单的 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

但是,当我尝试从 host1 ping host3 时,我没有看到任何数据包到达 host3。

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

提前致谢!

4

2 回答 2

1

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

于 2015-11-12T09:49:41.610 回答
0

请注意,您需要安装 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 建议的那样,检查是否安装了流程。

于 2015-11-10T22:50:32.613 回答