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

Detlef Bosau detlef.bosau at web.de
Fri Jan 5 09:45:06 PST 2007


Joe Touch wrote:
>   
>> The basic question is whether the use of a splitter may shorten the RTT
>> seen by the sender to that degree, that the appropriate rate cannot be
>> achieved by a sliding window protocol even if CWND were set to 1 MSS,
>> the sender must hence be stalled from time to time to have the rate slow
>> enough.
>>     
>
> The window doesn't by itself determine rate; it's ACK clocking that
> does. 

I´m totally with you.

In the scenario above, the splitter ack´s packets "to fast", when it 
does dumb spoofing.
In other words: Without splitting, the serialization delay of each link 
ensures that the sender is paced correctly via ACK clocking.
When a splitter is used, the ACK pacing mechanism can be undermined.
> In high BW*delay product nets, the same stalling happens - you
> send data, get an ACK, send more, get ACKs of that, etc - and the data
> keeps bunching up at the source.
>
> I.e., ACK clocking works only when the data-ACK look experiences a
> bottleneck. When it doesn't, things bunch up, and TCP doesn't 'match
> rates' at all.
>   

This was a little bit too fast for me....

Shouldn´t the ACKs be clocked by the TCP data packets, at least in 
symmetric paths? Thus, the ACK clocking should reflect the TCP rate 
which is achieved downstream?


> FWIW, the same thing happens when the receiver application doesn't drain
> the incoming data fast enough. The receive buffers fill up, and the
> sender is stalled. The same thing is happening here.
>
>   

Yes, absolutely. When a splitter is in use, the sending socket (directed 
to the final receiver) doesn´t drain its incomming data fast enogh.

It´s an interesting question whether data of short term flows can be 
buffered entirely at the splitter and then sent to the receiver with a 
rate the link can handle.
It´s interesting what handles to the final CLOSE ACK here which is 
typically not spoofed in splitters to ensure poper ACK semantics.

> Splitters are bad for other reasons, but as you said, let's ignore them
> for this discussion..
>
>   

I just see that they are in use. And so I think one should weigh up the 
pro´s and con´s here.
In the particular case of wide area mobile networks, I personally think 
splitters can be helpful because of the extremely irregular delivery 
times of datagrams.
I had great difficulties to see a reason for this and found Thierry 
Kleins paper !Improved TCP Performance in Wireless IP Networks through 
Enhanced Opportunistic Scheduling Algorithms" (Globecom 2004) extremely 
interesting.

Perhaps, the scheduling caused variations in packet delivery times are 
the most distinguishing mark for mobile wide area networks compared to 
other network technologies. (I would be glad to get comments on this claim!)

> It seems like the dominant effect is exactly what you expect - the
> endpoint (the splitter, really) isn't experiencing the bottleneck, but
> it's "application" (the receiver on the modem) is too slow. So you get
> bursty 'scheduling' of the sender based on availability of buffers at
> the (IMO, real, or at least effective) receiver.
>   

It´s just interesting to see, whether this is important / relevant / 
annoying.

Detlef





More information about the end2end-interest mailing list