A replicated service runs as a server program in a virtual host on the host server. Virtual hosts are identified by the IP address of their origin host, and are associated each with a process running on the host server. The kernel of the host server maintains a virtual-host-table, which contains information about the virtual hosts currently located on the host server. A new virtual host is created by the system call
int v_host(u_long ip_address);
which associates the currently running process with the given IP address. Whenever the process (or any of its descendents) thus associated to an IP address binds a socket to a port, the port belongs to the virtual host associated with the process. Whenever a socket is created, the kernel checks against the virtual-host table to see whether the socket belongs to a virtual host and marks the socket's protocol control block appropriately. A routing protocol is in place to inform the redirectors about the newly created port on the host server.