# 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}{*}{ONIX [228]} & \multirow{4}{*}{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 \\ \hline \multirow{4}{*}{ONOS [229]} & \multirow{4}{*}{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 \\ \hline \multirow{4}{*}{Open Contrail [230]} & \multirow{4}{*}{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 licenses and multi-threading functionality and high modularity & \multirow{4}{*}{Limited scalability} \\ \hline \multirow{4}{*}{Open Daylight [231]} & \multirow{4}{*}{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 \\ \hline \multirow{4}{*}{OpenIRIS [232]} & \multirow{4}{*}{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 \\ \hline \multirow{4}{*}{OpenMul [233]} & \multirow{4}{*}{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 \\ \hline \multirow{4}{*}{PANE [234]} & \multirow{4}{*}{Haskell} & Utilizes PANE NBI, SBI with OpenFlow 1.0 and Zookeeper & Supports BSD 3.0 licenses and has a fair modularity & Limited reliability with no consistency \\ \hline \multirow{4}{*}{POF Controller [235]} & \multirow{4}{*}{Java} & Utilizes SBI with OpenFlow 1.0 and POF-FFS and supports Linux platform along with CLI and WebUI & \multirow{4}{*}{Reliable and scalable and WebUI} & Limited documentation and consistency \\ \hline \multirow{4}{*}{POX [236]} & \multirow{4}{*}{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 \\ \hline \multirow{4}{*}{Ravel [237]} & \multirow{4}{*}{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 \\ \hline \multirow{4}{*}{Rosemary [238]} & \multirow{4}{*}{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 \\ \hline \multirow{4}{*}{Ryu [240]} & \multirow{4}{*}{Python} & Utilizes REST NBI and SBI with OpenFlow 1.0 and 1.5 and supports Linux and MacOS platforms with CLI mode & Good modularity and support for OpenStack & Limited scalability and weak consistency \\ \hline \multirow{4}{*}{SMaRt Light [241]} & \multirow{4}{*}{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 \\ \hline \multirow{4}{*}{TinySDN [242]} & \multirow{4}{*}{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 \\ \hline \hline \end{tabular}
\end{table} 
Table 7: \(Cont.\)