首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mininet with ONOS: ARP工作正常,Ping无法启动

Mininet with ONOS: ARP工作正常,Ping无法启动
EN

Stack Overflow用户
提问于 2015-06-30 00:57:30
回答 2查看 1.7K关注 0票数 1

我构建了一个自定义的mininet拓扑:两台主机之间有两台交换机:

代码语言:javascript
复制
 Host1====Switch1====Switch2====Host2

在使用ONOS填充流程表之后,设置就可以正常工作了。但我在处理转发到SDN-Controller的数据包时遇到了问题。

作为控制器,我使用自己的onos-app。

我尝试了一些with,并用tcpdump嗅探了接口。当一台主机ping另一台主机时,该主机会发送arp请求。此请求到达另一台主机并得到响应。即使应答到达ping主机也是正确的。但是后来..。什么都没发生。我希望第一台主机在收到正确的arp应答后发出ping。但相反,它什么也做不了。这甚至不能仅使用一个开关来工作。

为什么ping本身不能启动?你知道我做错了什么吗?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-06-30 05:40:21

你用的是ONOS还是RYU?看起来你是在用RYU。

如果你是龙:你的控制器设置正确了吗?使用提供的控制器代码运行RYU,如simple_switch_13.py。看看这能不能用。

如果你是ONOS,你安装了功能了吗?根据本教程,您应该安装一个特性。类似于:

onos> feature:install onos-app-fwd

我不知道您是如何对开关进行编程的,但是对于两个控制器,请注意您应该为两个方向添加流。此外,有时流的生命周期非常短,在数据包到达时它们已经过期。

如果这些都没有帮助,你能提供更多的细节吗?

票数 3
EN

Stack Overflow用户

发布于 2015-06-30 17:53:54

好的。问题已解决:-D

这就是问题所在:

onos-core本身放置用于ARP、IPv4和IPv6的默认规则,这些规则将数据包重定向到控制器。即使onos-core将这样的默认规则写入到交换机的流程表中,也不意味着所有数据包都会到达您的应用程序。在我的例子中,只有ARP数据包到达我的应用程序,而不是ipv4数据包。因此,我必须在我的应用程序的"@Activate"-section中添加3行。

代码语言:javascript
复制
@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);
    //*****************************************************************************

} 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31121362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档