Optimizing TCP forwarder performance

Abstract
A TCP forwarder is a network node that establishes and forwards data between a pair of TCP connections. For example, a firewall that places a proxy between a TCP connection to an external host and a TCP con- nection to an internal host—for the purpose of implementing access control to a resource on the internal host—is an example of a TCP forwarder. Once the proxy approves the access, it simply forwards data from one connection to the other. We use the term TCP forwarding to describe indirect TCP communica- tion via a proxy in general. This paper characterizes the behavior of TCP forwarding, and illustrates the role TCP forwarding plays in common network services like firewalls and HTTP proxies. We introduce an optimization technique, called connection splicing, that can applied to a TCP forwarder, and reports the results of a performance study designed to evaluate its impact. Connection splicing has the effect of improving the performance of TCP forwarding by a factor of two to four, making it competitive with the performance of an IP router running on the same hardware.

This publication has 6 references indexed in Scilit: