Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What alternatives SDN controllers to POX are available?

I would like to get your advice about the best open-source SDN controller available. I want to implement and test some ideas I have in my research so I need to use a simulation such as Mininet. In fact, I am familiar with mininet and able to deal with it. However, Mininet uses POX controller which a bit tedious and not that much user friendly so when it comes to manage the network topology and modify the flows, it becomes a hard task since you need to hard code everything from the scratch ( I am a beginner in Python as well). Is there a user-friendly SDN controller that I can use instead POX? I've tried Floodlight and Opendaylight but there are not really ready and involves many bugs.

Thank you.

like image 739
Friddy Joe Avatar asked Jan 05 '16 22:01

Friddy Joe


People also ask

What is Pox SDN controller?

POX is a Python based open source OpenFlow/Software Defined Networking (SDN) Controller. POX is used for faster development and prototyping of new network applications. POX controller comes pre installed with the mininet virtual machine.

Is OpenDaylight an SDN controller?

OpenDaylight is an open source SDN controller / framework, hosted by the Linux Foundation. It's one of the more popular (open source) SDN controllers at the moment.


3 Answers

Nox

It all began with NOX. While some might argue, NOX is the very first OpenFlow controller that attracted a whole lot of researchers around itself and achieved to have a wide acceptance. A majority of the primary Software-Defined Networking (SDN) and OpenFlow papers and applications are implemented on top of NOX. Even Google used NOX to build (prototype?) its own distributed OpenFlow controller, called ONIX. That being said, all that fuss was left in 2010. From then on the NOX mailing-lists are almost abandoned and no major changes that I know of is introduced to the code base.

Pox

POX calls itself as the younger sibling of NOX. (They are both managed/maintained by the same team/organization.) My personal belief is that POX is more or less motivated by the purpose of creating a developer-friendly OpenFlow controller successor to the NOX. Almost all OpenFlow newcomers are directed to either POX or Floodlight. Hence, it is no surprise that it has a pretty active mailing list. POX provides a limited web API (via JSON-RPC) and a moderate sized collection of manuals on its wiki. It is written in Python and provides a decent Python API for the Pythonistas out there. Due to Python being an interpreted language, POX really cuts down the time spent in develop-and-deploy cycle, particularly compared to C++ based NOX. Further, in addition to supporting the NOX GUI, POX also provides a web-based GUI.

Beacon

To sum up, Beacon provides a compact and expressive code base and works flawlessly. That being said, Eclipse and OSGi dependency really kills me and supporting only star topologies (that is, topologies without loops) is very constraining. If you are about to give Beacon a try, I would recommend you to evaluate Floodlight instead.

Floodlight

Floodlight has unquestionably the most active and responsive community among the F/OSS OpenFlow softwares. A majority of the Floodlight developers working in BigSwitch Networks directly participate in the mailing-lists. You can find yourself discussing an issue with the actual developer(s) of a particular module. I have never witnessed neither an unanswered question, nor an unresolved problem. It was truly a supportive and active community. Floodlight exposes almost all of its functionality through a REST API and there exists many handy utilities for common tasks such as static routes and end-to-end route (circuit) pushes. Floodlight has a web-based UI (contributed by Wes Felter) and a Java-based GUI, called Avior, contributed by Jason Parraga. One of its kind, Floodlight can also be run as network backend for OpenStack using a Quantum plug-in. Finally, it is the most documented controller project out there in the ecosystem.

Ryu

Ryu is a component-based software defined networking framework. Ryu provides software components with well defined API that make it easy for developers to create new network management and control applications. Ryu supports various protocols for managing network devices, such as OpenFlow, Netconf, OF-config, etc. About OpenFlow, Ryu supports fully 1.0, 1.2, 1.3, 1.4, 1.5 and Nicira Extensions. All of the code is freely available under the Apache 2.0 license. **

ONOS

The ONOS (Open Network Operating System) project is an open source community hosted by The Linux Foundation. The goal of the project is to create a software-defined networking (SDN) operating system for communications service providers that is designed for scalability, high performance and high availability.

Opendaylight

The OpenDaylight Project is a collaborative open source project hosted by The Linux Foundation. The goal of the project is to accelerate the adoption of software-defined networking (SDN) and create a solid foundation for Network Functions Virtualization (NFV). The software is written in Java.

like image 93
Hossein Avatar answered Oct 17 '22 11:10

Hossein


First, both Floodlight and OpenDaylight are production-ready. Though this post was from a few months ago, OpenDaylight was running in production in many organizations by then.

Assuming for some other reason you prefer controllers other than OpenDaylight and Floodlight, you may give a try to ONOS or Kandoo/beehive distributed controller https://github.com/kandoo/beehive-netctrl

Please note that your claim Mininet uses POX is misleading. You may use any controller with Mininet.

For example,

  1. Configuring Mininet with Floodlight - http://kkpradeeban.blogspot.com/2015/09/configuring-mininet-with-floodlight.html

  2. Configuring Mininet with OpenDaylight - http://kkpradeeban.blogspot.com/2014/10/configuring-opendaylight-with-mininet.html

like image 29
Pradeeban Kathiravelu Avatar answered Oct 17 '22 11:10

Pradeeban Kathiravelu


I think you can try to use ryu. It's based on python and easy to use.

There's a simple way to install ryu controller, try sdnds-tw/ryuInstallHelper

like image 2
Phil Huang Avatar answered Oct 17 '22 12:10

Phil Huang