Multi-cloud management and control platforms control the lifecycle of virtual resources obtained from multiple clouds. The ability to deploy and manage resources across heterogeneous clouds is important for both enterprise and carrier segments. Enterprises may obtain virtual resources from cloud service providers for their internal functions or to provide services to other clients. For instance, a cloud aggregator may obtain resources from multiple clouds and lease them to carriers for deployment of VNSs. Our focus on the problem is with a view to deploy VNFs over the virtual resources obtained from multiple cloud service providers. As the analysis made in this
work applies equally to a company, like an airline, deploying IT applications, as well as to carrier/ISP obtaining virtual resources for their own services, we refer to both as ASPs.
The term software-defined infrastructures (SDI) would be used to refer to virtualized resources that the CSPs and the Network Service Providers (NSPs) offer through software-based control and management systems. The physical devices, on which these virtual infrastructures are created, could themselves be located in one or more datacenters of a cloud or diverse and geographically separated clouds each associated with one or more datacenters. Software control of infrastructure allows ASPs the flexibility of creating and managing application specific virtual
clouds carved out of virtual resources from multiple clouds interconnected with virtual
networking resources. After gaining experience of single cloud deployments, the enterprises are now turning to multiple public clouds [76], for added benefits of lower cost, increased flexibility, greater reliability by removing the possibility of a single point of failure, proximity to users, reduced latency and a larger number of specialized features. A converged view of resources across multiple clouds allows them to use resources from many providers in a manner that enables optimization cost and quality of service parameters. SDIs provide ASPs with such a converged view of resources owned by different cloud service providers. In the case of carriers, this also brings the advantage of being close to the subscribers that they are serving and reducing the cost of the access network. On the flip-side, use of resources from multiple clouds brings in the complexity of not only interfacing with disparate clouds, but also the requirement of managing the network connecting the clouds.
Enterprises that choose to adopt a multi-cloud strategy are required to lease wide area network capacity to interconnect resources on different clouds. The Internet only gives best-effort performance and ASPs requiring performance guarantees must bear the cost of static pre-
provisioning of resources or of creating smart overlays. Having its own private network would prove to be quite expensive for small and medium enterprises. This means that most enterprises adopting a multi-cloud strategy would also need a shared network infrastructure that can satisfy their requirements. Virtualization is helpful as it creates customized network contexts, on a common physical infrastructure, for tenants’ application specific requirements. OpenADN helps applications to automatically and dynamically communicate their requirements to the network. Large ASPs, like Google, have the resources to install application layer proxies at distributed points of presence, to intercept service request and route it to the nearest datacenter. Through OpenADN smaller, network constrained ASPs can obtain such services from third party infrastructure providers, e.g. ISPs, who can route application messages through an appropriate set of controllers, proxies, and middleboxes. This way the ASPs can get the benefit of economically deploying distributed applications on multiple clouds to get increased responsiveness and resiliency [112].
Software, like OpenADN, presenting an integrated virtualized environment of resources of public clouds, operating under disparate control and management softwares, tends to be a complex system. Modularity is important in such systems for ease of development, maintenance and fate decoupling of the processes. They also generally use multithreading for concurrent execution of a number of activities. Any attempt to optimize such a platform would require the use of behavioral testing to understand the behavior of the software, if possible in the production environment. Software engineers need to conceive innovative techniques to isolate problem areas that consume a disproportionate share of resources leading to sub-optimal behavior. Multithreading makes the system difficult to profile because characterizing the effects of
interactions between threads becomes difficult as described in [52]. Efficient abstractions need to be developed to capture this behavior without resulting in exponential analysis times.
In the context shared above, we have carried out work on three fronts: collecting platform behavioral data, analyzing the data to identify factors significant for optimization and optimizing multi-cloud platform followed by extensive testing on OpenADN. To this end, we elaborate how the operational behavior of the platform can be analyzed to obtain data and the two-factor full factorial analysis [113] can be used to make an initial assessment of factors that lead to inefficient operation of the platform. Optimization of the platform, using the identified factors, brings forth interesting results that are discussed later in this chapter. This chapter is based on our work published in [7] [8].