SDN enables what cloud providers have in the data center. Or does it? Where does SDN end and cloud begin?
Even though Cloud is older, technologically, than SDN, there still remains many misconceptions regarding what, exactly, a cloud comprises. Cloud is, at its core, about the abstraction of resources that can be provisioned and managed programmatically. Whether we're talking IaaS or PaaS or even SaaS (News - Alert), Cloud requires the use of software-defined techniques to achieve the agility and cost-savings attributed to it.
SDN - Software Defined Networking - has at its core similar tenets. It is software-defined, using APIs to programmatically provision and manage abstracted network resources. The separation of control plane from data plane is an abstraction, turning the network fabric into a programmatically controlled set of resources that enables agility and, through operationalization, cost-savings.
The relationship between cloud and SDN is, well, cloudy primarily because of the focus on the use of SDN architectures to dynamically manage traffic. Poor network conditions such as congestion or connection faults can be remediated through what may sometimes be referred to as self-healing networks. But this capability is only realized because of the abstraction inherent in SDN architectures, and the ability to automate modifications to the forwarding tables used by switching and routing infrastructure - whether software on commoditized servers or traditional, purpose-built hardware. The automation, the operationalization if you will, of the network is achieved via a common, abstracted and programmatic interface: an API.
If you consider what you need to build out a cloud environment, you'll recognize that you'll need to abstract the network, the application service network, the compute, and the storage. Each of these sets of resources must be able to be automatically provisioned and managed via some sort of common programmatic interface. There are a variety of ways in which you can abstract the network, one of which might be the use of SDN technologies. To enable cloud computing, you have to be able to dynamically provision the network, a task at which SDN is eminently suitable. That is, after all, what's happening under the hood when a forwarding information base is updated on a switch. A network service - routing or switching - is being provisioned. Key is that this provisioning occurs programmatically, via an API, as that means you can orchestrate the provisioning of network resources and services as part of the overall process.
Cloud providers, obviously, have already achieved this level of automation and programmatic control. Consider what's happening under the covers when you provision a virtual machine in a cloud environment. There are IP addresses that must be assigned, routing and switching tables that must be updated, and firewall rules that must be put into place. That's all happening via software. There's no bank of operators on the other end that manually execute these processes. It happens via software, via APIs. One of the enabling technologies can certainly be called SDN, as it fits the basic definition of what an SDN is: programmatic control over abstracted network resources. Separation of control from data planes.
Whether they've done so using commoditized or commercial products is irrelevant because the components from which the network services are derived are abstracted and integrated into a larger automation and orchestration framework that ultimately creates what we, on the outside, would call a "cloud". The same is true at other layers of the data center stack. Application services - load balancing, acceleration and optimization, and application security - must also be abstracted and managed programmatically. Virtual machine management enables programmatic control over abstracted compute resources. Every layer of the data center stack is abstracted and programmatically controlled, enabling an automated provisioning and management system to orchestrate the data center.
What About OpenStack?
Where do technologies like OpenStack fit into the picture? OpenStack and other cloud management platforms enable a software-defined environment. That is, they enable through programmatic interfaces the ability to automate and orchestrate the provisioning and management of data center resources. Some might refer to the resulting environment as the Software-Defined Data Center (SDDC) due to the use of software to provision, configure and manage data center resources.
SDN can fit quite well into such environments. Most enterprise-class network elements already provide a programmatic interface (API) through which they can be managed and controlled. This API enables integration with cloud management frameworks like OpenStack either directly or via a more localized controller (the SDN controller, if so enabled). It is the cloud management platform that pulls together the various data center components - from storage to compute, from application services to network services - and provides the means to manage them all holistically via software.
It's important to not get caught up in current tendencies to focus only on the run-time aspects of SDN. While SDN is certainly capable of adjusting the network in real-time to mitigate a variety of network-related issues that may impede performance or availability, it is not the only capability SDN enables. It is also well-suited to enabling the programmatic provisioning and management necessary to implement a cloud computing environment.
Edited by Stefania Viscusi