I tried it with a minimal config - two classes, each with rate: 256Kbit and ceiling: 512Kbit and one dest. IP address in each, as well as a default class. Each specified machine could only pull 256Kbit maximum, either alone or with the other downloading as well. Output of tc -s qdisc show dev eth1: qdisc sfq 50: quantum 1514b perturb 10sec Sent 7506464 bytes 4984 pkts (dropped 0, overlimits 0) backlog 6p qdisc sfq 40: quantum 1514b perturb 10sec Sent 4275617 bytes 2829 pkts (dropped 0, overlimits 0) backlog 3p qdisc sfq 10: quantum 1514b perturb 10sec Sent 287102 bytes 542 pkts (dropped 0, overlimits 0) qdisc htb 1: r2q 100 default 10 dcache 0 deq_util 1/1000000 deq_rate 125 trials_per_deq 0 dcache_hits 0 direct_packets 0 Sent 12069183 bytes 8355 pkts (dropped 0, overlimits 15537) backlog 9p Output of tc -s class show dev eth1: class htb 1:10 root leaf 10: prio 0 rate 2Mbit ceil 2Mbit burst 15Kb cburst 4220b Sent 331368 bytes 678 pkts (dropped 0, overlimits 32) rate 107bps lended: 678 borrowed: 0 giants: 0 injects: 0 tokens: 47825 ctokens: 13015 class htb 1:2 root prio 0 rate 5Mbit ceil 5Mbit burst 15Kb cburst 8151b Sent 0 bytes 0 pkts (dropped 0, overlimits 0) lended: 0 borrowed: 0 giants: 0 injects: 0 tokens: 19199 ctokens: 10190 class htb 1:40 root leaf 40: prio 0 rate 256Kbit ceil 512Kbit burst 15Kb cburst 2254b Sent 4275671 bytes 2830 pkts (dropped 0, overlimits 0) rate 226bps lended: 2830 borrowed: 0 giants: 0 injects: 0 tokens: 382801 ctokens: 27588 class htb 1:50 root leaf 50: prio 0 rate 256Kbit ceil 512Kbit burst 15Kb cburst 2254b Sent 8214460 bytes 5467 pkts (dropped 0, overlimits 0) rate 546bps lended: 5467 borrowed: 0 giants: 0 injects: 0 tokens: 382801 ctokens: 27588 Output of htb.init compile: tc qdisc del dev eth1 root tc qdisc add dev eth1 root handle 1 htb default 10 r2q 100 tc class add dev eth1 parent 1:2 classid 1:10 htb rate 2Mbit ceil 2Mbit burst 15k tc qdisc add dev eth1 parent 1:10 handle 10 sfq perturb 10 tc class add dev eth1 parent 1:2 classid 1:40 htb rate 256Kbit ceil 512Kbit burst 15k tc qdisc add dev eth1 parent 1:40 handle 40 sfq perturb 10 tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip dst 10.0.0.20 classid 1:40 tc class add dev eth1 parent 1:2 classid 1:50 htb rate 256Kbit ceil 512Kbit burst 15k tc qdisc add dev eth1 parent 1:50 handle 50 sfq perturb 10 tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip dst 10.0.0.150 classid 1:50 tc class add dev eth1 parent 1: classid 1:2 htb rate 5Mbit burst 15k Gavin ----- Original Message ----- From: "Martin Devera" <devik@cdi.cz> To: "Stef Coene" <stef.coene@docum.org> Cc: "Gavin" <gavin@raha.com>; <LARTC@mailman.ds9a.nl> Sent: Friday, April 05, 2002 1:40 PM Subject: Re: [LARTC] htb ceiling > > > tc qdisc add dev eth1 root handle 1 htb default 10 r2q 100 > > > tc class add dev eth1 parent 1: classid 1:2 htb rate 5Mbit burst 15k > > > tc class add dev eth1 parent 1:2 classid 1:40 htb rate 256Kbit ceil 512Kbit > > > burst 15k > > > tc qdisc add dev eth1 parent 1:40 handle 40 sfq perturb 10 > > > tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip dst > > > 10.0.0.2 classid 1:40 > > > > > > - this allows 10.0.0.2 to download at 256Kbit, even when it is the only > > > machine doing any downloading. I can affect this speed by changing the > > > $rate, but changing $ceil has no effect whatsoever. > > The ceil will prevent 10.0.0.2 to download faster then 512 kbit. The rate > > will say how much 10.0.0.2 can download compare to the other classes (so the > > other lines are also relevant :). > > No Stef, > the rate is really measured - it is used as source for DRR weight > (here it is used relative to other classes) and to see whether we > need to borrow from parent - here absolute value matters. > So that the example above should work and give 512k. > > Gavin, did you tried with only these classes present ? (to have > maximaly simplified configuration which exhibits it). > If yes and it really does only 256k then post > tc -s {qdisc,class} show dev ethXX outputs ... as usual > devik > >