Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

python

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.

like image 920
arpp Avatar asked May 15 '14 11:05

arpp


People also ask

Which controller is being used by Mininet?

By default, Mininet runs Open vSwitch in OpenFlow mode, which requires an OpenFlow controller.

What is a switch in Mininet?

A Switch is a Node that is running (or has execed?) an OpenFlow switch.


1 Answers

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!

like image 167
user3771522 Avatar answered Nov 10 '22 13:11

user3771522