SDN Controllers (aka SDN Controller Platforms) in a software-defined network (SDN) is the “brains” of the network. It is the application that acts as a 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. Other 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) – developed 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.
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 currently available. The earliest ones include POX and Beacon. 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 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, Lumina Networks, 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.
The eighth and the most recent OpenDaylight code is Oxygen, released in 2018, that features a P4 plugin-in and a Kubernetes plug-in for mixed virtual machines-container environments. Oxygen also embraces a “managed distribution’ model. ODL defines this model as the disconnecting of “non-core projects from the main release process and allows them to evolve at their own pace.”
As a challenge to OpenDaylight Controllers, On.Lab created the Open Networking Operating System (ONOS) Controller to be open sourced. Companies supporting it include AT&T, Dell EMC, Intel, Google, NTT, Ciena and Juniper Networks. It is distributed via the Apache 2.0 License.
OpenDaylight is an interesting development, due to the cross-market support the project – a sampling of members that make up the Linux Foundation that supports open source networking include:
SDN and SD-WAN Controller
Software-defined wide-area network (SD-WAN) has seen increased popularity among enterprises. One of those reasons for its popularity is since the centralized application-based policy controller leverages existing hybrid WAN architectures. The controller in conjunction with analytics brings network and application visibility. SD-WAN is an extension of SDN. It applies SDN to unify networking connections covering a wide geographical area within an enterprise. This technology reduces cost by eliminating the need for expensive routers, and it elevates security by providing a network with end-to-end encryption across the network.