Article Preview
TopIntroduction
Software-Defined Networking (SDN) proposes to fundamentally change the current practice of network control (McKeown 2008; Shenker 2011). In recent years, there are significant research and implementation efforts for SDN from both industry and academia (Casado 2007; Sherwood 2009; Canini 2012; Monsanto 2013; Yu 2013; Jain 2013). The most prominent SDN achievement is the B4 Project (Jain 2013), where Google uses SDN to perform traffic engineering for its global inter-datacenter networks.
Shown in Figure 1 (Sezer&Scott-Hayward, 2013), the SDN architecture has 3 layers: Application layer, Control layer and Infrastructure layer. The philosophy of SDN is that basic state distribution primitives should be implemented only once rather than separately for every control task.
Figure 1. SDN functional architecture
Leading by Open Networking Foundation (ONF), SDN promotes two basic ideas (Sezer&Scott-Hayward, 2013):
- •
Centralized State Control: For Control layer, a physically separated and logically centralized control platform handles state collection from all devices, make decisions, and distributes the control state to them.
- •
Uniform Device Abstraction: For Infrastructure layer, devices of the forwarding plane could be controlled by a uniform open interface, which also removes the danger of vendor lock-in.
These two ideas together support the Software-Defined promise in Application layer: a fully programmatic interface upon which developers could build network management applications on (Koponen&Casado, 2010).
SDN has made significant progress. ONF advocates OpenFlow as the standard southbound interface defined between the Control and Infrastructure layers. In Control layer, there are many controllers emerged such as NOX (Gude&Koponen, 2008), ONIX (Koponen 2010) and Maestro (Cai&Cox, 2010). The OpenDaylight project promises to unify the northbound API between the Control and Application layers (Gopal, 2013). An additional OpenFlow management and configuration protocol is also proposed to remotely configure the control channel between the controllers and switches.