I. Introduction
Within cloud computing, bandwidth utilization is invariably a concern to cloud tenants, cloud administrators and is an operational concern for the “XaaS” (everything as a service) set of cloud computing models [1]. Since the cloud network is a shared resource used by all tenant virtual machines, the utilization of network resources by one group of virtual machines may have an impact on another group of virtual machines. This can cause inconsistent performance depending on network load and other inherent factors [2]. Network bandwidth is also considered a resource governed by service level agreements as tenants are typically charged on a per-usage fee, such that a tenant simply pays for total bandwidth utilized. Additionally the service level agreement specifies availability of network bandwidth resources, so called “bandwidth guarantees”. Unfortunately, guarantees of bandwidth availability may be impacted by network over-utilization, causing the service agreement to be compromised (including a degraded network experience by tenants) in the absence of an algorithm to control excessive bandwidth utilization [3], [4].