Beacon [212] |
Java |
Uses ad hoc NBI and SBI with OpenFlow 1.0 |
Offers high-performance flow processing capabilities |
No consistency and limited scalability |
Beehive [213] |
GO language |
Distributed control plane that utilizes REST northbound API and southbound API with OpenFlow specification |
Supports multi-threading and good consistency |
Weak documentation and reliability |
DCFabric [214] |
C and JavaScript |
Supports Linux platform along with CLI and WebUI. |
Supports multi-threading and has a modularity functionality |
Limited scalability |
Disco [215] |
Java |
Based on distributed flat architecture that utilizes northbound, southbound, and east/westbound API with REST with OpenFlow 1.0 and AMQP, respectively |
Good modularity and strong inter-domain connectivity |
Limited documentation and reliability |
Faucet [216] |
Python |
Utilizes SBI with OpenFlow 1.3 |
Supports multi-threading with good consistency |
Limited scalability |
Floodlight [217] |
Multi-threaded Java |
Utilizes REST, Java, RPC, and Quantum northbound API and southbound API with OpenFlow 1.0 and 1.3. |
Strong consistency |
Very limited scalability and reliability |
FlowVisor [218] |
C |
Provides functions to slice the network resources and is located between guest controllers and switching devices |
Good for research experiments and provides slices for several network portions |
Limited consistency |
HyperFlow [219] |
C++ |
HyperFlow is implemented in C++ and utilizes SBI with OpenFlow 1.0 and east/westbound API with publishing and subscribing messages |
Moderate scalability and reliability |
Supports proprietary licenses, multi-threading, and no consistency |
Kandoo [220] |
C, C++, Python |
Utilizes Java RPC NBI and SBI with OpenFlow 1.0–1.2 |
Very good scalability and utilizes Linux supporting platform and proprietary license. |
Limited reliability |
Loom [221] |
Erlang |
Provides an experimental network switch controller that implements the OpenFlow 1.3.x and 1.4 protocols |
Offers scalability and robustness for large-scale implementations |
Limited consistency |
Maestro [222] |
Multi-threaded Java |
Exploits parallelism along with additional throughput optimization techniques |
Supports multi-threading and has a fair modularity |
No consistency or reliability |
MsNettle [223] |
Multi-threaded Haskell |
Utilizes SBI with OpenFlow 1.0 and Linux platform in CLI mode |
Supports proprietary licenses and has a good modularity. |
No consistency and limited documentation |
Meridian [224] |
Java |
Utilizes REST northbound API and southbound API with OpenFlow 1.0 and 1.3 |
Cloud-based platform that supports multi-threading |
No consistency and reliability |
Microflow [225] |
C |
Utilizes Socket NBI and SBI with OpenFlow 1.0–1.5 and uses Linux platform with CLI and WebUI modes |
Supports multi-threading and has good scalability |
No consistency and reliability |
NODE FLOW [226] |
Java Script |
Utilizes JSON NBI and SBI with OpenFlow 1.0 |
Good reliability |
Cisco license and limited documentation |
NOX [227] |
C++ |
Utilizes ad hoc NBI and SBI with OpenFlow 1.0 and supports Linux platform in CLI and WebUI modes |
Supports GPL 3.0 licenses and multi-threading (NOX-MT). |
Low modularity with no consistency |
ONIX [228] |
C++ |
It utilizes Onix API, NBI, and SBI with OpenFlow 1.0, OVSDB, and east/westbound API with Zookeeper |
Supports multi-threading and has a good modularity |
Supports proprietary licenses and weak consistency |
ONOS [229] |
Java |
Utilizes REST and Neutron NBI and SBI with OpenFlow 1.0 and 1.3 and east/westbound API with Raft |
Supports Apache 2.0 licenses and multi-threading functionality |
Weak consistency in cases |
Open Contrail [230] |
C, C++, Python |
Utilizes REST NBI and SBI with BGP and XMPP and supports Linux platform with CLI and WebUI modes |
Supports Apache 2.0 and multi-threading functionality and high modularity |
Limited scalability |
Open Daylight [231] |
Java |
Utilizes REST, RESTCONF, XMPP, and NETCONF NBI and SBI with OpenFlow 1.0 and 1.3 |
Good scalability and reliability as well as strong consistency |
Based on Cisco’s ONE SDN controller |
OpenIRIS [232] |
Java |
Utilizes REST NBI, SBI with OpenFlow 1.0–1.3, and east/westbound API with custom protocol |
Good reliability and provides multi-threading |
Weak consistency and no support for Openstack |
OpenMul [233] |
C |
Utilizes REST NBI and SBI with OpenFlow 1.0, 1.3, OVSDB, and Netconf |
Supports Linux platform in CLI mode and good reliability |
Weak scalability and consistency |
PANE [234] |
Haskell |
Utilizes PANE NBI, SBI with OpenFlow 1.0 and Zookeeper east/westbound API |
Supports BSD 3.0 licenses and has a fair modularity |
Limited reliability with no consistency |
POF Controller [235] |
Java |
Utilizes SBI with OpenFlow 1.0 and POF-FIS and supports Linux platform along with CLI and WebUI |
Reliable and scalable |
Limited documentation and consistency |
POX [236] |
Python |
Utilizes ad hoc NBI and SBI with OpenFlow 1.0; uses Linux, MacOS, and Windows platform; and supports CLI and GUI |
Consistent controller platform |
Limited reliability and scalability |
Ravel [237] |
Python |
Utilizes ad hoc NBI and SBI with OpenFlow 1.0 and supports Linux platform along CLI and WebUI, with fair documentation |
Good reliability with strong consistency |
Very limited scalability |
Rosemary [238] |
C |
Utilizes ad hoc NBI and SBI with OpenFlow 1.0, 1.3, and XMPP and supports Linux platform, along with CLI and WebUI |
Supports Proprietary and multi-threading functionality with good modularity |
No scalability and consistency |
Ryu [240] |
Python |
Utilizes REST NBI and SBI with OpenFlow 1.0–1.5 and supports Linux and MacOS platforms with CLI mode |
Good modularity and support for OpenStack |
Limited scalability and weak consistency |
SMaRt Light [241] |
Java |
Utilizes REST NBI, SBI with OpenFlow 1.3, and east/westbound API |
Supports Linux platform in CLI mode and has good reliability and consistency |
Proprietary license and limited scalability |
TinySDN [242] |
C |
Utilizes SBI with OpenFlow 1.0 and supports Linux platform with CLI mode |
Supports BSD 3.0 licenses and modularity |
No multi-threading functionality or consistency |
Trema [243] |
C, Ruby |
Utilizes ad hoc NBI and SBI with OpenFlow 1.0 and supports Linux platform in CLI mode |
Supports GPL 2.0 licenses and has good modularity |
No consistency and reliability |
Yanc [244] |
C, C++ |
Utilizes REST NBI and SBI with OpenFlow 1.0–1.3 and supports CLI mode |
Provides reliable communication |
Limited documentation and no consistency |
ZeroSDN [245] |
C++ |
Uses REST NBI and SBI with OpenFlow 1.0 and 1.3 and supports Linux platform with CLI and WebUI modes |
High modularity and consistency |
Does not support multi-threading and not scalable |