<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7638.1">
<TITLE>Re: [e2e] A simple scenario. (Basically the reason for the sliding window thread ; -))</TITLE>
</HEAD>
<BODY>
<DIV id=idOWAReplyText61782 dir=ltr>
<DIV dir=ltr><FONT face="Courier New" size=2>This is an re-send of the previous
email with some</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>additional info towards the
end.</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New"></FONT> </DIV></DIV>
<DIV>
<DIV id=idOWAReplyText22137 dir=ltr>
<DIV dir=ltr><FONT face="Courier New" size=2>Joe Touch wrote -<BR>>> Are
you describing a scenario where a TCP-Splitter buffers up 2^32 bytes<BR>>>
of sender<BR>>> data without delivering any to the receive end-point, then
goes down, and<BR>>> the end-points continue the connection using the
wrapped<BR>>> sequence number, which in this case match up just right, so
that the<BR>>> intervening<BR>>> 2^32 bytes disappear down a black
hole, without the sender or receive<BR>>> being any
wiser?<BR>>><BR>> Yes. The system can wrap without things matching up
_exactly_, depending<BR>> on how big the CWND is, though, so this isn't as
absurdly specific as it<BR>> appears at first glance.<BR><BR>I think, this
scenario will occur if </FONT></DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2> the TCP-splitters
buffer x bytes of </FONT><FONT size=2>undelivered data,</FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2> the sender cwnd is
y,</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2> x < 2^32
and </FONT><FONT size=2>x+y >= 2^32,</FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2> the splitters go
down and </FONT></DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2> packets flow
</FONT><FONT size=2>between the sender and receiver over an alternate
path.</FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT> </DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>In this case, </FONT><FONT
size=2>the receiver rcv.nxt </FONT><FONT size=2>value is within the
</FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>sender [snd.nxt , snd.nxt +
cwnd) range </FONT><FONT size=2>and hence </FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>the receiver will acknowledge
sequence number rcv.nxt and </FONT></DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>accept data beyond
</FONT><FONT size=2>it; </FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>the sender will gladly accept the
acknowledgement and </FONT></DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>continue sending </FONT><FONT
size=2>data.</FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT> </DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>Now, we know </FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2> y < 2^30</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>a constraint required and
imposed by TCP (rfc 1323</FONT><FONT size=2>).</FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT> </DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>We can claim </FONT><FONT
size=2>that a </FONT><FONT size=2>(good) TCP splitter ensures
that</FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2> x <
2^31</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT> </DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>Detlef - this is not
</FONT><FONT size=2>as easy as it might first appear,
especially</FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>since data </FONT><FONT
size=2>can get buffered at the </FONT><FONT size=2>sending or
</FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>receiving TCP-splitter in a
two-splitter case,</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>but it can be (is)
done.</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT> </DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>Hence, x + y < 2^32 and
the above </FONT><FONT size=2>scenario will not occur.</FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT> </DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>The above also requires that
TCP-splitters use</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>the same </FONT><FONT
size=2>ISS (Inital Sequence </FONT><FONT size=2>Number) with the
receiver</FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>as the one used by the sender.
</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>A good TCP-splitter
</FONT><FONT size=2>should (does).</FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT> </DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>Also, with a good TCP-splitter, x
does not reach </FONT><FONT face="Courier New" size=2>2^31 -1 </FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>simply because of a slow receiver
or network and </FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>a fast sender</FONT><FONT
face="Courier New" size=2>.</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>x is generally a function of the
bandwidth*RTT value and </FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>the number </FONT><FONT
face="Courier New" size=2>of TCP connections using the bottleneck</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>and a good TCP-splitter
flow-controls the sender to enforce x</FONT><FONT face="Courier New"
size=2>.</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT> </DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>As an aside, I would love to
see the day when CWND < 2^30</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>becomes too limiting
</FONT><FONT face="Courier New" size=2>and we need to raise the limit
:)</FONT> </DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT><FONT face="Courier New"
size=2></FONT> </DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>Anil</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>-----------</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>Anil Agarwal</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>ViaSat Inc.</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT> </DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT> </DIV>
<DIV dir=ltr><FONT face="Courier New"
size=2></FONT> </DIV></DIV></DIV>
</BODY>
</HTML>