[LARTC] New and need help with TC

Linux Advanced Routing and Traffic Control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I'm new to this list and I was wondering if any of you could help me out
with my traffic problem.

I did get some limiting to work but it's not working the way I want and
that's mostly because I still don't understand some of the commands I'm
using. I want to limit my total bandwidth to a maximum of 256kbits but I
don't want one user to take it all. I also don't want to have everyone
suffer because one site has a lot of hits. I want to make the site with the
high traffic slower than the other sites but I don't want the total to go
over 256kbits. The IP of the high traffic site is 209.150.199.225. All
others should be able to download at a speed up to 200k and have priority
over the high traffic site.

Also does anyone have a nice traffic monitor that shows me the traffic of
each IP which I can use with rrdtool? I have cban right now but it only
shows overall traffic on the adapter.

Here is what I have right now. It is limiting traffic at 256kbits more or
less but I still get spikes over 1mbits which kills my avarage and gets me
the high ISP bill at the end of the month.

This is what I want (kind of):
 *************************************************
 *          eth0 (Limit to 256kbits)               *
 * ********************** ********************** *
 * *  Lower Priority  * * Higher Priority    * *
 * * 209.58.199.225 * * All other IPs       * *
 * * (150k Max total)* * (200k Max total) * *
 * * (100K max per  * * (180k max per    * *
 * * connection)       * * connection)       * *
 * ********************** ********************** *
 ************************************************

This is what I'm doing:

 # I don't know if I have to do this at all

 /sbin/ip address add 209.58.199.225 dev eth0
 /sbin/ip address add 209.58.199.226 dev eth0
 /sbin/ip address add 209.58.199.227 dev eth0
 /sbin/ip address add 209.58.199.228 dev eth0
 /sbin/ip address add 209.58.199.229 dev eth0
 /sbin/ip address add 209.58.199.230 dev eth0
 /sbin/ip address add 209.58.199.231 dev eth0
 /sbin/ip address add 209.58.199.232 dev eth0
 /sbin/ip address add 209.58.199.233 dev eth0
 /sbin/ip address add 209.58.199.234 dev eth0
 /sbin/ip address add 209.58.199.235 dev eth0
 /sbin/ip address add 209.58.199.236 dev eth0
 /sbin/ip address add 209.58.199.237 dev eth0
 /sbin/ip address add 209.58.199.238 dev eth0
 /sbin/ip address add 209.58.199.239 dev eth0

 # Here I think I'm making some kind of parent which limits all traffic to
256kbits, its name is 1

 /sbin/tc qdisc add dev eth0 root handle 1: cbq bandwidth 256kbit avpkt 1000

 # create a subparanet of parent 1:0 called 1:1 with also a 256kbits limit?
Not sure what the other half of the comand does?!allot? weight?

 /sbin/tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 256Kbit
rate 256Kbit allot  1500 weight 16 avpkt 1000

 #create a child of parent 1:1 called 1:10 and some limiting I don't
undertand?!

 /sbin/tc class add dev eth0 parent 1:1 classid 1:10 cbq bandwidth 200Kbit
rate 180Kbit allot 1500 weight 100kbit prio 5 maxburst 20 avpkt 1000 bounded

 /sbin/tc class add dev eth0 parent 1:1 classid 1:11 cbq bandwidth 150Kbit
rate 100Kbit allot 1500 weight 64kbit prio 5 maxburst 20 avpkt 1000 bounded

 #??? u32??

 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 5 handle 1: u32
divisor 1

 #Filter IPs to certain children

 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.199.225 flowid 1:11
 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.199.226 flowid 1:10
 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.199.227 flowid 1:10
 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.199.228 flowid 1:10
 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.199.229 flowid 1:10
 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.199.230 flowid 1:10
 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.199.231 flowid 1:10
 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.199.232 flowid 1:10
 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.199.233 flowid 1:10
 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.199.234 flowid 1:10
 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.199.235 flowid 1:10
 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.199.236 flowid 1:10
 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.199.237 flowid 1:10
 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.199.238 flowid 1:10
 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.199.239 flowid 1:10
 /sbin/tc filter add dev eth0 parent 1:0 protocol ip u32 match ip src
209.58.150.51 flowid 1:10


 Do I make any sense?

thanks for any help you can give me.

-Stefan
stefan@techdroid.com










[Index of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux