Open Source PKS Controllers

We already wrote about the history of software defined networks / SDN development, about the first commercial SDN project - Nicira Networks (read here ) and the general principle of operation of software-configured networks (read here ).
In the most general sense, the essence of software-configured networks / PCNs is to separate the level of control of network devices (for example, determining the route and quality of data transfer) from the level of data transfer (i.e., forwarding a packet from one port to another according to the switching table). In this case, the control of data transfer occurs using special software, the so-called controller, running on a separate computer.

A controller is a dedicated server that runs special software consisting of a network operating system and network management applications. The network operating system is a framework that interacts with switching equipment and provides an interface for network applications for monitoring and managing the entire network. The network operating system does not manage the network on its own; it provides an application programming interface for network applications, which in turn implement network management functionality.

first openflow controller. NOX was developed by Nicira Networks engineers in parallel with the OpenFlow protocol. It was originally written with support for two languages: C ++ and Python. In 2008, NOX was published under the GPL and since then this controller has been the base for many research groups that are just starting to study SDN. NOX is focused on Linux distributions (in particular, Ubuntu 11.10 and 12.04, but it can also be used on Debian and RHEL 6). Contains services for building a network topology and L2-L3 switching.
During testing, it turned out that support for two languages ​​greatly affects performance, so the part that is responsible for Python was pulled into a separate project, which was later called POX.
Release: 2008

POX controller developers call the "little brother" NOX. If the main goal in developing NOX was high productivity, then POX is primarily aimed at training and research. At its core, POX is a platform for the rapid development and prototyping of network management software. This controller is written in Python and is easy to run on Window, Linux, and Mac OS. For example, a Stanford research team uses POX to research key PCD problems. POX is under active development: all successful ideas are constantly moving from laboratory experiments to official releases of the POX controller (at least so its developers from Stanford say).
POX supports the same components, graphical interface, visualization tools as NOX.
Released: June 2011

If you don't know anything about PKS / SDN technology and the OpenFlow protocol yet, but want to start exploring / exploring / experimenting with it, you better start with POX.
NOX and POX were developed and supported mainly by 3 engineers: Murphy McCauley, Amin Tootoonchian and Kyriakos Zarifis. There is a very clear OpenFlow Tutorial

Beacon :
it is a fairly fast, cross-platform, modular OpenFlow controller in Java. This controller has been under development for more than two years. Beacon is used in many research projects and test implementations / deployments. Beacon is used at Stanford's experimental data center in which it manages 100 virtual and 20 physical switches
Beacon is written in Java and runs on many platforms, from high-performance multi-core Linux servers to Android smartphones. The controller is developed by David Erickson, a student at Nick McKeon, Stanford. Beacon official site
Release: September 2011

Trema : opensource controller developed by NEC. It is written in Ruby and C. Trema currently only supports OpenFlow protocol version 1.0.
The core Trema distribution (available for download here ) includes all the source code needed to develop your own OpenFlow controller.
Released: August 2011.

We now personally have the “fondest” memories associated with the Trema controller. Friday February 15th atThe Center for Applied Research on Computer Networks will host a special seminar on network operating systems. Before him, we decided to make a vote to determine the best controller. Voting is here . On the night of February 10-11, the Japanese came and got a vote for Trema. Developers from BigSwitch, who actively voted for their FloodLight, were very upset / offended, made some noise, and scolded the Japanese. Despite the fact that after a cheat of almost 1000 votes by the Japanese, the vote did not make sense to continue, we decided not to close the vote. But then they found out that (1) the Japanese are the most active and (2) it is better not to trust them.

Maestro: This is an operating system developed by Rice University. Maestro provides interfaces for implementing modular network management applications for accessing and changing network status, as well as coordinating their interactions. Despite the fact that this project is aimed at creating an OpenFlow controller, Maestro is not limited to OpenFlow networks. The Maestro programming environment provides interfaces for adding new custom network management components.
In addition, Maestro is trying to use concurrency within the same machine to improve system throughput. Developers claim Maestro's core features are portability and scalability. Maestro is developed in Java (both the platform itself and its components), is universal for various OS and architectures.
Official Maestro website
Release: December 2011

Here is a curious test for the performance of NOX, Beacon and Maestro (though quite old - May 2011). We also conduct testing now, we will post the test results on Habré.

FloodLight :
This is an enterprise-class controller based on the Beacon controller. FloodLight is written in Java and is licensed by Apache. This controller is developed by Big Switch Networks. FloodLight as well as other Java controllers is modular, which is very convenient for developers. Here and hereThere are examples of its deployment. FloodLight supports a wide range of virtual and physical switches, capable of supporting mixed OpenFlow networks and traditional architecture networks. This controller has a Flow Pusher API that facilitates efficient network management.
Released: January 2012

FlowER: one of the few controllers written in Erlang, created by Ericsson and the most preferred service provider in the world due to its reliability, fault tolerance and ease of creation of distributed parallel systems. Erlang also has its fans in the world of cloud computing, primarily Amazon and Google. If you look at the list of open source controllers (there are about 30 of them), we see a variety in programming languages ​​from C ++ and Python to Java and even in Javascript (node.js). FlowER
official website with distributions Release: March 2012 Mul

: developed in C, has a multithreaded infrastructure at the kernel level. It supports a multi-level interface for network applications. The main task in the development of this controller was to ensure the performance and reliability that is necessary when deploying critical networks.
The MuL open source controller is the base for the Kulcloud Networks commercial controller (South Korea). It was provided by the company in the public domain and is still actively supported by it. Version 2.0 was released a few days ago.
Release: May 2012.

One of the most recent trends in SDN / OopenFlow is the creation of distributed controllers. Currently deployed small segments of the PCB are supported using a single controller, which in turn has a number of significant drawbacks, namely:
- The problem of controller scalability, namely the problem of increasing delays for a large network due to the fact that the controller can not cope with the load.
- The problem of reliability. The controller is a single point of failure, i.e. controller failure means network failure.
Thus, to solve these problems, researchers and developers in the field of PCS came to the conclusion that a physically distributed level of control is necessary, while maintaining its logical centralization.
There is already too much information in this post, so we will make a review of the distributed controllers and testing results of the listed controllers separate posts.

Also popular now: