ShockAbsorber: a TCP connection router
Abstract
ShockAbsorber is a software router of TCP connections that supports load sharing across multiple TCP servers that share a set of virtual IP addresses. It consists of the Executor, a O/S kernel extension that supports fast IP packet forwarding, and a user level Manager process that controls it. The Manager implements a novel dynamic load-sharing algorithm for allocation of TCP connections among servers according to their real-time load and responsiveness. This algorithm produces weights that are used by the Executor to quickly select a server for each new connection request. The Executor forwards client TCP packets to the servers without performing any TCP/IP header translations. Outgoing server-to-client packets are not handled by ShockAbsorber and can follow a separate network route to the clients. Depending on the workload traffic, the performance benefit of this half-connection method can be significant. Prototypes of ShockAbsorber were used to scale up several large and high-load Internet sites serving millions of TCP connections per hour.