Next: Forwarding Requests to Server
Up: Forwarding Requests to other
Previous: Which Proxy
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
 |
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: Forwarding Requests to Server
Up: Forwarding Requests to other
Previous: Which Proxy
Limin Wang
2/20/2000