This project proposes a comprehensive load-balancing solution to minimize client response time and reduce system costs for services hosted in wide-area networks. The system, called Aster*x, uses the global state of server load and network congestion, and dynamically routes the requests over appropriate (server and path) pairs, calculated using the load-balancing algorithms developed by project staff.
The GENI network infrastructure will be used for extensive deployment, evaluation, and demonstration of Aster*x. Aster*x exploits OpenFlow?s logically centralized controller to obtain the global network state and route flows of various granularities. It will use the PlanetLab and ProtoGENI-based computation substrate to host the replicated web service and to generate client requests from multiple locations. The project will provide an opportunity for students across four universities to collaborate and build a relatively large experimental system on GENI.
Over the past decade there has been a change in the way content is hosted and served in the Internet. To meet growing demand, and minimize access time, service is replicated across multiple servers in possibly multiple locations. Content Distribution Networks (CDN), such as those run by Akamai, Limelight, and Amazon serve content from thousands of servers around the world. Some large network operators have built their own CDNs to generate revenues from content customers. Service replication is not limited to just simple web-content. Novel services like Google DNS (designed to accelerate browsing experience) replicate and serve DNS records from many servers. Minimizing client response time by replicating content and load-balancing over the wide-area is, therefore, an important problem, directly affecting revenue worth billions of dollars. At the same time, load-balancing over the wide-area is a non-trivial problem. Load-balancing may be oblivious (e.g., spreading the requests equally over all servers, without regard for their load), or stateful (e.g., sending requests to the least-loaded server). In a data-center or a dedicated web-hosting service, the HTTP servers are connected by a regular, over-provisioned network; the load-balancer usually does not consider the network state when load-balancing across servers. However, this simplistic scenario does not hold for unstructured networks, such as enterprise and wide-area networks, that are not custom-built for running server farms. In such unstructured networks, the substantial background traffic and the potential topological biases can significantly affect the performance of network-oblivious load-balancing (our baseline), and inflate the response time (defined as the duration from issuing the HTTP request to the complete receipt of the response). In this project, we examined the question: "If we host a service across many HTTP servers spanning multiple campus networks, what is the best way to balance load so as to minimize the client response time?". In particular, we take into account the congestion in the network, the location, and the load on the servers, and, then, manage the load on the network and the servers to try to minimize response time. We built a system called Aster*x that uses the global state of server load and network congestion, and dynamically routes the requests over appropriate (server, path) pairs calculated using the load-balancing algorithms we developed. We used GENI for the extensive deployment, evaluation, and demonstration of Aster*x. Aster*x exploits OpenFlow’s logically centralized controller to get the global network state and route flows of various granularities. It uses the PlanetLab and Linux-based computation substrate to host the replicated web service and to generate client requests from multiple locations.