[e2e] A simple scenario. (Basically the reason for the sliding window thread ; -))
Anil.Agarwal at viasat.com
Sat Jan 13 17:33:35 PST 2007
This is an re-send of the previous email with some
additional info towards the end.
Joe Touch wrote -
>> Are you describing a scenario where a TCP-Splitter buffers up 2^32 bytes
>> of sender
>> data without delivering any to the receive end-point, then goes down, and
>> the end-points continue the connection using the wrapped
>> sequence number, which in this case match up just right, so that the
>> 2^32 bytes disappear down a black hole, without the sender or receive
>> being any wiser?
> Yes. The system can wrap without things matching up _exactly_, depending
> on how big the CWND is, though, so this isn't as absurdly specific as it
> appears at first glance.
I think, this scenario will occur if
the TCP-splitters buffer x bytes of undelivered data,
the sender cwnd is y,
x < 2^32 and x+y >= 2^32,
the splitters go down and
packets flow between the sender and receiver over an alternate path.
In this case, the receiver rcv.nxt value is within the
sender [snd.nxt , snd.nxt + cwnd) range and hence
the receiver will acknowledge sequence number rcv.nxt and
accept data beyond it;
the sender will gladly accept the acknowledgement and
continue sending data.
Now, we know
y < 2^30
a constraint required and imposed by TCP (rfc 1323).
We can claim that a (good) TCP splitter ensures that
x < 2^31
Detlef - this is not as easy as it might first appear, especially
since data can get buffered at the sending or
receiving TCP-splitter in a two-splitter case,
but it can be (is) done.
Hence, x + y < 2^32 and the above scenario will not occur.
The above also requires that TCP-splitters use
the same ISS (Inital Sequence Number) with the receiver
as the one used by the sender.
A good TCP-splitter should (does).
Also, with a good TCP-splitter, x does not reach 2^31 -1
simply because of a slow receiver or network and
a fast sender.
x is generally a function of the bandwidth*RTT value and
the number of TCP connections using the bottleneck
and a good TCP-splitter flow-controls the sender to enforce x.
As an aside, I would love to see the day when CWND < 2^30
becomes too limiting and we need to raise the limit :)
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the end2end-interest