<br><br><div class="gmail_quote">On Wed, Mar 12, 2008 at 11:50 AM, Bruno Wolff III &lt;<a href="mailto:bruno@wolff.to">bruno@wolff.to</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">On Wed, Mar 12, 2008 at 01:59:46 -0700,<br>
 &nbsp;Andrew Farris &lt;<a href="mailto:lordmorgul@gmail.com">lordmorgul@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; I was thinking more along the lines of just the local machine&#39;s behavior<br>
&gt; with different connections having higher or lower priority for outbound<br>
&gt; (which is often what hurts response time the most for slower connections<br>
&gt; while longer running transfers occur). &nbsp;I really don&#39;t know how effective<br>
&gt; QOS is, so it may be a bad way to approach this issue.<br>
<br>
</div>You would still need to write the rules that do the shaping. However some<br>
applications set QoS (particularly to distinguish between interactive and<br>
bulk traffic) so it can be useful to look at. For outbound packets you<br>
are OK, for inbound not so much.<br>
<div class="Ih2E3d"><br>
&gt; If an update connection had low priority for the bandwidth resources, that<br>
&gt; connection should be postponed whenever a higher priority connection wants<br>
&gt; to push outbound traffic. &nbsp;A browser then would get to send its page<br>
&gt; requests or acks ahead of running transfer packets from the update utility;<br>
&gt; the result would be a much more responsive browser while still using most<br>
&gt; of the available bandwidth. &nbsp;Whether the QOS flags are being<br>
&gt; stripped/mangled once the traffic leaves the local machine should not<br>
&gt; really hurt that improvement would it?<br>
<br>
</div>It makes it hard to handle inbound traffic which you may also need to<br>
manage. Though in a particular case that may not be a bottleneck. In your<br>
case it looks like you will be needing to throttle inbound traffic, so<br>
this is relevant. The way this shaping is done you either drop some packets<br>
from the connections you want to slow down or you set bits in the<br>
acknowledgement thay say the sender should slow down as if you had dropped<br>
the packet. Not all network stacks support the later feature, but I don&#39;t<br>
know what fraction do these days. It might be in practice almost everyone<br>
does.<br>
So you aren&#39;t blocking outbound requests in order to prevent applications<br>
from retrieving data. That kind of approach would be a lot different and<br>
have to be customized to each application.<br>
<div class="Ih2E3d">&gt;<br>
&gt; I&#39;m just thinking it may not require full end-to-end to enjoy some benefit.<br>
&gt; The incoming connection would not be slowed or postponed to let the browser<br>
&gt; respond, but by not acking what comes in until the outbound clears up I<br>
&gt; think it might help anyway.<br>
<br>
</div>You don&#39;t really want to drop all packets, just some. The sender is supposed<br>
to back off with an exponential reduction in send rate until packets stop<br>
getting dropped. If you block all of them, the application will likely assume<br>
the connection has been broken and stop working. Generally throttling and<br>
giving priority to low latency packets should work fairly well.<br>
<div><div></div><div class="Wj3C7c"></div></div></blockquote><div><br></div></div>In case of dynamic throttling we won&#39;t be having any _fixed_ rate at which the connections assigned for updates will be able receive the packets. It means packets would be dropped frequently to implement policing.&nbsp; Isn&#39;t this waste of resources?<br>
<br>Tools like tc and tcng implement queues to control outbound data. Is there any similar _kind of_ option available for inbound data? <br>(Obviously we can&#39;t have queues because once the packet has been received must be processed)<br clear="all">
<br>-- <br>Regards,<br>Sunil Ghai