# Software-Defined Networking: Categories, Analysis, and Future Directions
## 7 SDN Programming Languages
\begin{table}
\begin{tabular}{p{56.9 pt} p{113.8 pt} p{113.8 pt} p{113.8 pt} p{113.8 pt}} \hline
**Studies** & **Language** & **Description** & **Strengths** & **Weaknesses** \\ \hline \multirow{4}{*}{Mininet [164]} & \multirow{4}{*}{Python} & Offers a rapid prototyping workflow and virtualization functionalities to assist network developers & The emulation tool, which merges several best features of emulators, hardware testbeds, and simulators & Emulated topology can grow only with residing machine resources \\ \hline \multirow{4}{*}{Distributed OF Testbed (DOT) [171]} & \multirow{4}{*}{Java} & Supports a cluster of computers that guarantee computation and network resources to switches, hosts, and links & Facilitates large SDN deployments by distributing the workload over a cluster of nodes & Limited number of physical machines to emulate, lacking dynamic scalability and multi-user support \\ \hline \multirow{4}{*}{OFNET [172]} & \multirow{4}{*}{Python} & Provides built-in functionalities to test and debug, as well as traffic generation and monitoring tools & Helpful in generating network traffic, monitoring of OpenFlow messages and analyzing performance of SDN controller & Needs to be extended for large L2 network and cloud emulation platform \\ \hline \multirow{4}{*}{ViNO [173]} & \multirow{4}{*}{Java} & Helps to create arbitrary network topologies via Open vSwitches & Domain-specific language for topologies and VM migration in least time & Scalability is not specified \\ \hline \multirow{4}{*}{EstiNet [175]} & \multirow{4}{*}{C} & Any real application program can run on a simulated host without any modification & Provides accuracy, quickness, repetition, and scalability and supports kernel-reentering simulation methodology & Not scalable to a single process, and results cannot be repeated \\ \hline \multirow{2}{*}{FS-SDN [176]} & \multirow{2}{*}{Python} & Supports realistic test and validation of standard networks & Scalable and accurate simulation tool & Limited debugging and tracing capabilities \\ \hline \multirow{2}{*}{OMNeT++ [178; 179]} & \multirow{2}{*}{C++} & Used in network modeling, multiprocessors, and different distributed or parallel systems & Popular extensible, modular, component-based scalable simulation tool & Its kernel is in C++ and can only run with modern C++ compiler \\ \hline \multirow{4}{*}{NS-3 [181]} & \multirow{4}{*}{C++} & Offers help for OpenFlow to program network devices & Can add new protocols, supports the lowering of distance between real network and simulated network & Limited visibility of visual interface for creating topology \\ \hline \end{tabular}
\end{table} 
Table 5: Summary of SDN simulators and emulators. and varying can be demarcated. Moreover, the sequential operator provided by Nettle can also be used for creating compound commands. Procera [189] is a high-level programming language that is helpful to delineate ACL policies in communication networks. It is quite a resource for the operators as it provides an expressive and extensible compositional framework. Moreover, it is also quite useful for designing network applications that not only react to the events produced by OpenFlow switches but also to external events, for instance, user authorization and bandwidth usage. Procera was used in several campus networks, as well as home network prototype deployments [190]. Flow-based management language (FML) [191] is a high-level declarative programming language that is based on non-recursive Datalog [192] for handling a network whose aim is to provide efficient and flexible policies. Moreover, it is also helpful for the operators, as it provides them with eminent management facilities for configuring ACL policies straightforwardly. Flog [193] is an event-driven programming language that adopted ideas from FML and Frenetic and is based on logic programming for the SDN environment, similar to FML. It is composed of three components that are similar to Frenetic. These components include a mechanism for network state collection, information processing, and policy generation.