我正在尝试在mininet中创建拓扑,但是如果主机通过不同的交换机有两条路径,则主机无法相互连接。
我错过了某种路由配置吗?我必须手动创建路径和路由吗?我认为控制器是自己做的。
我正在使用的代码是从examples文件夹中重新使用的,注释代码是阻止主机相互访问的代码:
#!/usr/bin/python
"""
This example creates a multi-controller network from semi-scratch by
using the net.add*() API and manually starting the switches and controllers.
This is the "mid-level" API, which is an alternative to the "high-level"
Topo() API which supports parametrized topology classes.
Note that one could also create a custom switch class and pass it into
the Mininet() constructor.
"""
from mininet.net import Mininet
from mininet.node import Controller, OVSSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel, info
def multiControllerNet():
"Create a network from semi-scratch with multiple controllers."
net = Mininet( controller=Controller, switch=OVSSwitch )
info( "*** Creating (reference) controllers\n" )
c1 = net.addController( 'c1', port=6633 )
info( "*** Creating switches\n" )
sw1 = net.addSwitch('s1')
sw2 = net.addSwitch('s2')
sw3 = net.addSwitch('s3')
sw4 = net.addSwitch('s4')
sw5 = net.addSwitch('s5')
info( "*** Creating hosts\n" )
cl1 = net.addHost('c1')
cl2 = net.addHost('c2')
arca = net.addHost('arca')
ag1 = net.addHost('ag1')
ag2 = net.addHost('ag2')
ag3 = net.addHost('ag3')
tr1 = net.addHost('tr1')
tr2 = net.addHost('tr2')
info( "*** Creating links\n" )
net.addLink(cl1, sw1)
net.addLink(cl2, sw3)
net.addLink(arca, sw5)
# traffic generators
net.addLink(tr1, sw1)
net.addLink(tr2, sw5)
# aggregators
net.addLink(ag1, sw2)
net.addLink(ag2, sw2)
net.addLink(ag2, sw4)
net.addLink(ag3, sw4)
net.addLink(sw1, tr1)
net.addLink(sw5, tr2)
net.addLink(sw1, sw2)
#net.addLink(sw1, sw3)
net.addLink(sw2, sw3)
net.addLink(sw3, sw4)
#net.addLink(sw3, sw5)
net.addLink(sw4, sw5)
info( "*** Starting network\n" )
net.build()
c1.start()
sw1.start( [ c1 ] )
sw2.start( [ c1 ] )
sw3.start( [ c1 ] )
sw4.start( [ c1 ] )
sw5.start( [ c1 ] )
info( "*** Testing network\n" )
net.pingAll()
info( "*** Starting apps\n" )
info( "*** Running CLI\n" )
CLI( net )
info( "*** Stopping network\n" )
net.stop()
if __name__ == '__main__':
setLogLevel( 'info' ) # for CLI output
multiControllerNet()
我在这里缺少什么?
答案 0 :(得分:2)
答案 1 :(得分:0)
stp可以通过python从OVSSwitch对象启用:
http://mininet.org/api/classmininet_1_1node_1_1OVSSwitch.html
例如:
let mut x = String::new();
for ts in test_list {
x = format!(r"\*START TIME*{:?}\S*\s+(?P<Value>[a-zA-Z0-9_\-\.]+)", ts);
core_regex_dict.push(&x);
}