# Software Defined Networking
## What is SDN
Software Defined Networking or SDN is an approach to network management that separates the control plane from the data plane. In traditional networking, the control plane and data plane are both implemented in each individual network device. The control plane decides where traffic goes and the data plane actually forwards the traffic. In SDN, the control plane is moved out of individual devices and centralized in a software-based controller. Network devices become simple forwarding elements that receive instructions from the centralized controller.
## Control Plane and Data Plane
The control plane is the part of a network that decides how traffic should be routed. It runs routing protocols, builds routing tables, and makes routing decisions. The data plane is the part that actually forwards packets based on the decisions made by the control plane. In traditional networking every router contains both the intelligence to make routing decisions and the hardware to forward packets. In SDN the intelligence is centralized in the SDN controller and the network devices focus only on fast packet forwarding.
## SDN Controller
The SDN controller is the brain of an SDN network. It has a global view of the entire network topology. It makes all forwarding decisions and pushes these decisions down to network devices using southbound APIs. OpenFlow is the most widely used southbound API protocol. The controller also exposes northbound APIs that allow network applications and orchestration systems to request network services and implement policies. This programmability allows networks to be managed and configured through software.
## OpenFlow
OpenFlow is a communication protocol that enables the SDN controller to interact with the forwarding plane of network devices. It allows the controller to add, modify, or delete flow table entries in switches and routers. A flow table entry specifies match criteria for packets, such as source and destination IP addresses, and the action to take on matching packets, such as forward out a specific port, drop, or modify. When a packet arrives at an OpenFlow switch that does not match any existing flow entry, the switch sends the packet to the controller for a forwarding decision.
## Benefits of SDN
SDN provides centralized network management through a single controller rather than configuring each device individually. It enables network programmability allowing the network to be automated and configured through software. New network policies can be deployed quickly across the entire network from the controller. SDN reduces complexity by abstracting the network and hiding hardware details from network applications. It enables faster innovation because new networking capabilities can be implemented in software without hardware changes.
## SDN Use Cases
SDN is widely used in data centers to manage the large number of virtual networks supporting cloud services. WAN optimization uses SDN to intelligently route traffic across multiple WAN links. Campus network management uses SDN controllers to manage wireless access and implement policies. Cloud providers use SDN to provision virtual networks for customers and to manage traffic between their data centers.Back to Subject