Cloud computing services delivery and consumption model is based on communication infrastructure (network). The network serves as a linkage between the end-users consuming cloud services and the providers of data centers providing the cloud services. In addition, in large-scale cloud data centers, tens of thousands of compute and storage nodes are connected by a data center network to deliver a single-purpose cloud service. To this end, some questions could be raised, such as the following: How do network architectures affect cloud computing? How will network architecture evolve to support better cloud computing and cloud-based service delivery? What is the network's role in reliability, performance, scalability, and security of cloud computing? Should the network be a dumb transport pipe or an intelligent stack that is cloud workload aware? This paper focuses on the networking aspect in cloud computing and shall provide insights to these questions. Researchers can use this paper to accelerate their research on devising mechanisms for the following: (i) provisioning cloud network as a service and (ii) engineering network of data centers. Cloud computing would not be possible without virtualization, not for arcane technical reasons but for one obvious business requirement: the need for multi-tenancy. In order to benefit from economies of scale, cloud computing is predicated upon the sharing of a common infrastructure by multiple groups of users, often referred to as tenants. Multi-tenancy can only be achieved through some kind of virtualization, at the database level (Salesforce.com), application server level (Google App Engine), kernel level (Red Hat), or CPU level (Amazon EC2). Unlike grid computing, which often pooled and aggregated distributed computing resources for the purpose of handling very large computing jobs that could not fit or would take long to complete on a single server, cloud computing creates virtual slices of resources from clusters of servers and storage devices, perfectly sized to fit the specific needs of multiple users. Such virtual resources can be small or large, and scale elastically as user needs evolve over time.Some cloud computing applications require multiple distributed sites to work together, which calls for cross-site data-communication capabilities. Carrier-grade cloud computing requires a network architecture, which ensures flexibility, built-in cross-domain network with higher bandwidth, lower latency, and higher fault tolerance. There are three principal areas in which the network architecture is of utmost importance to cloud computing: (i) a data center network (DCN) that interconnects the infrastructure resources (e.g. servers and storage devices) within a data center; (ii) a data center interconnect network (DCIN) that connects multiple data centers in a private, public, or hybrid cloud; and (iii) the Internet network that connects end-users to the different public data centers.By deploying network as a service (NaaS) in a DCN, tenants can benefit from on-demand provision...