Comparing Open Source SDN Controllers, like OpenDaylight, OpenContrail, and ONOS is a challenge. In Part 1 we compared commercial SDN controller vendors. Here in part 2, we’ll compare open source SDN Controllers. In a software-defined network (SDN), the SDN Controllers is the “brains” of the network. It is the strategic control point in the SDN network, relaying information to the switches/routers ‘below’ (via southbound APIs) and the applications and business logic ‘above’ (via northbound APIs).
The open source SDN Controllers are platforms that typically contains a collection of “pluggable” modules that perform different network tasks. Some of the basic tasks include inventorying what devices are within the network and the capabilities of each and gathering network statistics. Extensions can be inserted that enhance the functionality and that supports more advanced capabilities, such as running algorithms to perform analytics and orchestrating new rules throughout the network.
There are a variety of Open Source SDN 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).
Open Source SDN Controllers and SDN Controller Comparison
- A10 Networks LBaaS Neutron
This A10 Network Driver is specifically designed to manage Thunder Series Appliances. A non-community version of the driver can be provided which extends horizon and other component.
Corsa is heavily involved in the deployment of Atrium. The Open Network Foundation’s (ONF) Atrium is the first-of-its-kind effort to integrate the industry’s best-of-breed open source SDN building blocks into a complete SDN distribution for network operators. The first release of Atrium features ONOS as the carrier-grade control plane.
- Cisco ML2 Mechanism Driver
The Cisco Nexus ML2 Mechanism Driver implements the ML2 Plugin Mechanism Driver API. This driver manages multiple types of Cisco Nexus switches. Note: The initial version of this driver supports only the VLAN network type on a single physical network
- Cisco Nexus Neutron Plug-in
The Cisco Nexus® family of switches has been a staple in data centers since its introduction in 2008. The Cisco Nexus plug-in for OpenStack Neutron allows customers to easily build their infrastructure-as-a-service (IaaS) networks using the industry
- Cisco Nexus Quantum Plug-in
Cisco Quantum is an integrated suite of network management tools. The solution can allow you to efficiently and effectively monetize and optimize your networks in the face of ever-increasing demands.
- Cloudify OpenStack Plugin
The OpenStack plugin allows users to use an OpenStack based cloud infrastructure for deploying services and applications.
The Dronecode Project is an open source, collaborative project that brings together existing and future open source drone projects under a nonprofit structure governed by The Linux Foundation. The result will be a common, shared open source platform for Unmanned Aerial Vehicles (UAVs).
- Experimental OpenFlow Fields: PoC
Enabling OpenFlow protocol extensions to support valuable vendor-specific features on OpenFlow-compatible Layer3 switch
- Facebook Open Switching System (FBOSS)
Despite having "OS" in its name, FBOSS is not a full operating system. Facebook Open Switching System (FBOSS) is a set of applications that can be run on a standard Linux OS. The initial FBOSS release consists primarily of the FBOSS agent, a daemon that programs and controls the ASIC. This process runs on each switch and manages the hardware forwarding ASIC.
- Faucet SDN Controller
FAUCET is an OpenFlow controller for multi table OpenFlow 1.3 switches, that implements layer 2 switching, VLANs, ACLs, and layer 3 IPv4 and IPv6 routing, static and via BGP. It is based on Waikato University's Valve and the Ryu OpenFlow Controller.
FlowER is an open-source Erlang based OpenFlow controller. Its purpose is to provide a simplified platform for writing network control software in Erlang. Its still under development but Travelping, FlowER’s creator, is already using it in its products.
HAProxy is a free, very fast and reliable solution offering high availability, load balancing, and proxying for TCP and HTTP-based applications. It is particularly suited for very high traffic web sites and powers quite a number of the world's most visited ones. Over the years it has become the de-facto standard open source load balancer, is now shipped with most mainstream Linux distributions, and is often deployed by default in cloud platforms
IRIS is the Openflow-based Resursive SDN Openflow Controller created by SDN Research Section, ETRI.
KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko. KVM also requires a modified QEMU although work is underway to get the required changes upstream.
The purpose of the LOOM project is to design and prototype an experimental network switch controller that implements the OpenFlow 1.3.x and 1.4 protocols.
- Mellanox Neutron Plugin
The Openstack Mellanox Neutron plugin supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA. Mellanox Neutron Plugin allows hardware vNICs (based on SR-IOV virtual functions) per each Virtual Machine vNIC to
- Mellanox Neutron Plugin
The Openstack Mellanox Neutron plugin supports Mellanox embedded switch functionality as part of the VPI (Ethernet/InfiniBand) HCA.
- Midokura MidoNet Neutron Plugin
To provide and enable MidoNet virtual networking technology as one of the options for those using OpenStack Neutron as cloud networking orchestration.
- MidoNet Project
MidoNet is an open-source network virtualization platform for Infrastructure-as-a-Service (IaaS) clouds. MidoNet decouples your IaaS cloud from your network hardware, creating an intelligent software abstraction layer between your end hosts and your physical network.
- NEC OpenFlow Plugin
NEC OpenFlow plugin talks to OpenFlow Controller and each Neutron would be mapped to an virtual layer-2 network slice on an OpenFlow enabled network.
- Network Functions Virtualization (NFV) - Openstack Orchestration for Virtual Gateway
Openstack based orchestration for Virtual appliances
- Neutron Hyper-V Agent
Neutron is a very broad and modular project, encompassing layer 2 and 3 networking features on a wide range of technologies.
The initial release of the Hyper-V Neutron plugin offers the networking options listed below. Beside the listed options, support for Microsoft’s NVGRE virtual networking is planned to be released very soon as well.
- Nuage Networks Neutron Plug-in
The Nuage Networks Neutron-plugin for OpenStack enables you remove complexity and limitation from the networking in OpenStack environments and replace it with added flexibility, scale and performance.
By tapping into the Nuage Networks Virtualized Services Platform, an OpenStack deployment will span multiple DCs, offer service chaining capabilities and additional features such as support for mixed-workloads (physical, containers and virtual machines) and quality of service (QoS).
OFlops is a standalone controller that benchmarks various aspects of an OpenFlow switch. Oflops implements a modular framework for adding and running implementation-agnostic tests to quantify an switch's performance.
- One Convergence NVSD Controller
One Convergence Neutron plugin provides Neutron APIs for the network virtualization solution implemented with One Convergence Network Virtualization and Services Delivery(NVSD) Controller.
NVSD Controller provides network virtualization with overlay networks using virtual switches in the hypervisor and enables the delivery of L4-L7 services in the virtualized networks. The plugin supports the Neutron Core V2 APIs along with L3 and Security Groups extensions.
- ON.LAB Mininet
Mininet is a convenient, realistic emulator for Software-Defined Networks (SDNs). It creates a representative OpenFlow network that runs real kernel, switch and application code on a single machine, which can be native, virtual or in the cloud.
OpenContrail is an Apache 2.0-licensed project that is built using standards-based protocols and provides all the necessary components for network virtualization–SDN controller, virtual router, analytics engine, and published northbound APIs.
- OpenDaylight ML2 Neutron MechanismDriver
The OpenStack Neutron integration with OpenDaylight consists of the ML2 MechanismDriver which acts as a REST proxy and passess all Neutron API calls into OpenDaylight. OpenDaylight contains a NB REST service (called the NeutronAPIService) which caches data from these proxied API calls and makes it available to other services inside of OpenDaylight.
- OpenDaylight Project
OpenDaylight, the largest open source SDN controller, is helping lead this transition. By uniting the industry around a common SDN platform, the OpenDaylight community -- solution providers, individual developers, and users working together -- is delivering interoperable, programmable networks to service providers, enterprises, and a variety of organizations.
- OpenFlow Sec SDN Security Actuator
SDN Security Actuator (Java and Perl versions), Beta 3 Release 6 December 2013
Requires: SE-Floodlight, Java v1.6+ or Perl.
- OpenFlow Sec Security Enhanced Floodlight
SE-Floodlight is a software extension to the BigSwitch Floodlight controller, providing role-based authorization and strong security constraints enforcement. It is the first reference implementation of an SDN security policy enforcing mediation
- Open Networking Operating System (ONOS)
ONOS has successfully enabled the beginning of the SDN revolution. Combining ONOS with white box switches and ONOS applications enables new forms of innovation never before possible with closed legacy networks.
- Open Network Install Environment (ONIE)
Created by Cumulus Networks, Inc. in 2012, the Open Network Install Environment (ONIE) Project is a small operating system, pre-installed as firmware on bare metal network switches, that provides an environment for automated operating system provisioning.The ONIE project enables a bare metal network switch ecosystem where end users can choose among different network operating systems.
- Open Network Operating System (ONOS)
The Open Network Operating System (ONOS) is a software defined networking OS for service providers that has scalability, high availability, high performance and abstractions to make it easy to create apps and services. The platform is based on solid architecture and has matured to be feature rich and production ready.
- OpenStack Neutron
Neutron is an OpenStack project to provide "networking as a service" between interface devices (e.g., vNICs) managed by other Openstack services (e.g., Nova). Starting in the Folsom release, Neutron is a core and supported part of the OpenStack
- OpenStack Neutron ML2 Plugin
The Modular Layer 2 (ml2) plugin is a framework allowing OpenStack Networking to simultaneously utilize the variety of layer 2 networking technologies found in complex real-world data centers.
- OpenVirteX (OVX)
OpenVirteX implements network virtualization as a proxy that sits between the network and the tenants’ controllers, rewriting OpenFlow messages to translate between tenants’ topologies and header spaces to that of the infrastructure network.
OpenVNet is an Open Source Project for creation of highly scalable edge overlaid virtual networks. License under LGPL3.
- OVS Quantum Plugin
The Quantum openvswitch plugin works as part of the OpenStack Quantum Virtual Network Service.
- Protocol Oblivious Forwarding (POF) Controller
Control to support POF, based on Floodlight with POF extensions.
- Quantum REST Proxy Plugin
This module provides a generic quantum plugin 'QuantumRestProxy' that translates quantum function calls to authenticated REST request to a set of redundant external network controllers.
- Radware LBaaS Driver for Alteon
The driver is implemented according to Quantum/LBaaS/DriverAPI. The driver communicates with a management solution called Radware vDirect via a REST API. Radware vDirect is a virtual appliance running as part of an administrator project and tenant in OpenStack.
The vDirect virtual appliance must be able to communicate with the OpenStack REST API and also needs to be accessible to the cloud operator.
- Ruijie Networks Quantum Plugin
This driver will implement the Layer 2 QuantumPluginBase class, defined in the Quantum Plugin API.It will manage and control Ruijie switches.
- Snabb Switch Project
Snabb Switch is an open source virtual Ethernet switch for cloud networks.
- Tail-F Neutron ML2 Plugin
The Tail-f NCS Mechanism Driver implements the ML2 Plugin Mechanism Driver API.
It allows OpenStack to talk to the Tail-f Network Control System (NCS) and let NCS provision a multi-vendor network in response to OpenStack network configuration changes.
NCS transforms generic request from OpenStack into device-specific configuration changes that are deployed to the network with transactional guarantees.
Trema is a full-stack, easy-to-use framework for developing OpenFlow controllers in Ruby and C. With Trema network DSL, you can describe the network topology in which the controller is executed. Trema is free software for developing OpenFlow controller. It is free software of GPL 2 license which proceed development to open on GitHub. Due to its powerful function and ease of use, it is adopted by a wide range of organizations.
- VMware DVS Neutron ML2 Driver
The value-add with this solution is a faster deployment of solutions on ESX environments together with minimum effort required for adding new OpenStack features like DVR, LBaaS, VPNaaS etc. To address the above challenge, the OVSvApp solution allows the customers to host VMs on ESX/ESXi hypervisors together with the flexibility of creating port groups dynamically on Distributed Virtual Switch/Virtual Standard Switch.
- Weave Net
Weave Net is a powerful cloud native networking toolkit. It creates a virtual network that connects Docker containers across multiple hosts and enables their automatic discovery. Set up subsystems and sub-projects that provide DNS, IPAM, a distributed virtual firewall and more. Net is so easy to use, you may even forget it’s there – we like to call this: ‘invisible infrastructure’.
- ZeroTier One
ZeroTier is a software defined networking protocol that works across both LAN and WAN and can be deployed on desktop, mobile, container, and cloud systems and inside applications in the form of an embeddable SDK. Its goal is to deliver advanced enterprise networking everywhere and on everything.