# Software-Defined Networking: Categories, Analysis, and Future Directions
## 3 Flow Rule Installation Mechanisms  
ORPP [88; 89] provides two flow rule placement frameworks: OFFICER and aOFFICER. It helps to define and install flow rules at the data plane by following all technical and non-technical requirements. The first framework, called OFFICER, helps to define and install flow rules for the set of known requirements at a specific time internal. The second framework, aOFFICER, helps to compute and install flow rules for unknown sets of requirements, which vary over a specific time interval. Both these frameworks are quite useful and effective to place flow rules at the data plane. vCRIB [90] provides a mechanism that proposes an abstraction for specifying and managing flow rules for network operators at data center networks. In addition, in order to achieve better performance and resolve scalability issues, it helps to partition and install flow rules at hypervisors and switches. DevoFlow [17] presents a model to modify the OpenFlow model that permits network operators to focus on flow rules, which are essential for network management, by breaking the coupling between network control and global visibility. This mechanism helps to reduce internal communication between the control and data planes. Firstly, it minimizes the need to transfer statistics for tedious flows. Secondly, it minimizes the need to invoke the control plane for most flow setups. This helps to maintain a certain level of visibility by minimizing communication overhead between the control and data planes. However, the prototype is not simulated on actual packets. \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 \hline
**Studies** & **Techniques** & **Description** & **Strengths** & **Weaknesses** \\ \hline NDB [70] & Mininet & Tracks down root causes of bugs & Breakpoints and packet backtracking & Debugging time overhead \\ \hline VeriFlow [72] & NOX, Mininet & Checks network invariants in real time and prevents faulty rules & Flow rule debugging for reachability analysis & Not suitable for delay-sensitive and QoS-constrained applications \\ \hline Flow Checker [75] & OpenFlow switch, flow table & Verifies flow tables based on behaviors of flow rules & Inconsistencies localization in device flow tables & Can only be used in small network \\ \hline Anteater [76] & Linux, C++, Ruby & Examines the state of data plane and verifies network invariants & Control plane configuration analysis & Inconsistent data plane map generation for dynamically changing FIBs \\ \hline NICE [81] & Mininet, OpenFlow switch, Network X & Utilizes model checking and symbolic execution for bug investigation & Simplification of switch modeling and event testing & Unable to test a controller implemented in the same language \\ \hline FPB [82] & Python, OpenFlow, NOX & Provides a formal model for consistent policy update & Least controller intervention & Buffering ability in case of switch to controller link failure is not discussed \\ \hline HSA [83] & Ubuntu, flow-based management language, Prolog & Protocol-independent statistic network-invariant investigations & No need to modify the protocol for implementation of HSA & Static space analysis mechanism mechanism \\ \hline Py-Resonance [84] & Pyretic, Python & Utilizes state-based policies to predict network’s behaviour & Modular network function control & TCAM under- utilization by least significant policy states in FSM model \\ \hline PGA [85] & Mininet, Pyretic compiler, POX controller & Composition of ACL policies that inspects multiple policies & Conflict-free forwarding rule translation & Scalability issues and support of HW/VM middleboxes \\ \hline SFC [87] & Java-based prototype, OpenFlow switch & Identifies the anomalies in ACL policies before deployment & Proactive anomalies detection independent of programming language & Overhead for generating flow rules at data plane \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Summary of network testing and verification studies.