A third mechanism, back-end request forwarding, combines the TCP single handoff protocol with forwarding of requests and responses among back-end nodes. In this approach, the front-end hands off client connections to an appropriate back-end node using the TCP single handoff protocol. When a request arrives on a persistent connection that cannot (or should not) be served by the back-end node that is currently handling the connection, the connection is not handed off to another back-end node.
Instead, the front-end informs the connection handling back-end node A which other back-end node B should serve the offending request. Back-end node A then requests the content or service in question directly from node B, and forwards the response to the client on its client connection. Depending on the implementation, these ``lateral'' requests are forwarded through persistent HTTP connections among the back-end nodes, or through a network file system.
The advantages of back-end request forwarding lie in the fact that the complexity and overhead of multiple TCP handoff can be avoided. The disadvantage is the overhead of forwarding responses on the connection handling back-end node. This observation suggests that the back-end request forwarding mechanism is appropriate for requests that result in relatively small amounts of response data. Results presented in Section 6 show that due to the relatively small average content size in today's Web traffic [19,3], the back-end request forwarding approach is very competitive.