<br><div><span class="gmail_quote">On 7/10/07, <b class="gmail_sendername">Lachlan Andrew</b> &lt;<a href="mailto:lachlan.andrew@gmail.com">lachlan.andrew@gmail.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Greetings&nbsp; Lachlan ,</blockquote><div>&nbsp;&nbsp;&nbsp; &nbsp;<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">&gt;&nbsp;&nbsp;&nbsp;&nbsp; I was able to identify the size of the buffer in the Router&#39;s interface.
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; It was found to be 2040<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; bytes and the buffer management scheme used is FIFO .<br><br>That&#39;s a very small buffer -- it can only hold one packet!&nbsp;&nbsp;Are you<br>sure that was the size?</blockquote>
<div><br>&nbsp;&nbsp;<span style="color: rgb(51, 204, 0);"> I am not quite sure as I don&#39;t have much experience in routers.</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;&nbsp; This is the output of &quot;show buffers &quot; command in Cisco C3750 switch. 
</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&quot;&quot;</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;Interface buffer pools:</span><br style="color: rgb(51, 204, 0);">
<span style="color: rgb(51, 204, 0);">&nbsp;Supervisor MIC Fallback pool buffers, 2040 bytes (total 904, permanent 904):</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;&nbsp;&nbsp;&nbsp; 897 in free list (0 min, 904 max allowed)
</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;&nbsp;&nbsp;&nbsp; 44790529 hits, 0 misses</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;supervisor_cpuq_0_pool buffers, 2040 bytes (total 1200, permanent 1200):
</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;&nbsp;&nbsp;&nbsp; 700 in free list (0 min, 1200 max allowed)</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;&nbsp;&nbsp;&nbsp; 104718271 hits, 0 misses
</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">supervisor_cpuq_2_pool buffers, 2040 bytes (total 64, permanent 64):</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">
&nbsp;&nbsp;&nbsp;&nbsp; 0 in free list (0 min, 64 max allowed)</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;&nbsp;&nbsp;&nbsp; 64 hits, 0 misses, 0 trims, 0 created</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">
&nbsp;&nbsp;&nbsp;&nbsp; 0 failures (0 no memory)</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">supervisor_cpuq_1_pool buffers, 2040 bytes (total 128, permanent 128):</span><br style="color: rgb(51, 204, 0);">
<span style="color: rgb(51, 204, 0);">&nbsp;&nbsp;&nbsp;&nbsp; 1 in free list (0 min, 128 max allowed)</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;&nbsp;&nbsp;&nbsp; 25512718 hits, 199587 fallbacks</span><br style="color: rgb(51, 204, 0);">
<span style="color: rgb(51, 204, 0);">supervisor_cpuq_4_pool buffers, 2040 bytes (total 128, permanent 128):</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;&nbsp;&nbsp;&nbsp; 1 in free list (0 min, 128 max allowed)
</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;&nbsp;&nbsp;&nbsp; 3032553 hits, 35456 fallbacks</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">supervisor_cpuq_15_pool buffers, 2040 bytes (total 4, permanent 4):
</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;&nbsp;&nbsp;&nbsp; 0 in free list (0 min, 4 max allowed)</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;&nbsp;&nbsp;&nbsp; 801508724 hits, 801508720 misses
</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&quot;&quot;</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;&nbsp; From that I interpreted that the buffer size is 2040 bytes. Correct me if I am wrong.&nbsp; 
</span><br style="color: rgb(51, 204, 0);"><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&quot;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The general rule-of-thumb for Reno is that the send buffer should be
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at least twice the bandwidth*RTT.&nbsp;&nbsp;For BIC is is probably reduced to<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;about 120% of the BDP<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&quot;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;The tunings are as follows.<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Send buffer = BDP + 120 % of&nbsp;&nbsp;BDP
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;921600&nbsp;&nbsp;+ 184320<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1105920 bytes<br><br>This is 220% of the BDP&nbsp;&nbsp;(100% + 120%).&nbsp;&nbsp;I originally meant just 120%.<br> Still, using 200% should be better.
</blockquote><div><br>&nbsp;&nbsp;&nbsp;<span style="color: rgb(51, 204, 0);"> I think&nbsp; it is only 120 % only of BDP and not 220%. .</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 921600 + 921600/100 * 20 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 921600 + 184320<br style="color: rgb(51, 204, 0);"></span><span style="color: rgb(51, 204, 0);">&nbsp;&nbsp;&nbsp; &nbsp; =&nbsp; 1105920 bytes. </span><br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Receive buffer =&nbsp;&nbsp;BDP + Router&#39;s buffer size<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;921600 +&nbsp;&nbsp;2040<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;923640 bytes<br><br>I would have guessed that this is what is causing the biggest
<br>reduction in your throughput.&nbsp;&nbsp;I&#39;m pretty confident that the router&#39;s<br>buffer size will be bigger than 2040 bytes.</blockquote><div><br>&nbsp;&nbsp;&nbsp;<span style="color: rgb(51, 204, 0);"> If you know the appropriate command , please let me know. It is 
</span><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp;&nbsp; Cisco C3750 catalyst switch. Also , tell me the command to increase the<br>&nbsp;&nbsp; buffer size if you are aware of it. <br style="color: rgb(51, 204, 0);">
</span><span style="color: rgb(51, 204, 0);">&nbsp;</span></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;But if I tune the window size to twice the size of BDP , I got&nbsp;&nbsp;a
<br>&gt; average throughput of<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;around 88 Mbits/sec which I feel very much O.K for a 100 MBits/sec link<br><br>The &quot;window&quot; is controlled by TCP -- you can&#39;t tune it.&nbsp;&nbsp;Did you tune<br>one of the buffer sizes?
</blockquote><div><br><br></div>&nbsp;&nbsp; <br><div>&nbsp;&nbsp; <span style="color: rgb(0, 153, 0);">I did the following tunings at both ends . BDP was 921600 . So twice of BDP is&nbsp; </span><span style="color: rgb(51, 204, 0);"> 1756366</span>
<br style="color: rgb(51, 204, 0);"><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp; &nbsp; /proc/sys/net/core/rmem_max&nbsp; 1756366</span><br style="color: rgb(0, 153, 0);"><span style="color: rgb(0, 153, 0);">
&nbsp;&nbsp;&nbsp; /proc/sys/net/core/wmem_max&nbsp; 1756366
</span><br style="color: rgb(0, 153, 0);"><span style="color: rgb(0, 153, 0);">&nbsp;&nbsp;&nbsp; /proc/sys/net/ipv4/tcp_rmem&nbsp;&nbsp; </span><div style="color: rgb(0, 153, 0);" id="mb_0">&nbsp;&nbsp; 4096&nbsp;&nbsp;&nbsp; 87380&nbsp;&nbsp; 1756366</div><div style="color: rgb(0, 153, 0);" id="mb_0">
&nbsp;&nbsp; /proc/sys/net/ipv4/tcp_wmem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4096&nbsp;&nbsp;&nbsp; 87380&nbsp;&nbsp; 1756366</div><br style="color: rgb(0, 153, 0);"><span style="color: rgb(0, 153, 0);">&nbsp;</span><br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
&gt;&nbsp;&nbsp;&nbsp;&nbsp; In that case , the end to end send and receive buffer size should be<br>&gt; atleast<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;equal to twice the size of BDP to obtain maximum throughput.<br><br>That sounds like a good rule of thumb.&nbsp;&nbsp;It is certainly the widely
<br>accepted rule for Reno.</blockquote><div><br>&nbsp;&nbsp;<span style="font-style: italic;"> <span style="color: rgb(51, 204, 0); font-weight: bold;">All my findings are based on BIC . Now , since in the case of our network&nbsp; , the&nbsp; size of the buffer in the intermediate router is probably not equal to the size of BDP,&nbsp; so&nbsp; in that case I feel that the end to end send and receive buffer size should be atleast&nbsp; equal to twice the size of BDP to obtain maximum throughput. . This applies both for RENO and BIC.
</span></span><br style="font-style: italic; color: rgb(51, 204, 0); font-weight: bold;"><span style="font-style: italic; color: rgb(51, 204, 0); font-weight: bold;">But if&nbsp; the size of the buffer in the intermediate buffer is equal to the size of BDP ,&nbsp; Then the settings can be&nbsp; whatever&nbsp; you said for BIC.
</span><br style="font-style: italic; color: rgb(51, 204, 0); font-weight: bold;"><span style="font-style: italic; color: rgb(51, 204, 0);"><span style="font-weight: bold;">&quot;The receive buffer should&nbsp; be at least equal to the BDP plus the router buffer . 
</span><br style="font-weight: bold;"><span style="font-weight: bold;"> The send buffer should be 20% more than BDP &quot;</span><br> </span></div><br style="font-style: italic; color: rgb(51, 204, 0);"><div style="font-style: italic;">
<span style="color: rgb(51, 204, 0);">Do you agree with&nbsp; this statement , please give your views.</span><br style="color: rgb(51, 204, 0);"><br style="color: rgb(51, 204, 0);"><span style="color: rgb(51, 204, 0);">&nbsp; </span>
<br><br><br>&nbsp;With Thanks and Regards<br>&nbsp;Zaman<br>&nbsp; <br>&nbsp;</div><br></div><br>