Will that share the bandwidth pro rata?
Say the bandwidth is 10Mbps and you have 10 users, they only get 1 each?
Otherwise isn't it shared equally anyway?
There must be a way to apply a kbps limit in case someone is hogging the
bandwidth?
--------------------------------------------------
From: "Andrew Beverley" <andy@xxxxxxxxxxx>
Sent: Tuesday, October 26, 2010 11:24 PM
To: "Landy Landy" <landysaccount@xxxxxxxxx>
Cc: "Squid-Users" <squid-users@xxxxxxxxxxxxxxx>
Subject: Re: Limiting user's bandwidth
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