Abstract
We propose a transport layer protocol designed for building highly available Internet network services. The transport layer protocol would provide a mechanism to transparently migrate the server endpoint of a live connection. The connection migration is dynamic and can happen multiple times during a client-service session. Our migration mechanism is client-initiated, integrated in a migration architecture that uniformly addresses various types of events that affect the quality of service perceived by the client. In the architecture, the migration mechanism is independent and decoupled from any migration policies. The migration mechanism can be applied for different contexts like server load balancing, to provide fault tolerance across server crashes, to improve the performance as perceived by the client etc. We examine and address a number of challenges posed by the transfer of connection state required for a connection migration to both the OS and the application layer. We describe the details of our design and an implementation, as well as experimental data that suggests the usefulness of this approach.