SDN Controllers (aka SDN Controller Platforms) in a software-defined network (SDN) are the “brains” of the network. It is the application that acts as strategic control point in the SDN network, manage flow control to the switches/routers ‘below’ (via southbound APIs) and the applications and business logic ‘above’ (via northbound APIs) to deploy intelligent networks. Recently, as organizations deploy more SDN networks, the Controllers have been tasked with federating between SDN Controller domains, using common application interfaces, such as OpenFlow and open virtual switch database (OVSDB).
An SDN Controller platform typically contains a collection of “pluggable” modules that can perform different network tasks. Some of the basic tasks including inventorying what devices are within the network and the capabilities of each, gathering network statistics, etc. Extensions can be inserted that enhance the functionality and support more advanced capabilities, such as running algorithms to perform analytics and orchestrating new rules throughout the network.
Two of the most well-known protocols used by SDN Controllers to communicate with the switches/routers is OpenFlow and OVSDB. Others protocols that could be used by an SDN Controller is YANG or NetConf. Other SDN Controller protocols are being developed, while more established networking protocols are finding ways to run in an SDN environment. For example, the Internet Engineering Task Force (IETF) working group – the Interface to the Routing System (i2rs) – is developing an SDN standard that enables an SDN Controller to leverage proven, traditional protocols, such as OSPF, MPLS, BGP, and IS-IS.
The type of protocols supported can influence the overall architecture of the network – for example, while OpenFlow attempts to completely centralize packet-forwarding decisions, i2rs splits the decision making by leveraging traditional routing protocols to execute distributed routing and allowing applications to modify routing decisions.
For detailed SDN Controller Vendor and Open Source SDN Controller comparisons, checkout the 2016 Future of Network Virtualization and SDN Controllers Report also available as PDF Download
A Little History about SDN Controller Platforms
A current battle is raging between networking vendors, who want to provide their own SDN Controllers to orchestrate their own equipment (and potentially other vendors’ networking equipment), and Open Source Controllers designed for all vendors to support.
The first SDN Controller was NOX, which was initially developed by Nicira Neworks, alongside OpenFlow. In 2008, Nicira Networks (acquired by VMWare) donated NOX to the SDN community (it was open sourced), where it has become the basis for many subsequent SDN Controller solutions. Nicira then went on to co-develop ONIX with NTT and Google; ONIX is the base for the Nicira/VMware Controller and rumored to be the base for the Google WAN Controller. While ONIX was originally supposed to be opened up, the parties later decided not to make it Open Source.
There are, however, a variety of Open Source Controllers under development, from POX to Beacon, which is one of the most popular. Started in early 2010, Beacon is a Java-based OpenFlow Controller licensed under a combination of the GPL v2 license and the Stanford University FOSS License Exception v1.0. Other SDN Controllers of note include Trema (Ruby-based from NEC), as well as Ryu (supported by NTT). You can see a full list of Open Source projects here.
Floodlight was forked from Beacon – it was made available under an Apache 2.0 license and formed the basis of one of the early commercial Controllers from Big Switch Networks. Note, NEC’s ProgrammableFlow Controller was actually the first commercial SDN Controller on the market, and it was NOT derivative of any of the Open Source Controllers.
Subsequently, vendors, such as Cisco, HP, IBM, VMWare and Juniper have jumped into the SDN Controller market with their own offerings. The original HP, Cisco, and IBM Controllers are all based off Beacon, and now have moved toward OpenDaylight. The Juniper SDN Controller became a part of their product portfolio when they acquired Contrail; it is available in both open source and commercial versions.
OpenDaylight SDN Controllers
On April 8, 2013, the open-source foundation, OpenDaylight, which is part of the Linux Foundation, was announced. This Controller is Java-based, and derived from the original Beacon design. It supports OpenFlow and other southbound APIs (such as Cisco OpFlex) and includes critical features, such as high-availability and clustering.
An OpenDaylight Controller is implemented solely in software and is kept within its own Java Virtual Machine (JVM), but it can be deployed in a variety of production network environments. In conjunction with its SDN Controller, OpenDaylight Project released its first code, Hydrogen, which offered three different editions for users. In September 2014, OpenDaylight Project unveiled its second code release, Helium. Both code releases are open frameworks for network programmability to enable SDN for any size networks. Companies like Cisco and Brocade are shipping their own OpenDaylight Controllers, including Cisco’s Hydrogen-based Extensible Network Controller and Brocade’s Helium-based Vyatta Controller. Extreme Networks has also said it will release an SDN Controller under OpenDaylight software.
As a challenge to OpenDaylight Controllers, On.Lab created the Open Networking Operating System (ONOS) Controller to be open sourced, but it hasn’t been. Companies supporting it include AT&T, Microsoft, HP, Ericsson, NTT, Ciena and Extreme Networks.
Reprinted with permission from the OpenDaylight Project
OpenDaylight is an interesting development, due to the cross market support the project – a sampling of members that make up the Foundation include: