<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>&nbsp;</DIV></DIV>
<DIV>
<DIV id=idOWAReplyText22137 dir=ltr>
<DIV dir=ltr><FONT face="Courier New" size=2>Joe Touch wrote -<BR>&gt;&gt; Are 
you describing a scenario where a TCP-Splitter buffers up 2^32 bytes<BR>&gt;&gt; 
of sender<BR>&gt;&gt; data without delivering any to the receive end-point, then 
goes down, and<BR>&gt;&gt; the end-points continue the connection using the 
wrapped<BR>&gt;&gt; sequence number, which in this case match up just right, so 
that the<BR>&gt;&gt; intervening<BR>&gt;&gt; 2^32 bytes disappear down a black 
hole, without the sender or receive<BR>&gt;&gt; being any 
wiser?<BR>&gt;&gt;<BR>&gt; Yes. The system can wrap without things matching up 
_exactly_, depending<BR>&gt; on how big the CWND is, though, so this isn't as 
absurdly specific as it<BR>&gt; 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>&nbsp; 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>&nbsp; the sender cwnd is 
y,</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>&nbsp;&nbsp;x &lt; 2^32 
and&nbsp;</FONT><FONT size=2>x+y &gt;= 2^32,</FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>&nbsp; the splitters go 
down&nbsp;and </FONT></DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>&nbsp; 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>&nbsp;</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>&nbsp;</DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>Now, we know&nbsp;</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>&nbsp; y &lt; 2^30</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>a constraint required and 
imposed&nbsp;by TCP (rfc 1323</FONT><FONT size=2>).</FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT>&nbsp;</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>&nbsp;&nbsp;x &lt; 
2^31</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>Detlef - this is not 
</FONT><FONT size=2>as easy as it might&nbsp;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>&nbsp;</DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>Hence, x + y &lt; 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>&nbsp;</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&nbsp;</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>&nbsp;</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>&nbsp;</DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>As an aside, I&nbsp;would love to 
see the day when CWND &lt; 2^30</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>becomes&nbsp;too limiting 
</FONT><FONT face="Courier New" size=2>and we need to raise the limit 
:)</FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT><FONT face="Courier New" 
size=2></FONT>&nbsp;</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>&nbsp;</DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT face="Courier New" 
size=2></FONT>&nbsp;</DIV></DIV></DIV>

</BODY>
</HTML>