【问题标题】:Can't ping in a custom topology created in mininet无法在 mininet 中创建的自定义拓扑中 ping
【发布时间】:2018-04-10 15:38:42
【问题描述】:

所以我写了一个 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

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

【问题讨论】:

    标签: mininet


    【解决方案1】:

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

    【讨论】:

    • 他们不是默认掩码为255.0.0.0吗?
    • 尽管如此,我确实尝试将 /24 添加到 IP 地址,但没有帮助。
    • 好吧,在我的场景中,我使用了以下命令:net = Mininet(topo=None, build=False, ipBase='10.0.0.0/8')。您构建了一个类,您可以在其中设置函数来构建您的网络。就我而言,我只是编写了函数并通过 py 脚本调用它们。无论如何,您必须设置 Mininet(ipBase='10.0.0.0/8')
    • 你也必须设置你的控制器
    • c0=net.addController(name='c0', controller=Controller, protocol='tcp', port=6633)
    【解决方案2】:

    这很奇怪,但现在我突然可以ping通了..我不知道为什么或如何..我没有改变任何东西。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 我也有同感。第二天早上起床后,我将执行此操作。我希望这行得通。我已经在这上面浪费了几个小时。
      猜你喜欢
      • 2016-09-05
      • 2015-01-21
      • 2015-11-28
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多