In a nutshell, SDN is an approach to networking that enables the programmatic and dynamic control of a network. In the traditional network infrastructure that is most commonly applied today, there is a set of black boxes with dedicated hardware, an operating system and functionalities provided by networking vendors. Networking devices are black boxes that cannot be modified by a third party and must be configured manually or by dedicated vendor-specific automation software.
SDN networks, on the other hand, are composed of simple network elements that contain an agent interface by which the data-plane functions can be loaded by a network controller. SDN is all about separating the control plane, i.e. the layer where the network behavior is defined and managed, from the data plane, the layer where the packets are processed. Such an approach offers very clear benefits. First, it affords a good view of the network topology, which allows for better decision-making, e.g. more efficient load balancing and better traffic distribution. Moreover, instead of configuring hundreds of devices, there is only one control plane to be configured, considerably minimizing the risk of mistakes being made.
The configuration itself is compiled automatically, thus eliminating the human factor. Softwarizing and automating the networking is much more congruent with cloud computing than traditional rigid networking. As a result, there is only one, centralized place, where all the control is performed. No need to configure each device manually. The network is managed programmatically, with no need for an administrator to publish the changes. Network configuration is expressed by a predefined set of behaviors and policies that are applied on demand, e.g. when there is a sudden traffic boost, or DDOS (Denial-of-service) attack has been detected. Automation and flexibility are two of the main concepts behind SDN.