61 lines
1.4 KiB
Python
Executable File
61 lines
1.4 KiB
Python
Executable File
#!/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()
|