The goal of the Service Continuations (SC) project is to provide an efficient OS-based solution for dynamic migration of client sessions established with an Internet service. Migration between geographically dispersed servers may be used according to various policies, to improve service quality as perceived by a client, to do load balancing at the server side, etc. Our goal is to provide an efficient and easy-to-use mechanism to support such policies.

SC assumes that a service is provided by equivalent servers that cooperate in migrating serviced clients between them by means of a connection migration protocol. The servers may be geographically distributed. Service sessions are assumed to be independent of each other and of the location of the server. Each session can be defined by fine-grained state locally maintained by the server. For example, in the case of a web server, the state of a static file transfer is defined by the file name and by the offset reached in the file at a certain moment during transfer.



Service Continuations (SC) is an operating system mechanism that enables dynamic migration of an Internet service session between cooperative servers providing equivalent service. Migration may occur at any time during service, transparent to the client and asynchronous with the server execution.

Clients connect to a service using a reliable transport protocol that supports connection migration, for example Migratory TCP. The service may be provided by single-process or by multi-process servers in which processes communicate over IPC channels. At any point in time during service, the client session may migrate to another server. Under this scenario, the role of SC is to ensure consistent service to client and integrity of all communication channels across migration.

Our system achieves this by migrating the client connection along with an SC object that encapsulates fine-grained application-level and OS-level communication state associated with the client session. The server application processes must cooperate with the OS via a simple API to establish well-defined restart points in a session and export them to the corresponding SC. In case of migration to a new server, the SC is used to re-instantiate the service session and to resume service to the client. The OS is responsible for transferring the SC object between the origin and the destination server when migration is needed. The OS also ensures synchronization of the application state in the SC with the state of inter-process and client-server communication channels.


Prototype SC implementation in the FreeBSD 4.3 kernel that supports migration of multi-process client sessions in which server processes communicate via OS pipes. The implementation is integrated with Migratory TCP, our connection migration protocol.

We have used SC in three real-world servers:







Liviu Iftode

Graduate Students

Florin Sultan, Aniruddha Bohra