在给定的拓扑中,只有s3和s4是OFSwitch,其他是非OF开关。对于Non-OF交换机,我在超类Switch下创建了一个L2_switch子类,类似于启用了stp的LinuxBridge(nodelib.py)。
h2
|
s7
|
s3
/ \
/ \
h1--------s1-----------s2 s5----------h3
\ /
\ /
s4
|
s6
|
h4
这里只有h2和h4能够相互ping通。其他主机无法ping通。 为什么呢?
但是将s2和s5更改为OF-Switch所有主机都可以相互ping通。为什么呢?
这是我的代码:
def myNetwork():
net = Mininet( topo=None,
listenPort=6633,
build=False,
ipBase='10.0.0.0/8')
info( '*** Adding controller\n' )
c0=net.addController(name='c0',
controller=RemoteController,
ip='192.168.56.104',
protocol='tcp',
port=6633)
info( '*** Add switches\n')
s3 = net.addSwitch('s3', cls=OVSKernelSwitch)
s5 = net.addSwitch('s5', cls=L2_switch) #OVSKernelSwitch)
s7 = net.addSwitch('s7', cls=L2_switch) #OVSKernelSwitch)
s2 = net.addSwitch('s2', cls=L2_switch) #OVSKernelSwitch)
s4 = net.addSwitch('s4', cls=OVSKernelSwitch)
s1 = net.addSwitch('s1', cls=L2_switch) #OVSKernelSwitch)
s6 = net.addSwitch('s6', cls=L2_switch) #OVSKernelSwitch)
info( '*** Add hosts\n')
h3 = net.addHost('h3', cls=Host, ip='10.0.0.3', defaultRoute=None)
h4 = net.addHost('h4', cls=Host, ip='10.0.0.4', defaultRoute=None)
h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)
h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)
info( '*** Add links\n')
net.addLink(h1, s1)
net.addLink(s1, s2)
net.addLink(s2, s3)
net.addLink(s7, s3)
net.addLink(h2, s7)
net.addLink(s3, s5)
net.addLink(s4, s5)
net.addLink(s4, s6)
net.addLink(s6, h4)
net.addLink(s5, h3)
net.addLink(s2, s4)
info( '*** Starting network\n')
net.build()
info( '*** Starting controllers\n')
for controller in net.controllers:
controller.start()
info( '*** Starting switches\n')
net.get('s3').start([c0])
net.get('s5').start([])
net.get('s7').start([])
net.get('s2').start([])
net.get('s4').start([c0])
net.get('s1').start([])
net.get('s6').start([])
info( '*** Post configure switches and hosts\n')
CLI(net)
net.stop()
if __name__ == '__main__':
setLogLevel( 'info' )
myNetwork()
答案 0 :(得分:0)
我也有这个问题!解决方案是在控制器中使用生成树模块。
如果使用Ryu控制器,则此模块位于路径ryu/ryu/app/simple_switch_stp_13.py
中。
但是要注意!此模块是通过 3开关实现的,但是您具有 6开关。因此,您应该在该模块中添加 3开关并更改配置!