next up previous
Next: Experimental results Up: Implementation details Previous: Operations of the Web

Modification to the TCP finite state machine

The TCP Handoff mechanism implemented in our Web cluster requires some modifications to the TCP/IP stack protocol. Figure 4 shows the modified finite state machine. For clarity reasons, this figure does not include the SYN_SENT state that is not modified.
Figure 4: Modified TCP finite state machine.
\epsfxsize 8.0cm
Let us first describe the modifications concerning the Web switch. The scheme in Figure 4 applies to sockets which are subject to TCP handoff. The other sockets are handled as usually. With respect to the original TCP finite state machine, we have added two new states: WAITHEADER and FORWARDING. The WAITHEADER state is equivalent to ESTABLISHED, with the following differences. In the WAITHEADER state, the content of the client request and not only the TCP header field is analyzed. The WAITHEADER state is entered at the end of the three-way handshake, if handoff is enabled for the specified socket; it is left not only when the socket is closed, but also when TCP handoff is carried out. In the last case, the TCP connection is moved to the new state FORWARDING. The FORWARDING state is introduced to inform the Web switch that TCP packets are being forwarded to another server. On the Web server operating system, the only difference with respect to the original TCP protocol occurs at the establishment of a new connection. Indeed, a new TCP connection may also be created upon the receipt of a THOP_CREATE message from the Web switch. In this case, there is a direct transition from the LISTEN state to the ESTABLISHED state, thus bypassing the three-way handshake procedure which has already carried out between the client and the Web switch. The socket structures on the Web servers contain a further information, namely the IP address of the Web switch. This solution is necessary to implement the communications between the Web switch and the server.
next up previous
Next: Experimental results Up: Implementation details Previous: Operations of the Web
Mauro Andreolini 2003-03-13