<div>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>)</div>
<div>---------------------------------------------------------------------------------------------------------------------------------------------------------</div><div>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>-------------------------------------------------------------------------------------------------------------------------------- </div>
<div><br></div><div>My question to the group is : what other reasons not mentioned here can be reasons to buffer in a router?</div><div><br></div><div>-Paddy </div>