Check out the new USENIX Web site.

Motivation

The success of the Web has proven the value of sharing different types of data in an autonomous manner. The number of Web users, servers, and total Internet traffic have been growing exponentially in the past 5 years [1]. The scale of Web usage is stressing the capacity of the Internet infrastructure and leads to poor performance and low reliability of Web service. Multisecond response times for downloading a 1KB resource are not unusual [35]. Furthermore, recent studies [29] indicate that server mean time to failure (MTTF) is 15 days, thus a client accessing 10 servers may experience a failure every 36.4 hours. Such a failure rate is not acceptable for many important Web applications such as electronic commerce and online stock trading. Recently, several techniques have been adopted to reduce Web response time, improve its reliability, and balance load among Web servers. Among the most popular approaches are:

Proxy server caching. Proxy servers intercept client requests and cache frequently referenced data. Requests are intercepted either at an application protocol level (non-transparent caches) [20,30] or a network protocol level (transparent caches) [13]. Caching improves the response time of subsequent requests that can be satisfied directly from the proxy cache.

Server clusters
A single dispatcher intercepts all Web requests and redirects them to one of the servers in the cluster. The requests are intercepted at the network protocol level [12,16]. Since a server cluster typically is located within a single LAN, the server selection is mostly based on server load and availability within the cluster.

DNS aliasing
A single host name is associated with multiple IP addresses. A modified DNS server selects one of the IP addresses based either on round-robin scheduling [26], routing distance, or TCP/IP probe response time [14].
Each of the proposed solutions, however, improves request response time, reliability, or load balancing among servers, but does not address all these issues together. Furthermore, many of the proposed solutions often introduce additional problems. Proxy server caching improves request response time, but it introduces potential data inconsistency between the cached data and the same data stored at the server. Non-transparent proxy caches create a single point of failure. Server clusters improve reliability at the server end, but do not address the reliability of the network path between the cluster dispatcher and a client. Server clusters are not suitable for balancing a load among geographically replicated Web servers because all requests must pass through a single dispatcher. Consequently, server clusters only improve the load balance among the back end Web servers. Finally, although DNS aliasing improves both request response time and service reliability, it forces data providers to replicate the entire Web site. This is impractical for two reasons: (1) since most Web servers exhibit skewed access pattern [32], replicating the entire Web server could be an overkill; (2) in some cases it is not possible or desirable to replicate all dynamic services. In addition, the DNS aliasing implementation becomes problematic when client-side DNS agents cache results of DNS queries or submit recursive DNS queries.