# Software-Defined Networking: Categories, Analysis, and Future Directions
## 6 SDN Simulators and Emulators
\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 OpenFlow timeouts & OpenFlow 1.2, CAIDA/32 Dataset, UNIV dataset & Provides hybrid flow table management that combines timeout value with control plane evictions messages & Provides analysis of idle timeout by considering miss rate and flow table size & Dynamic setting of timeout values based on network conditions is missing \\ \hline OPTree [153] & C++, binary search & Addresses the problem of flow rule placement in firewalls based on ACLs and reduces redundancies & Reduces the number of flow rules during flow rule placement & Lacks a consideration of the network topology change \\ \hline Flowstat [154] & POX, Mininet & Computation of flow rules for the identified optimal paths and flow rule redistribution & Avoids congestion on network switches & Limited link failure and fault tolerance capability \\ \hline Lossy compression of packet classifiers [157] & Gigabit ethernet Cisco 650 switch, WireShark & Offers packet classification approach to find a classifier of optimal size to categorize the network traffic & Classify network traffic for effective TCAM usage of switches & Lacks compressing flow rules to classify a high portion of the traffic \\ \hline Compressing forwarding tables for data center scalability [159] & TCAM, switches & Each forwarding table column is encoded separately via a dedicated variable-length binary prefix encoding & Offers a useful approach to compress forwarding tables, which is quite helpful in data center virtualization & Can be extended to investigate how other memories (CAM, TCAM) can be utilized to compress forwarding tables \\ \hline \hline \end{tabular}
\end{table} 
Table 4: _Cont._The OFNET [172] emulator provides built-in functionalities to test and debug, and traffic generation and monitoring tools, which help researchers in the debugging process. The virtual network overlay (ViNO) [173] network emulation tool provides functionalities that help to create arbitrary network typologies via Open vSwitches and virtual machines. The overlay interconnection between virtual machines (VMs) is provided by VXLAN encapsulation [174]. EstiNet [175] provides the benefits of both simulation and emulation tools by offering each host a real Linux OS environment, and any real application program can run on a simulated host without any modification. FS-SDN [176] is a simulator that is based on the FS [177] simulation platform and is built in Python language. OMNeT++ [178; 179] is a network simulator that is developed in the C++ language for network modeling, multiprocessors, and different distributed or parallel systems. It utilizes the INET framework [180] for the simulations in the SDN environment by integrating OpenFlow components, basic switch functions, basic controllers, and OpenFlow messages. The NS-3 network simulator [181] is implemented in C++ and can use OpenFlow switches. In addition, it also offers the use of external modules to extend NS-3, such as OFSwitch13 [182], which helps for OpenFlow 1.3 compatibility. Summary and Lessons LearnedThe summary of network simulators and emulators is presented in Table 5. It provides a comprehensive overview of simulators and emulators that are developed in various programming languages, such as C, C++, Java, Python, and so on. These tools help in developing and simulating SDN applications in an SDN environment. Mininet [164] is an innovative emulation tool that allows network developers to configure, manage, and test their networks. These networks cannot exceed single-server bandwidth and cannot run non-Linux-compatible OpenFlow switches or applications. The DOT [171] emulation tool ensures computation and network resources for switches, hosts, and links in large SDN deployments. It can be used in an environment where a fixed number of physical machines are used to emulate a given network and does not support dynamic scalability and multi-user support.