mininet / mininet

Emulator for rapid prototyping of Software Defined Networks
https://mininet.org
BSD 3-Clause "New" or "Revised" License
5.41k stars 1.76k forks source link

How to run 3 remote pox controllers in mininet? #851

Closed raghdaaljaff closed 5 years ago

raghdaaljaff commented 5 years ago

Hello, I tried to create 3 remote controller on the same vm and on different ports I used respectively 6633,6634,6635 and opened the another terminal to run the pox the first pox is working well but the second pox controller no working and too the third pox controllers,Do you have away to run the all three pox controllers successfully in the same topology thanks all

gabay commented 5 years ago

Hello

It seems like a problem with pox rather than with mininet. Could you attach the commands you used to run the controllers and mininet?

raghdaaljaff commented 5 years ago

@gabay thanks for reply,First I wrote the forwarding.l2_pairs —port =6633 in the first terminal and second terminal I wrote forwarding.l2_pairs —port =6634 and in the third terminal I wrote the forwarding.l2_pairs —port =6635 and I opened the terminal to run the custom topology that content to 3 controllers remote and every controller connect to switch that means I had 3 switches and 6 host , each two hosts for one switch and one controller The messages appear for 3 controllers connected,INFO:openflow.of_01:[00-00-00-00-00-01 2] connected openflow.of_01:[00-00-00-00-00-02 3] connected openflow.of_01:[00-00-00-00-00-03 4] connected what that output in these are 3 pox controllers? and how I can make link between 3 pox controllers This is my issue

gabay commented 5 years ago

@raghdaaljaff Thanks for your input

I reproduced your situation as follows: controller 1: ./pox.py openflow.of_01 --port=6000 forwarding.l2_pairs controller 2: ./pox.py openflow.of_01 --port=6001 forwarding.l2_pairs mininet: sudo mn --topo linear,2 --controller remote,port=6000 --controller remote,port=6001

Result: All switches were connected to all controllers

I think that this is the desired output. If you'd like each switch to connect to only one controller, try to create a custom switch:


class MySwitch(node.OVSSwitch):
    def start(self, controllers):
        # choose controller based on dpid
        super(MySwitch, self).start([controllers[int(self.dpid, 16)-1]])

switches = {'default': MySwitch}```

mininet: `sudo mn --custom <CUSTOM SWITCH FILE> --topo linear,2 --controller remote,port=6000 --controller remote,port=6001`

output: s1 connects only to port 6000, s2 connects only to port 6001 :)

Does this answer your question?
raghdaaljaff commented 5 years ago

@Roi Gabay thanks I did 3 controllers to connect to 3 switches that means every controller connect to one switch , my issue no connectivity between the 3 controllers,how I can make link between 3 pox controllers thanks for any suggestion,my regards.

Regards.

On Jan 18, 2019, at 9:13 AM, Roi Gabay notifications@github.com wrote:

@raghdaaljaff Thanks for your input

I reproduced your situation as follows: controller 1: ./pox.py openflow.of_01 --port=6000 forwarding.l2_pairs controller 2: ./pox.py openflow.of_01 --port=6001 forwarding.l2_pairs mininet: sudo mn --topo linear,2 --controller remote,port=6000 --controller remote,port=6001

Result: All switches were connected to all controllers

I think that this is the desired output. If you'd like each switch to connect to only one controller, try to create a custom switch: `from mininet import node class MySwitch(node.OVSSwitch): def start(self, controllers):

choose controller based on dpid

super(MySwitch, self).start([controllers[int(self.dpid, 16)-1]])

switches = {'default': MySwitch}`

mininet: sudo mn --custom --topo linear,2 --controller remote,port=6000 --controller remote,port=6001

output: s1 connects only to port 6000, s2 connects only to port 6001 :)

Does this answer your question?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gabay commented 5 years ago

I don't think that controllers are supposed to be connected through Mininet. So your issue is likely not mininet-dependent.

You can use the fact that the controllers all have the same loopback interface, or the same filesystem, for IPC.

lantz commented 5 years ago

@gabay is correct (though it is possible to model a control network in Mininet)

SyedMohsan commented 5 years ago

controller 1: ./pox.py openflow.of_01 --port=6000 forwarding.l2_pairs controller 2: ./pox.py openflow.of_01 --port=6001 forwarding.l2_pairs mininet: sudo mn --topo linear,2 --controller remote,port=6000 --controller remote,port=6001

Result: All switches were connected to all controllers

@gabay thank you very much for solving the out-of-band communication parallel to multiple controller placement

tobiayofe commented 2 years ago

What's the difference between forwarding.l2_pairs and forwarding.l2_learning?