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 |