# Software-Defined Named Data Networking in Literature: A Review
## 3 Overview and Background
### Software-Defined Networking  
SDN is an emerging technology that offers numerous benefits to traditional networking architectures. By dividing the network into the three distinct layers shown in Figure 5--the application layer, the control layer, and the data layer--SDN revolutionizes network management and control. In this innovative approach, intelligence is abstracted from individual network devices within the data layer and centralized within an SDN controller situated in the control layer. This centralized controller maintains a comprehensive view of the network topology and link status, facilitating dynamic routing and management decisions. Such centralized control mitigates the intermixed management, control, and data planes inherent in traditional networking architectures, thereby addressing serious security issues and promoting network scalability. Furthermore, it enables seamless protocol changes within one plane without disrupting others, making the network more adaptable to evolving requirements. The SDN controller communicates with switches in the data layer via a southbound API, with OpenFlow (OF) [34] being a prominent example of a southbound API. Through this interface, the controller pushes routing and management commands to the switches, allowing for efficient network configuration and optimization. Additionally, the application layer in SDN encompasses a variety of applications that interface with the SDN controller through a northbound API. These applications enable network administrators to control and manage the SDN controller, providing flexibility and customization options. Among the tools used in this context is Frenetic [35], which is not an application itself but a programming language used to build SDN applications. Moreover, in large-scale network environments, a west/eastbound API may be employed to connect multiple SDN controllers in the control plane. This facilitates coordination and cooperation among controllers, ensuring efficient network-wide management and control [36]. Furthermore, within the context of SDN, the OF protocol serves as a popular southbound API. It facilitates communication between the control layer and the data layer by establishing a secure channel between the OF switches and the SDN controller, as displayed in Figure 6. An OF switch supports three primary functions: a secure channel, flow table operations, and adherence to the OF protocol [37]. The operation of an OF switch's flow table involves multiple tables that are processed sequentially in a pipeline manner. When a packet arrives at an OF switch, it undergoes a matching process within this pipeline, as shown in Figure 7. Each entry in the flow table consists of three main components: the header field, action (also referred to as instructions), and statistics. Packet matching occurs based on the header fields, and the packets are processed according to the action specified in the flow entries. Additionally, the statistics component provides valuable information about the network status, encompassing aspects such as priority, counters, timeouts, cookies, and other relevant fields. Figure 5: SDN structure. The OF protocol consists of three primary categories of messages--controller-to-switch messages, asynchronous messages, and symmetric messages--each comprising various subtypes. Among the commonly exchanged messages is the packet-in message, which is sent when the switch fails to locate a match for a packet within its flow tables. Similarly, the flow-mod message is dispatched by the controller to modify flow table entries within an OF switch, while the packet-out message is sent by the controller to direct an OF switch to forward a specific packet. These examples illustrate the typical messages exchanged between OF switches and controllers [38]. SDN encompasses various types of controllers, including NOX, POX, Floodlight, and Ryu [39; 40]. These controllers can update switch table entries in two modes: proactive and reactive. In proactive mode, the controller updates the entries autonomously.