The growth of data centers and the concept of infrastructure as a service is leading to significant focus on cloud computing architectures. Pundits have proclaimed cloud computing as the ultimate merger of information technology with communication. The promise of cloud computing is immense — it aims to create a virtual world of applications, giving the user an unparalleled computational power using a simple front-end and a decently fast broadband connection.
A differentiator among cloud and grids, utility computing, service oriented networking, and application networks has been the scalability of the former in a business setup. What this means is that cloud computing has a more appealing business driver for the general IT audience that the others never had. Cloud computing is also in line with the roadmaps of tomorrow's business executives — being able to access data and applications across handhelds that are mobile, energy efficient, secure and yet data-intensive.
Essentially, when we distribute computational needs across a network, there are many aspects of the computational entities that can be provided as a service — Software as a Service (SaaS), In - frastructure as a Service (IaaS), Platforms as a Service (PaaS) and many others. In order to abstract the offerings of a cloud computing environment, we need to understand the composite entities that make up a "cloud" — data, storage, processors, and the network, and finally a super-control plane. What this implies is that any service that the cloud can offer is essentially a derivative of one or more of these entities. Our goal is to analyze what the network provides to these entities and how different configurations can exist.
From a perspective of network resources (storage, switches, and processors), the following lists of tasks are mandated by a cloud computing application: virtualization at various layers in the end-solution, network orchestration, automation of consolidation and virtualization functions, integration of multiple standalone and diverse solutions to obtain scalable cloud computing, and finally automation of networking entities and sub-modules to meet end-to-end cloud computing needs. We will now consider each of these networking tasks and what each layer must do to meet these.