from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSKernelSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel
from mininet.link import TCLink
def topology():
net = Mininet(controller=RemoteController, link=TCLink, switch=OVSKernelSwitch)
c0 = net.addController('c0', controller=RemoteController, ip='127.0.0.1', port=6653)
h1 = net.addHost('h1', mac='00:00:00:00:00:01', ip='10.0.0.1')
h2 = net.addHost('h2', mac='00:00:00:00:00:02', ip='10.0.0.2')
h3 = net.addHost('h3', mac='00:00:00:00:00:03', ip='10.0.0.3')
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')
s8 = net.addSwitch('s8')
s9 = net.addSwitch('s9')
s10 = net.addSwitch('s10')
s11 = net.addSwitch('s11')
s12 = net.addSwitch('s12')
s13 = net.addSwitch('s13')
s14 = net.addSwitch('s14')
net.addLink(s1, s2, 1, 1, bw=1, delay='1ms', loss=0)
net.addLink(s2, s3, 2, 1, bw=1, delay='1ms', loss=0)
net.addLink(s3, s4, 2, 1, bw=1, delay='1ms', loss=0)
net.addLink(s4, s5, 2, 1, bw=1, delay='1ms', loss=0)
net.addLink(s5, s6, 2, 1, bw=1, delay='1ms', loss=0)
net.addLink(s6, s7, 2, 1, bw=1, delay='1ms', loss=0)
net.addLink(s7, s8, 2, 1, bw=1, delay='1ms', loss=0)
net.addLink(s7, s9, 3, 1, bw=1, delay='1ms', loss=0)
net.addLink(s8, s10, 2, 1, bw=1, delay='1ms', loss=0)
net.addLink(s10, s11, 2, 1, bw=1, delay='1ms', loss=0)
net.addLink(s11, s12, 2, 1, bw=1, delay='1ms', loss=0)
net.addLink(s12, s13, 2, 1, bw=1, delay='1ms', loss=0)
net.addLink(s11, s13, 3, 2, bw=1, delay='2ms', loss=0)
net.addLink(s11, s14, 4, 1, bw=1, delay='1ms', loss=0)
net.addLink(s1, s3, 2, 3, bw=1, delay='100ms', loss=0)
net.addLink(s4, s6, 3, 3, bw=1, delay='100ms', loss=0)
net.addLink(s7, s10, 4, 3, bw=1, delay='100ms', loss=0)
net.addLink(h1, s2, 1, 3, bw=1, delay='1ms', loss=0)
net.addLink(h2, s5, 1, 3, bw=1, delay='1ms', loss=0)
net.addLink(h3, s9, 1, 2, bw=1, delay='1ms', loss=0)
net.addLink(s4, s1, 4, 3, bw=1, delay='5ms', loss=0)
net.addLink(s5, s2, 4, 4, bw=1, delay='5ms', loss=0)
net.addLink(s6, s3, 4, 4, bw=1, delay='5ms', loss=0)
net.addLink(s5, s3, 5, 5, bw=1, delay='1ms', loss=0)
net.addLink(s8, s5, 3, 6, bw=1, delay='5ms', loss=0)
net.addLink(s11, s7, 5, 5, bw=1, delay='5ms', loss=0)
net.addLink(s5, s1, 7, 4, bw=1, delay='5ms', loss=0)
net.addLink(s6, s2, 5, 5, bw=1, delay='5ms', loss=0)
net.addLink(s7, s4, 6, 5, bw=1, delay='5ms', loss=0)
net.addLink(s8, s6, 4, 6, bw=1, delay='5ms', loss=0)
net.addLink(s9, s8, 3, 5, bw=1, delay='5ms', loss=0)
c0.start()
s1.start([c0])
s2.start([c0])
s3.start([c0])
s4.start([c0])
s5.start([c0])
s6.start([c0])
s7.start([c0])
s8.start([c0])
s9.start([c0])
s10.start([c0])
s11.start([c0])
s12.start([c0])
s13.start([c0])
s14.start([c0])
net.build()
CLI(net)
net.stop()
if name == 'main':
setLogLevel( 'info' )
topology()