A number of schemes, mostly based on variations of network address translation (NAT) [13], have been proposed that have a cluster of servers be visible under the same IP address. Typically, the server-side router makes one IP address visible and routes incoming requests to one of the several servers in the cluster. The different approaches differ in the details of the translation: Cisco's LocalDirector [8] and the Magicrouter [2, 24] adhere rather strictly to NAT and have the router perform all the translations. IBM's TCP Router [3] does translation on in-bound packets, and allows reply packets from the cluster to be returned directly to the clients. NAT and similar schemes modify the source and destination IP addresses in the packet header. Some higher-level protocols and applications that use IP addresses in the application (for example ICMP or FTP) may not work correctly without appropriate - application-specific - patches of NAT [13].
A different approach is used in One-IP [11], where incoming requests are processed by a dispatcher, which forwards them to the cluster nodes. The cluster nodes use the ifconfig alias option to attach two IP addresses to the network interface. The primary address uniquely identifies the node in the cluster and is used by the dispatcher to forward requests from clients. The secondary address is shared among all cluster nodes, and is the cluster address, which is visible to the clients.
All these schemes are limited to localized clusters of servers, typically on the same subnet. To allow for multiple routers [12], or for clusters that are distributed over multiple domains [9], these approaches resort to a combination with round-robin DNS, which we described above.