Re: [squid-users] Limiting user's bandwidth

From: Andrew Beverley <andy_at_andybev.com>
Date: Tue, 26 Oct 2010 22:24:36 +0100

> Thanks Andy for your reply and taking your time to help like always.
>

No problem at all.

> > > $tc class add dev eth0 parent 1:0 classid 1:1
> > htb rate 900kbit ceil 945kbit
>
> As I understand, correct me if I'm wrong, this rule is telling the
> kernel how much bw we want to use globally or how big is the entire
> bucket.

Yes, but the two are the same, so I would just keep these two parameters
as the same figure. This is the maximum amount of bandwidth that the
whole class can use.

> I know the amount of the leafs don't add up to the root's bw but, not
> all clients are connected at the same time.

That's the beauty of HTB. Set your leaf rates to be the maximum amount
you would want them to ever have, if they did happen to all be connected
at the same time. Set the maximum to be the maximum that they should
ever have if it was possible. The prio parameter will then share the
excess bandwidth accordingly, should there be any available.

> I don't know if this is
> the problem or not but, I have similar rules for the LAN interface
> which works pretty well.

I don't know, but in accordance with the above, there is no reason to
not have them all add up.

> The weird thing is if I don't use squid caching and just use normal
> FORWARD chain along with these tc script the upload and download
> throtle works fine.

Ah, well the difference is that you are using INPUT/OUTPUT chains with
Squid, not FORWARD, so that will be the difference.

Are you just trying to share bandwidth fairly between users? If so, your
best bet is to change to one leaf for all your clients, but attach a
filter to it that will share bandwidth *by IP address* (see below) - the
default is to share by connection. If you want an overall limit you can
apply that to the one leaf, and then everybody within it will get their
fair share within.

If you want people who are downloading/uploading large amounts to get a
reduced share, then set up an iptables rule to set a MARK based on the
amount of date transferred in that connection. There's a good example at
the following web page, although it's currently a work in progress:

http://www.andybev.com/index.php/Fair_traffic_shaping_an_ADSL_line_for_a_local_network_using_Linux

Andy
Received on Tue Oct 26 2010 - 21:25:05 MDT

This archive was generated by hypermail 2.2.0 : Wed Oct 27 2010 - 12:00:05 MDT