[e2e] A simple scenario. (Basically the reason for the sliding window thread ; -))

David Borman david.borman at windriver.com
Thu Jan 18 08:46:58 PST 2007

There are real-world scenarios where the insertion of a splitter into  
a TCP path does make a lot of sense.  The cases I am familiar with  
all are necessitated by a severe mismatch in MTU, buffering and  
performance, the splitter is in the only path by which the packets  
can travel, and it is sitting at the crossover between the two  
disparate paths.  In the specific case that I dealt with, the  
splitter's main purpose was to change the TCP MSS option, send larger  
window sizes, and buffer/repackage data.

Getting the splitter to operate well takes some work.  It has to  
maintain state for the connections in both directions.  Besides  
acking and buffering data in both directions, and possibly  
repackaging data between the two sides, it also has to make sure that  
it synchronizes control events between the two halves so that neither  
endpoint gets into a state of believing that the connection has  
completed successfully when it hasn't.  And there will still be  
failure modes that you wouldn't get with a straight TCP connection,  
but most of them are when the connection doesn't complete successfully.

But in general, deploying a splitter where there is a possibility  
that packets can take an alternate route around the splitter, or  
where you do not have some degree of control over one side of the  
network seems like a bad idea to me.  A splitter should not be a  
general purpose device, it should be tied to the unique  
bandwidth*delay mismatch of the problem that is being addressed.

A TCP splitter that is *not* a NAT box operates at the TCP layer, and  
should not require any changes to the content of the TCP data stream,  
whereas an application level proxy often requires that the proxy has  
knowledge of the particular application, and may have to modify the  
data stream.

			-David Borman

More information about the end2end-interest mailing list