Overview
Internet services run on multiple servers in different locations, serving clients that are often mobile and multi-homed. This does not match well with today’s network stack, designed for communication between fixed hosts with topology-dependent addresses. As a result, online service providers resort to clumsy and management-intensive work-arounds—forfeiting the scalability of hierarchical addressing to support virtual server migration, directing all client traffic through dedicated load balancers, restarting connections when hosts move, and so on.
To meet the these needs of online services, this project revisits the design of the network stack. The centerpiece of our Serval architecture is a new Service Access Layer (SAL) that sits above an unmodified network layer, and enables applications to communicate directly on service names. The SAL provides a clean service-level control/data plane split, enabling policy, control, and in-stack name-based routing that connects clients to services via diverse discovery techniques. By tying active sockets to the control plane, applications trigger updates to service routing state upon invoking socket calls, ensuring up-to-date service resolution. With Serval, end-points can seamlessly change network addresses, migrate flows across interfaces, or establish additional flows for efficient and uninterrupted service access.
By rethinking the layers in the stack, Serval can support a wide range of functionality in a coherent, clean architecture (e.g., mobility, migration, multi-homing, anycast, load balancing, and failover), many of which were previously handled by incomplete point solutions. Further, by considering diverse deployment scenarios (from ad-hoc networks to large-scale datacenters), we identify ways to support multiple, coexisting approaches for registering and resolving services names.
More information can be found in our technical overview section or in our FAQ, including answers to:
If you are an Emulab/ProtoGENI experimenter, you can now easily setup a Serval experiment using our Emulab host image that comes with a preinstalled Serval stack. Installation instructions and apps for Android platforms are also available.
