Added new example of multiple controllers.
This commit is contained in:
Executable
+60
@@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
"""
|
||||||
|
This example creates a multi-controller network from
|
||||||
|
semi-scratch; note a topo object could also be used and
|
||||||
|
would be passed into the Mininet() constructor.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from mininet.net import Mininet
|
||||||
|
from mininet.node import Controller, OVSKernelSwitch
|
||||||
|
from mininet.cli import CLI
|
||||||
|
from mininet.log import setLogLevel
|
||||||
|
|
||||||
|
Switch = OVSKernelSwitch
|
||||||
|
|
||||||
|
def addHost( net, N ):
|
||||||
|
"Create host hN and add to net."
|
||||||
|
name = 'h%d' % N
|
||||||
|
ip = '10.0.0.%d' % N
|
||||||
|
return net.addHost( name, ip=ip )
|
||||||
|
|
||||||
|
def multiControllerNet():
|
||||||
|
|
||||||
|
net = Mininet( controller=Controller, switch=Switch)
|
||||||
|
|
||||||
|
print "*** Creating controllers"
|
||||||
|
c1 = net.addController( 'c1', port=6633 )
|
||||||
|
c2 = net.addController( 'c2', port=6634 )
|
||||||
|
|
||||||
|
print "*** Creating switches"
|
||||||
|
s1 = net.addSwitch( 's1' )
|
||||||
|
s2 = net.addSwitch( 's2' )
|
||||||
|
|
||||||
|
print "*** Creating hosts"
|
||||||
|
hosts1 = [ addHost( net, n ) for n in 3, 4 ]
|
||||||
|
hosts2 = [ addHost( net, n ) for n in 5, 6 ]
|
||||||
|
|
||||||
|
print "*** Creating links"
|
||||||
|
[ s1.linkTo( h ) for h in hosts1 ]
|
||||||
|
[ s2.linkTo( h ) for h in hosts2 ]
|
||||||
|
s1.linkTo( s2 )
|
||||||
|
|
||||||
|
print "*** Starting network"
|
||||||
|
net.build()
|
||||||
|
[ controller.start() for controller in c1, c2 ]
|
||||||
|
s1.start( [ c1 ] )
|
||||||
|
s2.start( [ c2 ] )
|
||||||
|
|
||||||
|
print "*** Testing network"
|
||||||
|
net.pingAll()
|
||||||
|
|
||||||
|
print "*** Running CLI"
|
||||||
|
CLI( net )
|
||||||
|
|
||||||
|
print "*** Stopping network"
|
||||||
|
net.stop()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
setLogLevel( 'info' ) # for CLI output
|
||||||
|
multiControllerNet()
|
||||||
Reference in New Issue
Block a user