所以我写了一个创建单一拓扑的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
虽然它适用于预定义的“单一”拓扑。有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
主机必须位于同一子网中,以避免路由协议。否则你需要静态路由
答案 1 :(得分:0)
这很奇怪,但现在我可以突然ping ...我不知道为什么或怎么做......我没有改变任何事情。
答案 2 :(得分:0)
默认情况下,Mininet通过Open VSwitch模拟交换机。 如果没有连接到控制器,OVS将像普通的L2交换机一样使用其默认规则。 这就是你可以做pingall()的原因。
但是,我也遇到了Mininet主机即使实际连接也无法互相ping通的问题。几天后,我发现mininet链接需要时间才能准备好。因此,如果你等待大约30秒然后调用pingall(),我认为它应该正常行动。