Skip to main content
. 2022 Jul 25;22(15):5551. doi: 10.3390/s22155551

Table 7.

Comparison of SDN controller platforms.

Studies Techniques Description Strengths Weaknesses
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