无法ping在mininet中创建的自定义拓扑中

时间:2018-04-10 15:38:42

标签: mininet

所以我写了一个创建单一拓扑的python文件(只是为了检查自定义拓扑是否有效),而不是先使用任何控制器。代码是:

#!/usr/bin/python

from mininet.node import CPULimitedHost, Host, Node
from mininet.node import OVSSwitch
from mininet.topo import Topo

class Single1(Topo):

"Single Topology"

def __init__(self):
    "Create Fat tree Topology"

    Topo.__init__(self)

    #Add hosts

    h1 = self.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)
    h2 = self.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)
    h3 = self.addHost('h3', cls=Host, ip='10.0.0.3', defaultRoute=None)




    #Add switches
    s1 = self.addSwitch('s1', cls=OVSSwitch)



    #Add links


self.addLink(h1,s1)
self.addLink(h2,s1)
self.addLink(h3,s1)


topos = { 'mytopo': (lambda: Single1() ) }

运行时Pingall不起作用:

sudo mn --custom single.py --topo mytopo

虽然它适用于预定义的“单一”拓扑。有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

主机必须位于同一子网中,以避免路由协议。否则你需要静态路由

答案 1 :(得分:0)

这很奇怪,但现在我可以突然ping ...我不知道为什么或怎么做......我没有改变任何事情。

答案 2 :(得分:0)

默认情况下,Mininet通过Open VSwitch模拟交换机。 如果没有连接到控制器,OVS将像普通的L2交换机一样使用其默认规则。 这就是你可以做pingall()的原因。

但是,我也遇到了Mininet主机即使实际连接也无法互相ping通的问题。几天后,我发现mininet链接需要时间才能准备好。因此,如果你等待大约30秒然后调用pingall(),我认为它应该正常行动。