我构建了一个自定义的mininet拓扑:两台主机之间有两台交换机:
Host1====Switch1====Switch2====Host2在使用ONOS填充流程表之后,设置就可以正常工作了。但我在处理转发到SDN-Controller的数据包时遇到了问题。
作为控制器,我使用自己的onos-app。
我尝试了一些with,并用tcpdump嗅探了接口。当一台主机ping另一台主机时,该主机会发送arp请求。此请求到达另一台主机并得到响应。即使应答到达ping主机也是正确的。但是后来..。什么都没发生。我希望第一台主机在收到正确的arp应答后发出ping。但相反,它什么也做不了。这甚至不能仅使用一个开关来工作。

为什么ping本身不能启动?你知道我做错了什么吗?谢谢。
发布于 2015-06-30 05:40:21
你用的是ONOS还是RYU?看起来你是在用RYU。
如果你是龙:你的控制器设置正确了吗?使用提供的控制器代码运行RYU,如simple_switch_13.py。看看这能不能用。
如果你是ONOS,你安装了功能了吗?根据本教程,您应该安装一个特性。类似于:
onos> feature:install onos-app-fwd
我不知道您是如何对开关进行编程的,但是对于两个控制器,请注意您应该为两个方向添加流。此外,有时流的生命周期非常短,在数据包到达时它们已经过期。
如果这些都没有帮助,你能提供更多的细节吗?
发布于 2015-06-30 17:53:54
好的。问题已解决:-D
这就是问题所在:
onos-core本身放置用于ARP、IPv4和IPv6的默认规则,这些规则将数据包重定向到控制器。即使onos-core将这样的默认规则写入到交换机的流程表中,也不意味着所有数据包都会到达您的应用程序。在我的例子中,只有ARP数据包到达我的应用程序,而不是ipv4数据包。因此,我必须在我的应用程序的"@Activate"-section中添加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);
//*****************************************************************************
} https://stackoverflow.com/questions/31121362
复制相似问题