from mininet.net import Mininet
from mininet.node import Controller
from mininet.cli import CLI
from mininet.log import setLogLevel, info
def treeTopo():
net = Mininet( controller=Controller )
info( '*** Adding controller\n' )
net.addController( 'c0' )
info( '*** Adding hosts\n' )
h1 = net.addHost( 'h1', ip='10.0.0.1' )
h2 = net.addHost( 'h2', ip='10.0.0.2' )
h3 = net.addHost( 'h3', ip='10.0.0.3' )
h4 = net.addHost( 'h4', ip='10.0.0.4' )
h5 = net.addHost( 'h5', ip='10.0.0.5' )
h6 = net.addHost( 'h6', ip='10.0.0.6' )
h7 = net.addHost( 'h7', ip='10.0.0.7' )
h8 = net.addHost( 'h8', ip='10.0.0.8' )
info( '*** Adding switches\n' )
s1 = net.addSwitch( 's1' )
s2 = net.addSwitch( 's2' )
s3 = net.addSwitch( 's3' )
s4 = net.addSwitch( 's4' )
s5 = net.addSwitch( 's5' )
s6 = net.addSwitch( 's6' )
s7 = net.addSwitch( 's7' )
info( '*** Creating links\n' )
net.addLink( h1, s3 )
net.addLink( h2, s3 )
net.addLink( h3, s4 )
net.addLink( h4, s4 )
net.addLink( h5, s6 )
net.addLink( h6, s6 )
net.addLink( h7, s7 )
net.addLink( h8, s7 )
root = s1
layer1 = [s2,s5]
layer2 = [s3,s4,s6,s7]
for idx,l1 in enumerate(layer1):
net.addLink( root,l1 )
net.addLink( l1, layer2[2*idx] )
net.addLink( l1, layer2[2*idx + 1] )
info( '*** Starting network\n')
net.start()
info( '*** Running CLI\n' )
CLI( net )
info( '*** Stopping network' )
net.stop()
if __name__ == '__main__':
setLogLevel( 'info' )
treeTopo()