# Software-Defined Networking: Categories, Analysis, and Future Directions
## 8 SDN Controller Platforms
### Summary and Lessons Learned
\begin{table}
\begin{tabular}{p{56.9 pt} p{56.9 pt} p{56.9 pt} p{56.9 pt} p{56.9 pt}} \hline \hline
**Studies** & **Techniques** & **Description** & **Strengths** & **Weaknesses** \\ \hline \multirow{4}{*}{Disco [215]} & \multirow{4}{*}{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 \\ \hline Faucet [216] & Python & Utilizes SBI with OpenFlow 1.3 & Supports multi-threading with good consistency & Limited scalability \\ \hline \multirow{4}{*}{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 \\ \hline \multirow{4}{*}{FlowVisor [218]} & \multirow{4}{*}{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 \\ \hline \multirow{4}{*}{HyperFlow [219]} & \multirow{4}{*}{C++} & HyperFlow is implemented in C++ and utilizes SBI with OpenFlow 1.0 and east/westbound API with publishing and subscribing messages & & Supports proprietary licenses, multi-threading, and no consistency \\ \hline \multirow{4}{*}{Kandoo [220]} & \multirow{4}{*}{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 \\ \hline \multirow{4}{*}{Loom [221]} & \multirow{4}{*}{Erlang} & Provides an experimental network switch controller that implements the OpenFlow 1.3.x and and 1.4 protocols & Offers scalability and robustness for large-scale implementations & Limited consistency \\ \hline \multirow{2}{*}{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 \\ \hline \multirow{2}{*}{MsNettle [223]} & Multi-threaded Haskell & Utilizes SBI with OpenFlow 1.0 and Linux platform in CLI mode and Linux platform in CLI mode & Supports proprietary licenses and has a good modularity. & No consistency and limited documentation \\ \hline \multirow{2}{*}{Meridian [224]} & \multirow{2}{*}{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 \\ \hline \multirow{4}{*}{Microflow [225]} & \multirow{4}{*}{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 \\ \hline \multirow{2}{*}{NODE FLOW [226]} & \multirow{2}{*}{Java Script} & Utilizes JSON NBI and SBI with OpenFlow 1.0 & Good reliability & Cisco license and limited documentation \\ \hline \multirow{4}{*}{NOX [227]} & \multirow{4}{*}{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 \\ \hline \hline \end{tabular}
\end{table} 
Table 7: _Cont._