anguage for SDN applications to define their network operation policies; (2) a rule update process to install rules generated from those policies; (3) a network status 5G Network Architecture 31 collection process to gather network infrastructure information; and (4) a network status synchronization process to build a global network view using the network status collected by each individual controller. One of the basic functions of the SDN controller is to trans- late application specifications into packet-forwarding rules. This function uses a protocol to address communication between its application layer and control layer. Therefore, it is imperative to utilize some high-level languages (e.g., + +, Java, and Python) for the development of applications between the interface and the controllers. An SDN controller is accountable for generating packet-forwarding rules as well as clearly describing the policies and installing the rules in relevant devices. The forwarding rules can be updated with policy changes. Furthermore, the controller should maintain consistency for packet forwarding by using either the original rule set/updated rule set or by using the updated rules after the update process is completed. The SDN controllers collect network status to provide a global view of the entire network to the application layer. The network status includes time dura- tion, packet number, data size, and flow bandwidth. Unauthorized control of the centralized controller can degrade controller performance. Generally, this can be overcome by main- taining a consistent global view of all controllers. Moreover, SDN applications play a sig- nificant role in ensuring application simplicity and guaranteeing network consistency. In most SDNs, OpenFlow is used as the south-bound interface. OpenFlow is a flow-oriented protocol and includes switches and port abstraction for flow control. The OpenFlow proto- col is currently maintained by ONF and serves as a fundamental element for developing SDN solutions. The OpenFlow, the first st