from mininet.net import Mininet from mininet.node import Controller, RemoteController from mininet.cli import CLI from mininet.log import setLogLevel, info def HierarchyTopology(): net = Mininet( topo=None, build=False) info("***Create nodes***\n") h1 = net.addHost( 'h1', mac='01:00:00:00:01:00', ip='192.168.0.1/24' ) h2 = net.addHost( 'h2', mac='01:00:00:00:02:00', ip='192.168.0.2/24' ) info("***Create switches***\n") s0 = net.addSwitch( 's0', listenPort=6634, mac='00:00:00:00:00:01' ) s1 = net.addSwitch( 's1', listenPort=6634, mac='00:00:00:00:00:02' ) s2 = net.addSwitch( 's2', listenPort=6634, mac='00:00:00:00:00:03' ) s3 = net.addSwitch( 's3', listenPort=6634, mac='00:00:00:00:00:04' ) s4 = net.addSwitch( 's4', listenPort=6634, mac='00:00:00:00:00:05' ) s5 = net.addSwitch( 's5', listenPort=6634, mac='00:00:00:00:00:06' ) info("***Creating links***\n") net.addLink( h1,s0 ) net.addLink( s0,s1 ) net.addLink( s0,s2 ) net.addLink( s1,s3 ) net.addLink( s1,s4 ) net.addLink( s2,s3 ) net.addLink( s2,s4 ) net.addLink( s3,s5 ) net.addLink( s4,s5 ) net.addLink( s5,h2 ) info("***Add Controllers***") odl1 = net.addController( 'c1', controller=RemoteController, ip='192.168.103.142', port=6633) odl2 = net.addController( 'c2', controller=RemoteController, ip='192.168.103.143', port=6633) net.build() info("***Connect each switch to a different controller***") s0.start( [odl1] ) s1.start( [odl1] ) s2.start( [odl1] ) s3.start( [odl2] ) s4.start( [odl2] ) s5.start( [odl2] ) s1.cmdPrint('ovs-vsctl show') CLI( net ) net.stop() if __name__ == '__main__': setLogLevel( 'info' ) HierarchyTopology()
h1 ping h2 h2 ping h1