<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=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" size=2> the TCP-splitters buffer x
bytes of </FONT><FONT face="Courier New" size=2>undelivered data,</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" size=2> x < 2^32
and </FONT><FONT face="Courier New" size=2>x+y >= 2^32,</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" size=2> packets flow </FONT><FONT
face="Courier New" size=2>between the sender and receiver over an alternate
path.</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT> </DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>In this case, </FONT><FONT
face="Courier New"><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><FONT face="Courier New" size=2>and hence
</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" size=2>accept data beyond </FONT><FONT
face="Courier New" size=2>it; </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" size=2>continue sending </FONT><FONT
face="Courier New" size=2>data.</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2></FONT> </DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2>Now, we
know </FONT></FONT></DIV>
<DIV dir=ltr><FONT face="Courier New"><FONT size=2> y <
2^30</FONT></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"><FONT size=2> x <
2^31</FONT></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><FONT face="Courier New" size=2>as easy as it might first
appear, especially</FONT></DIV>
<DIV dir=ltr><FONT face="Courier New" size=2>since data </FONT><FONT
face="Courier New" size=2>can get buffered at the </FONT><FONT
face="Courier New" size=2>sending or </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" size=2>the same </FONT><FONT
face="Courier New" size=2>ISS (Inital Sequence </FONT><FONT
face="Courier New" size=2>Number) with the receiver</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" size=2>A good TCP-splitter </FONT><FONT
face="Courier New" size=2>should (does).</FONT></DIV>
<DIV dir=ltr><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>
</BODY>
</HTML>