centralized view of the network, giving an SDN controller the ability to act as the intelligence of the network. As shown in Fig. 1.8, the SDN controller communicates with switches and routers via south-bound APIs and to the applications with north-bound APIs. In the SDN architecture, the splitting of the control and data forwarding functions is referred to as disaggregation because these components can be sourced separately, rather than deployed as a single integrated system. This architecture pro- vides the applications with more information about the state of the entire network from the controller's perspective compared to the traditional networks where the network is application aware. The SDN architectures generally consist of three functional groups, as follows: SDN applications: The application plane consists of applications such as routing and load balancing, which communicates with the SDN controller in the control plane through north-bound interfaces (e.g., REST17 and JSON ¹8. SDN applications are pro- grams that communicate behaviors and needed resources with the SDN controller via APIs. In addition, the applications can build an abstracted view of the network by col- lecting information from the controller for decision-making purposes. These 16 Open Networking Foundation (https://www.opennetworking.org). A REST application programming interface, also referred to as a RESTful web service, is based on Representational State Transfer (REST) scheme that is an architectural style and approach to communica- tions often used in web services development. REST-compliant web services allow requesting systems to access and manipulate textual representations of web resources using a uniform and predefined set of state- less operations. A RESTful API is an application program interface that uses HTTP requests to GET, PUT, POST, and DELETE data. JSON or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an al