我构建了一个自定义的mininet拓扑:2个主机,它们之间有2个交换机:
Host1====Switch1====Switch2====Host2
用ONOS填充流程表后,设置正常 . 但是我在处理转发到SDN-Controller的数据包时遇到了麻烦 .
作为控制器,我使用自己的onos-app .
我尝试了一些ping并用tcpdump嗅探接口 . 当一个主机ping另一个主机时,主机发送一个arp请求 . 此请求到达其他主机并且它回复 . 甚至回复也会纠正ping主机 . 但那......没有任何事情发生 . 我希望第一个主机在收到正确的arp回复后发送ping . 但相反,它绝对没有 . 这甚至不能仅使用一个开关 .
为什么ping本身无法启动?你知道我做错了什么吗?谢谢 .
2 回答
好 . 问题解决了:-D
这是出了什么问题:
onos-core本身放置了ARP,IPv4和IPv6的默认规则,将数据包重定向到控制器 . 即使onos-core将这样的默认规则写入交换机的流表,也不意味着所有数据包都会到达您的应用程序 . 在我的情况下,只有ARP数据包到达我的应用程序,而不是IPv4数据包 . 因此,我必须在我的应用程序的“@Activate”部分添加3行 .
你使用ONOS还是RYU?好像你在使用RYU .
如果您是RYU:您是否正确设置了控制器 . 使用提供的控制器代码(如simple_switch_13.py)运行RYU . 看看是否有效 .
如果你是ONOS,你有安装功能吗?根据本教程,您可以安装一个功能 . 就像是:
onos> feature:install onos-app-fwd
我不知道你是如何编程开关的,但对于两个控制器都要注意你应该为两个方向添加流量 . 此外,有时流量的寿命非常短,到数据包到达时它们已过期 .
如果这些都没有帮助,您能提供更多细节吗?