3 Software Defined Networking (SDN)
3.1 Introduction to SDN

SDN (Software Defined Networking) is a new approach to ICT network architecture with aim to programmatically control the whole network.

This enables solving of many problems in traditional approaches to networking while also enabling new features as well. In general the idea of SDN is to increase the flexibility, manageability and extensibility of ICT networks, with secondary goal of decreasing equipment costs. This can be achieved by taking advantage of fast development and deployment cycle of relatively cheap software applications in contrast to expensive specialized networking hardware.

The main motivation for SDN in the beginning came from the need for a better solution for innovation in network research and development. At that time, there were only two available methods to test new features - software simulation or hardware testbeds.

The simulation offers great flexibility and repeatability.

However, simulations are usually not run in real time - in parallel with the code production, and it is not easy to connect simulated network to real network and test coexistence of the new features in a more realistic environment. On the other hand, testbeds implemented with custom hardware are difficult to program, can be difficult to modify once set up and are very expensive.

This can lead to compromises in their adoption - either using a shared testbed used by more research projects that limits time available for experiments and repeatability. Or alternatively, creating own testbed using traditional network devices available from equipment providers. These are mostly supplied as a black box with minimal customization, limiting testbed capabilities for new and more exotic experiments required for more revolutionary than evolutionary innovations.

In late 90’s and early 2000’s, the computing power of general purpose computers was significantly increased compared to specialized networking hardware. This coupled with advances in virtualization and a few other technologies led to their utilization in execution for software implemented control of simple network nodes used for fast packet switching. Controlling software could be modified as easily as simulation, while cheap hardware with limited higher level features used for packet switching provided packet handling rates comparable to custom hardware testbeds. It was one of the central pillars of SDN, which lies in separation of control and forwarding plane that is described in the following section in more details [5].