<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:windowtext;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'>Paddy,<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'>You
might want to take a look at these. The first one has a great overview of why
we need buffers, explains the Bandwitdth x RTT in detail, and shows we might be
able to reduce the buffer sizes down to $Bandwidth x RTT / \sqrt(N)$ . The second
one shows that in networks with slow access links (or paced TCP) you can reduce
the buffer sizes down to 10-20 packets. The last one describes test-bed and
real network experiments on buffer sizing.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'>Hope
this answers your question.<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'>--Yashar<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'><o:p> </o:p></span></p>
<p class=MsoNormal>"Sizing Router Buffers" <br>
Guido Appenzeller, Isaac Keslassy and Nick McKeown <br>
<i>ACM SIGCOMM 2004, Portland, August 2004. </i><a
href="http://tiny-tera.stanford.edu/%7Enickm/papers/sigcomm2004.pdf">pdf,</a> <a
href="http://tiny-tera.stanford.edu/%7Enickm/papers/sigcomm2004.ps">ps</a><o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>M. Enachescu, Y. Ganjali, A. Goel, N. McKeown, and T.
Roughgarden, “Routers with Very Small Buffers,” Proceedings of the
IEEE INFOCOM'06, Barcelona, Spain: 2006.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>and <o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>N. Beheshti, Y. Ganjali, M. Ghobadi, N. McKeown, and G.
Salmon, “Experimental Study of Router Buffer Sizing,” Proceedings
of Internet Measurement Conference (IMC), Vouliagmeni, Greece: 2008, pp.
197-210<span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'><o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'>------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'>Yashar
Ganjali
Bahen Center for Information Technology<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'>Assistant
Professor
40 St. George Street, Room BA 5238<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'>Department
of Computer Science Toronto, ON M5S
2E4<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'>University
of
Toronto
Phone: (416) 978-2952<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'><a
href="http://www.cs.toronto.edu/~yganjali">http://www.cs.toronto.edu/~yganjali</a>
Fax: (416) 978-4765<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'>------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:9.0pt;font-family:"Calibri","sans-serif"'><o:p> </o:p></span></p>
<div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'>
<div>
<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>
<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
end2end-interest-bounces@postel.org
[mailto:end2end-interest-bounces@postel.org] <b>On Behalf Of </b>Paddy Ganti<br>
<b>Sent:</b> Friday, June 19, 2009 3:20 PM<br>
<b>To:</b> end2end-interest@postel.org<br>
<b>Subject:</b> [e2e] Why Buffering?<o:p></o:p></span></p>
</div>
</div>
<p class=MsoNormal><o:p> </o:p></p>
<div>
<p class=MsoNormal>For the question of "why do routers buffer", Vadim
Antonov provided the following rationale (<a
href="http://www.irbs.net/internet/nanog/0204/0298.html">http://www.irbs.net/internet/nanog/0204/0298.html</a>)<o:p></o:p></p>
</div>
<div>
<p class=MsoNormal>---------------------------------------------------------------------------------------------------------------------------------------------------------<o:p></o:p></p>
</div>
<div>
<p class=MsoNormal>Well, so far nobody provided a valid explanation for the
necessity of <br>
buffering in routers (and any other stochastically multiplexing devices). <br>
<br>
The real reason for having buffers is the fact that information about <br>
congestions takes some time to propagate. (In TCP/IP congestion are <br>
detected by seeing lost packets). <br>
<br>
If buffers are not sufficient to hold packets until TCP speakers see <br>
congestion and slow down, the system becomes unstable. Buffers are, <br>
essentially, inertial elements in the delayed negative-feedback control <br>
loop. Insufficient inertia causes oscillations in such systems, which is <br>
sometimes useful, but in case of networks leads to decreased througoutput <br>
because the wire is utilized fully only at upswings and underutilized on <br>
downswings (collapsed TCP windows aggravate the effect futher). <br>
<br>
Consequently, the holding capacity of buffers should be sufficient to <br>
bring the inertia of the system up to the reaction time of the negative <br>
feedback (this is a simplification, of course). This reaction time is <br>
about one round-trip time for end-to-end packets. <br>
<br>
In real networks, the RTTs differ for different paths, so some <br>
"characteristic" RTT is used. So, to hold packets until TCPs slow
down a <br>
router needs cRTT * BW bits of buffer memory (where BW is the speed of the <br>
interface). This rule can be somewhat relaxed if congestion control loop <br>
is engaged proactively before congestion occured (by using Random Early <br>
Detection), but not much. <br>
<br>
Even with properly sized buffers, sessions with longer RTTs suffer from <br>
congestions disproportionately because TCPs on the ends never get enough <br>
time to recover fully (i.e. to bring windows to large enough size to <br>
maintain steady stream of packets), while small-RTT sessions recover <br>
quickly, and, therefore, get bigger share of bandwidth. But I'm <br>
digressing :) <br>
<br>
--vadim<br>
-------------------------------------------------------------------------------------------------------------------------------- <o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><o:p> </o:p></p>
</div>
<div>
<p class=MsoNormal>My question to the group is : what other reasons not
mentioned here can be reasons to buffer in a router?<o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><o:p> </o:p></p>
</div>
<div>
<p class=MsoNormal>-Paddy <o:p></o:p></p>
</div>
</div>
</div>
</body>
</html>