We have previously written about the history of software defined networks / SDN development, about the first commercial SDN project - Nicira Networks (you can 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 / PKS is the separation of the network device control level (for example, route determination and data transmission quality) from the data transfer level (ie, packet forwarding from one port to another according to the switching table). In this case, data transfer control is performed using special software, the so-called controller, running on a separate computer.
The controller is a dedicated server that runs special software consisting of a network operating system and network management applications. A network operating system is a framework that interacts with switching equipment and provides an interface for network applications to monitor and control the entire network. The network operating system does not manage the network by itself; it provides an application programming interface for network applications that already in turn implement network management functionality.
NOX :

first openflow controller. NOX was developed by Nicira Networks engineers along with the OpenFlow protocol. It was originally written with support for two languages: C ++ and Python. In 2008, NOX was published under the GPL license, 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 is also possible to use Debian and RHEL 6). Contains services for building network topology and L2-L3 switching.
In the process of testing, it turned out that the support of two languages strongly affects the performance, so the part responsible for Python was dragged into a separate project, which was later called POX.
Release: 2008')
POX :

POX developers are called the "younger brother" NOX. If the development of NOX main goal was high performance, then POX is primarily aimed at training and research. At its core, POX is a platform for rapid development and prototyping of network management software. This controller is written in Python, it is easy to run on Window, Linux and Mac OS. For example, the Stanford research team uses POX to investigate the key issues of the PCB. POX is in the process of active development: all successful ideas are constantly being moved from laboratory experiments to official releases of the POX controller (at least its developers from Stanford say).
POX supports the same components, a graphical interface, and visualization tools like NOX.
Release: June 2011If you still do not know anything about the PKS / SDN technology and the OpenFlow protocol, but you want to start exploring / exploring / experimenting with it, you'd 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 TutorialBeacon :

It is a fairly fast, cross-platform, modular OpenFlow controller in Java. This controller has been developed 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 switches and 20 physical switches.
Beacon is written in Java and works on many platforms, ranging from high-performance multi-core Linux servers to Android smartphones. The controller developer is David Erickson, Nick McKeon's student, Stanford.
Beacon official website
Release: September 2011Trema : opensource controller developed at NEC. Written in Ruby and C. Currently, Trema only supports the OpenFlow protocol version 1.0.
The basic distribution of Trema (can be downloaded
here ) includes all the source codes needed to develop your own OpenFlow controller.
Release August 2011With the Trema controller, personally, we now have the warmest memories. On Friday, February 15, a special seminar on network operating systems will be held at the
Center for Applied Research of Computer Networks . Before him, we decided to make a vote on determining the best controller. Voting is
here . On the night of February 10-11, the Japanese came and got the votes for Trema. The developers from BigSwitch, who actively voted for their FloodLight, were very upset / offended, made some noise, quarreled with the Japanese. Despite the fact that after wrapping up almost 1,000 votes by the Japanese, there was no point in continuing to vote, we decided not to close the vote. But they found out that (1) the Japanese are the most active and (2) it’s better not to trust them.
Maestro : This is an operating system developed by Rice University. Maestro provides interfaces for implementing modular network management applications to access and change network status and coordinate their interaction. Despite the fact that this project aims to create an OpenFlow controller, Maestro is not limited to OpenFlow networks only. The Maestro programming environment provides interfaces for adding new custom network management components.
In addition, Maestro is trying to use parallelism within the same machine to improve system throughput. The developers say the main properties of Maestro portability and scalability. Maestro developed in Java (both the platform itself and its components) is universal for various operating systems and architectures.
Maestro official website
Release December 2011Here is a
curious test of the performance of NOX, Beacon and Maestro (albeit rather old - May 2011). We are also conducting testing now, we will post the test results on Habré.
FloodLight :

This is a corporate level controller, developed on the basis of the Beacon controller. FloodLight is written in Java and is Apache licensed. This controller is developed by Big Switch Networks. FloodLight as well as other controllers in Java is modular, which is very convenient for developers.
Here and
here are examples of its deployment. FloodLight supports a wide range of virtual and physical switches, capable of supporting mixed OpenFlow networks and networks of traditional architecture. This controller has a tatic Flow Pusher API that facilitates effective network management.
Release January 2012FlowER : one of the few controllers written in Erlang, created by Ericsson and the most preferred service provider in the world due to its reliability, resiliency and ease of building 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), we see a variety of programming languages from C ++ and Python to Java and even to Javascript (node.js).
Official
FlowER website with distributions
Release March 2012Mul : developed in C, has a multi-threading infrastructure at the kernel level. It supports multi-level interface for network applications. The main task in developing this controller was to ensure the performance and reliability that is needed when deploying critical networks.
The open source controller MuL is the base for the commercial controller Kulcloud Networks (South Korea). It was provided by the company in open access and is still actively supported by it. A few days ago came version 2.0
Release May 2012One of the latest trends in SDN / OopenFlow is the creation of distributed controllers. The currently deployed small segments of the PKS are supported by 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 does not cope with the load.
- The problem of reliability. The controller is a single point of failure, i.e. controller failure means failure of the entire network.
Thus, to solve these problems, researchers and developers in the field of the PKS came to the conclusion that a physically distributed level of control is necessary, while maintaining its logical centralization.
In this post, there is already too much information, therefore, we will review the distributed controllers and the test results of the listed controllers as separate posts.