next up previous
Next: Forwarding Requests to Server Up: Forwarding Requests to other Previous: Which Proxy

Implementation Issue: TCP Handoff

Our forwarding mechanism actually involves a triangular communication. Figure  4 depicts the situation: the client, the first proxy it contacts and the second proxy which sends the page directly to it form a triangle. Implementing this idea needs certain changes to the underlying software. We propose to achieve this by using a TCP handoff from the first proxy to the second [7]. First, the client sends a HTTP request to the first proxy over a normal TCP connection. Once the first proxy finds out it is a cache miss and the second proxy has a valid copy, it forwards this request to the second proxy and lets it send the response directly. At this time, the first proxy sends the second proxy a control message, which includes the state of this TCP connection, such as IP address and port number of both parties, sequence number, window size etc..[*] When the second proxy gets this control message, it sends the page directly to the client by injecting TCP packets addressed to the client into the network. To ensure the client will accept these packets, the second proxy labels them as from the first proxy, in effect impersonating the first proxy to the client. The client will actually have only a half-connection with the first proxy because the response objects are from the second proxy. However, this half-connection is transparent to the client, so the TCP ACK packets from the client (which are only meaningful to the second proxy) will continue flowing to the first proxy. After the TCP handoff, the first proxy still needs to forward the TCP ACK packets from the client to the second proxy.


  
Figure 4: Implementing Triangular Communication
\begin{figure}
\centerline{
\psfig {figure=tri.eps,height=2in, width=3.2in}
}\end{figure}

Obviously, this TCP handoff requires changes to proxy server software and to the TCP/IP stacks on both proxies. While we have yet to implement our approach, there are existing technologies that in different contexts have successfully implemented all the essential elements involved. IBM Network Dispatcher [7] implements handing off TCP connection from a switch to a Web server and TCP ACK forwarding. Transparent Web proxies implement the dynamic impersonation of IP addresses of Web servers to clients. LARD [12] uses a similar TCP handoff mechanism to implement request distribution for load balancing among clustered web servers. TCP splicing [9] also shares some similarity. The work by Bestavros, et al., on distributed packet rewriting [3] appears to be closest to our needs.


next up previous
Next: Forwarding Requests to Server Up: Forwarding Requests to other Previous: Which Proxy
Limin Wang
2/20/2000