Search code examples
pythonmininet

how to connect different switches to different remote controllers in mininet?


I want to connect different switches of the mininet virtual network to different remote controller and am unable to get any idea how to proceed. Please provide any method to do this?

Any python example is appreciated.


Solution

  • I recommand you to read this mail form mininet's mailing list archives in order to have an idea about how to do it yourself. I hope you already know the mininet's python API too. Find below the python code i wrote. You can custumize it

    #!/usr/bin/python
    
    from mininet.net import Mininet
    from mininet.node import Controller, RemoteController
    from mininet.cli import CLI
    from mininet.log import setLogLevel, info
    
    def myNet():
    
    
        #OpenDayLight controller
        ODL_CONTROLLER_IP='10.0.0.4'
    
        #Floodlight controller
        FL_CONTROLLER_IP='10.0.0.5'
    
        net = Mininet( topo=None, build=False)
    
        # Create nodes
        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' )
    
        # Create switches
        s1 = net.addSwitch( 's1', listenPort=6634, mac='00:00:00:00:00:01' )
        s2 = net.addSwitch( 's2', listenPort=6634, mac='00:00:00:00:00:02' )
    
        print "*** Creating links"
        net.addLink(h1, s1, )
        net.addLink(h2, s2, )   
        net.addLink(s1, s2, )  
    
        # Add Controllers
        odl_ctrl = net.addController( 'c0', controller=RemoteController, ip=ODL_CONTROLLER_IP, port=6633)
    
        fl_ctrl = net.addController( 'c1', controller=RemoteController, ip=FL_CONTROLLER_IP, port=6633)
    
    
        net.build()
    
        # Connect each switch to a different controller
        s1.start( [odl_ctrl] )
        s2.start( [fl_ctrl] )
    
        s1.cmdPrint('ovs-vsctl show')
    
        CLI( net )
        net.stop()
    
    if __name__ == '__main__':
        setLogLevel( 'info' )
        myNet()
    

    Have fun!