好。问题解决了:-D
这是出了什么问题:
onos-core本身放置了ARP,IPv4和IPv6的默认规则,将数据包重定向到控制器。即使onos-core将这样的默认规则写入交换机的流表,也不意味着所有数据包都会到达您的应用程序。在我的情况下,只有ARP数据包到达我的应用程序,而不是IPv4数据包。因此,我必须在我的应用程序的“@Activate”部分添加3行。
@Activate public void activate() { appId = coreService.registerApplication("org.onosproject.ifwd"); packetService.addProcessor(processor, PacketProcessor.ADVISOR_MAX + 2); //***ADD THESE 3 LINES********************************************************* TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); selector.matchEthType(Ethernet.TYPE_IPV4); packetService.requestPackets(selector.build(), PacketPriority.REACTIVE, appId); //***************************************************************************** }
你使用ONOS还是RYU?好像你在使用RYU。
如果您是RYU:您是否正确设置了控制器。使用提供的控制器代码运行RYU simple_switch_13.py 。看看是否有效。
如果您是ONOS,是否安装了功能?根据本教程,您可以安装一个功能。就像是:
onos> feature:install onos-app-fwd
我不知道你是如何编程开关的,但对于两个控制器都要注意你应该为两个方向添加流量。 此外,有时流量的寿命非常短,到数据包到达时它们已过期。
如果这些都没有帮助,您能提供更多细节吗?