Software-defined networking (SDN) is an approach to networking in which control decoupled from hardware and given to a software application called a controller.
1) SDN is :
a) Separation of data and control planes and a vendor-agnostic interface (e.g. OpenFlow) between the two.
b) A well-defined API for the networking (3rd parties can develop and sell network control and management apps).
c) Network virtualization (Underlying network infrastructure is abstracted from the applications, no vendor lock-in).
2) SDN is Not :
a) Only Implementing Network Functions in Software or on Virtual Machine
b) Only Programmable Proprietary APIs for Network Device or Management System
3) The SDN Controller has complete control of the SDN Datapaths.
4) SDN Stack:
Thanks to https://www.opennetworking.org
a) At bottom, the data plane is comprised of network elements, whose SDN Datapaths expose their capabilities through the Control-Data-Plane Interface (CDPI) Agent.
b) On top, SDN Applications exist in the application plane, and communicate their requirements via NorthBound Interface (NBI) Drivers. In the middle, the SDN Controller translates these requirements and exerts low-level control over the SDN Datapaths, while providing relevant information up to the SDN Applications.
c) The Management & Admin plane is responsible for setting up the network elements,
assigning the SDN Datapaths their SDN Controller, and configuring policies defining the scope of control given to the SDN Controller or SDN Application.
d) This SDN network architecture can coexist with a non-SDN network, especially for the purpose of a migration to a fully enabled SDN network
** Openstack Integration with SDN
1) OpenStack Neutron is a networking-as-a-service project within the OpenStack cloud computing initiative.
2) Neutron is an application-level abstraction of networking that relies on plug-in implementations to map the abstraction(s) to reality.
3) Neutron includes a set of APIs, plug-ins and authentication/authorization control software that enable interoperability and orchestration of network devices and technologies (including routers, switches, virtual switches and SDN controllers) within infrastructure-as-a-service environments.
Example SDN Plug-ins :-
OpenDaylight is an open source SDN project with a modular, pluggable, and flexible controller platform at its core. This controller is implemented strictly in software and is contained within its own Java Virtual Machine (JVM). As such, it can be deployed on any hardware and operating system platform that supports Java.OpenDaylight has driver for Neutron.
** OpenFlow based
1) OpenFlow-based networking systems are one possible mechanism to be used by a plug-in to deliver a Neutron abstraction.
** More Reading
Network Function Virtulization
SDN is focused on the separation of the network control layer from its forwarding layer, while NFV decouples the network functions, such as network address translation (NAT), firewalling, intrusion detection, domain name service (DNS), caching, etc., from proprietary hardware appliances, so they can run in software. Both concepts can be complementary, although they can exist independently.