Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can support multi-controller? #109

Open
chitsukhin opened this issue Aug 25, 2020 · 1 comment
Open

Can support multi-controller? #109

chitsukhin opened this issue Aug 25, 2020 · 1 comment

Comments

@chitsukhin
Copy link

Can Ryu support Multi-controller or not??
how to create multi-controller network in mininet and how to run Ryu app in each controller??

@cdalamagkas
Copy link

The simplest answer is to connect the switches to multiple controllers concurrently (if you use mininet, this is a mininet configuration issue). By doing this, all controllers have the EQUAL role, and you can use any of them to issue commands. To the best of my knowledge, the Ryu framework does not support coordination among the Ryu instances or load balancing. You need to write custom code for that.

If you need to elect a master controller and have the others as backups, then you should write the code for the election coordination from scratch. Taking the example of Zookeeper, each Ryu controller instance can run a dedicated RyuApp to communicate with Zookeeper and enter in an election procedure. The instance that wins the election process promotes itself to master. The rest of the controllers should monitor the status of the master controller and if the latter fails, then a new election procedure should start.

This is a starting example (https://github.com/coscin/coscin-app-ryu) if you want to go for the master/slave approach. Although, this project has several drawbacks, including that it does not scale for multiple switches and implements a manual heartbeat mechanism rather than leveraging the internal mechanism of Ryu to monitor the connection status of a switch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants