Hey all. I''m trying to set up QoS using the HTB qdisc in a very basic setup, but it the example shown in the howto doesn''t seem to be working. While the packets show up in the correct classes, they appear to be completely ignoring the rates, meaning nothing gets shaped. My setup is that I''ve got a a bunch of machines behind my firewall/router: 1.2.3.1 +----------------------------+ 10.0.0.1 1.2.3.2 -----+eth0 firewall/router eth1+--- 10.0.0.2 1.2.3.3 +----------------------------+ 10.0.0.3 10.0.0.1 is nat''d to 1.2.3.1, 10.0.0.2 to 1.2.3.2, etc. eth0 is attached to a 768Kbit DSL line, and eth1 to a 100Mb ethernet. I want to limit the output of 10.0.0.1, but let it borrow from everybody else''s bandwidth when the bandwidth would go unused. HTB seems ideal for this, and the TC stuff is pretty much identical to the basic one in the howto: tc qdisc add dev eth0 handle 1: root htb default 11 tc class add dev eth0 parent 1: classid 1:1 htb rate 768kbit ceil 768kbit burst 15k tc class add dev eth0 parent 1:1 classid 1:10 htb rate 160kbit ceil 768kbit burst 15k tc class add dev eth0 parent 1:1 classid 1:11 htb rate 608kbit ceil 768kbit burst 15k tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10 tc qdisc add dev eth0 parent 1:11 handle 10: sfq perturb 10 tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 1.2.3.1 flowid 1:10 When I start sucking a lot of data from 10.0.0.1 and 10.0.0.2 from outside the firewall, the packets end up in the correct classes (judging by tc -s -d show dev eth0). But they also are processed at equal rates, not at the 160:608 ratio I''ve specified. What am I doing wrong?
Hi, look whether backlog was build on htb qdisc. In your setup where both you and modem are limiting the flow on the same rate it is possible that modem is limiting "a bit more" thus preventing backlog to be build on qdisc. All non-work-conserving disciplines (shapers) must have some backlog to work correctly. As fix make HTB''s rate a bit smaller (750kbit f.e.). devik On Wed, 27 Feb 2002, Ben wrote:> Hey all. I''m trying to set up QoS using the HTB qdisc in a very basic > setup, but it the example shown in the howto doesn''t seem to be working. > While the packets show up in the correct classes, they appear to be > completely ignoring the rates, meaning nothing gets shaped. > > My setup is that I''ve got a a bunch of machines behind my firewall/router: > > > 1.2.3.1 +----------------------------+ 10.0.0.1 > 1.2.3.2 -----+eth0 firewall/router eth1+--- 10.0.0.2 > 1.2.3.3 +----------------------------+ 10.0.0.3 > > > 10.0.0.1 is nat''d to 1.2.3.1, 10.0.0.2 to 1.2.3.2, etc. eth0 is attached > to a 768Kbit DSL line, and eth1 to a 100Mb ethernet. > > I want to limit the output of 10.0.0.1, but let it borrow from everybody > else''s bandwidth when the bandwidth would go unused. HTB seems ideal for > this, and the TC stuff is pretty much identical to the basic one in the > howto: > > tc qdisc add dev eth0 handle 1: root htb default 11 > > tc class add dev eth0 parent 1: classid 1:1 htb rate 768kbit ceil 768kbit burst 15k > tc class add dev eth0 parent 1:1 classid 1:10 htb rate 160kbit ceil 768kbit burst 15k > tc class add dev eth0 parent 1:1 classid 1:11 htb rate 608kbit ceil 768kbit burst 15k > > tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10 > tc qdisc add dev eth0 parent 1:11 handle 10: sfq perturb 10 > > tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 1.2.3.1 flowid 1:10 > > > When I start sucking a lot of data from 10.0.0.1 and 10.0.0.2 from outside > the firewall, the packets end up in the correct classes (judging by tc -s > -d show dev eth0). But they also are processed at equal rates, not at the > 160:608 ratio I''ve specified. > > What am I doing wrong? > > _______________________________________________ > LARTC mailing list / LARTC@mailman.ds9a.nl > http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/ > >
On Thursday 28 February 2002 04:25, Ben wrote:> Hey all. I''m trying to set up QoS using the HTB qdisc in a very basic > setup, but it the example shown in the howto doesn''t seem to be working. > While the packets show up in the correct classes, they appear to be > completely ignoring the rates, meaning nothing gets shaped. > > My setup is that I''ve got a a bunch of machines behind my firewall/router: > > > 1.2.3.1 +----------------------------+ 10.0.0.1 > 1.2.3.2 -----+eth0 firewall/router eth1+--- 10.0.0.2 > 1.2.3.3 +----------------------------+ 10.0.0.3 > > > 10.0.0.1 is nat''d to 1.2.3.1, 10.0.0.2 to 1.2.3.2, etc. eth0 is attached > to a 768Kbit DSL line, and eth1 to a 100Mb ethernet. > > I want to limit the output of 10.0.0.1, but let it borrow from everybody > else''s bandwidth when the bandwidth would go unused. HTB seems ideal for > this, and the TC stuff is pretty much identical to the basic one in the > howto: > > tc qdisc add dev eth0 handle 1: root htb default 11 > > tc class add dev eth0 parent 1: classid 1:1 htb rate 768kbit ceil 768kbit > burst 15k tc class add dev eth0 parent 1:1 classid 1:10 htb rate 160kbit > ceil 768kbit burst 15k tc class add dev eth0 parent 1:1 classid 1:11 htb > rate 608kbit ceil 768kbit burst 15k > > tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10 > tc qdisc add dev eth0 parent 1:11 handle 10: sfq perturb 10You use twice handle 10:. Typo ?> > tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src > 1.2.3.1 flowid 1:10 > > > When I start sucking a lot of data from 10.0.0.1 and 10.0.0.2 from outside > the firewall, the packets end up in the correct classes (judging by tc -s > -d show dev eth0). But they also are processed at equal rates, not at the > 160:608 ratio I''ve specified.Do you use the full 768kbit ? When you do tc -s -d class show dev eth0, do you see any packets in class 1:11? Or better, post the output of that command. Stef -- stef.coene@docum.org More QOS info : http://www.docum.org/ Title : "Using Linux as bandwidth manager"
Yep, sorry, that was a typo. The handle of the second leaf qdisc is 11: The output of "tc -s -d class show dev eth0": class htb 1:11 parent 1:1 leaf 11: prio 0 rate 590Kbit ceil 750Kbit burst 15Kb/8 mpu 0b cburst 2559b/8 mpu 0b quantum 7552 level 0 Sent 7399829 bytes 6552 pkts (dropped 0, overlimits 781) rate 34711bps 30pps lended: 6552 borrowed: 0 giants: 0 injects: 0 tokens: 150181 ctokens: 8943 class htb 1:1 root prio 0 rate 750Kbit ceil 750Kbit burst 15Kb/8 mpu 0b cburst 2559b/8 mpu 0b quantum 9600 level Sent 19027560 bytes 14359 pkts (dropped 0, overlimits 0) rate 86405bps 65pps lended: 4811 borrowed: 0 giants: 0 injects: 0 tokens: 111913 ctokens: 2685 class htb 1:10 parent 1:1 leaf 10: prio 0 rate 160Kbit ceil 750Kbit burst 15Kb/8 mpu 0b cburst 2559b/8 mpu 0b quantum 2048 level 0 Sent 11627731 bytes 7807 pkts (dropped 0, overlimits 1325) rate 52338bps 35pps lended: 2996 borrowed: 4811 giants: 0 injects: 0 tokens: -28622 ctokens: 8943 The output of "tc -s -d class show dev eth0": class htb 1:11 parent 1:1 leaf 11: prio 0 rate 590Kbit ceil 750Kbit burst 15Kb/8 mpu 0b cburst 2559b/8 mpu 0b quantum 7552 level 0 Sent 8616029 bytes 7538 pkts (dropped 0, overlimits 898) rate 34368bps 29pps lended: 7538 borrowed: 0 giants: 0 injects: 0 tokens: 141989 ctokens: 7717 class htb 1:1 root prio 0 rate 750Kbit ceil 750Kbit burst 15Kb/8 mpu 0b cburst 2559b/8 mpu 0b quantum 9600 level 3 Sent 22251526 bytes 16692 pkts (dropped 0, overlimits 0) rate 86312bps 64pps lended: 5648 borrowed: 0 giants: 0 injects: 0 tokens: 98400 ctokens: -10828 class htb 1:10 parent 1:1 leaf 10: prio 0 rate 160Kbit ceil 750Kbit burst 15Kb/8 mpu 0b cburst 2559b/8 mpu 0b quantum 2048 level 0 Sent 13635497 bytes 9154 pkts (dropped 0, overlimits 1494) rate 51048bps 34pps lended: 3506 borrowed: 5648 giants: 0 injects: 0 tokens: -45392 ctokens: -2927 On Thu, 28 Feb 2002, Stef Coene wrote:> On Thursday 28 February 2002 04:25, Ben wrote: > > Hey all. I''m trying to set up QoS using the HTB qdisc in a very basic > > setup, but it the example shown in the howto doesn''t seem to be working. > > While the packets show up in the correct classes, they appear to be > > completely ignoring the rates, meaning nothing gets shaped. > > > > My setup is that I''ve got a a bunch of machines behind my firewall/router: > > > > > > 1.2.3.1 +----------------------------+ 10.0.0.1 > > 1.2.3.2 -----+eth0 firewall/router eth1+--- 10.0.0.2 > > 1.2.3.3 +----------------------------+ 10.0.0.3 > > > > > > 10.0.0.1 is nat''d to 1.2.3.1, 10.0.0.2 to 1.2.3.2, etc. eth0 is attached > > to a 768Kbit DSL line, and eth1 to a 100Mb ethernet. > > > > I want to limit the output of 10.0.0.1, but let it borrow from everybody > > else''s bandwidth when the bandwidth would go unused. HTB seems ideal for > > this, and the TC stuff is pretty much identical to the basic one in the > > howto: > > > > tc qdisc add dev eth0 handle 1: root htb default 11 > > > > tc class add dev eth0 parent 1: classid 1:1 htb rate 768kbit ceil 768kbit > > burst 15k tc class add dev eth0 parent 1:1 classid 1:10 htb rate 160kbit > > ceil 768kbit burst 15k tc class add dev eth0 parent 1:1 classid 1:11 htb > > rate 608kbit ceil 768kbit burst 15k > > > > tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10 > > tc qdisc add dev eth0 parent 1:11 handle 10: sfq perturb 10 > You use twice handle 10:. Typo ? > > > > > tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src > > 1.2.3.1 flowid 1:10 > > > > > > When I start sucking a lot of data from 10.0.0.1 and 10.0.0.2 from outside > > the firewall, the packets end up in the correct classes (judging by tc -s > > -d show dev eth0). But they also are processed at equal rates, not at the > > 160:608 ratio I''ve specified. > Do you use the full 768kbit ? > When you do tc -s -d class show dev eth0, do you see any packets in class > 1:11? > Or better, post the output of that command. > > Stef > > -- > > stef.coene@docum.org > More QOS info : http://www.docum.org/ > Title : "Using Linux as bandwidth manager" >
As far as I can see, no backlog is being built. How can I tell? FYI, I lowered 768Kbit to 750Kbit and there is no difference. But anyway, doesn''t doing that mean that my dsl line will run at less than its best possible speed? On Thu, 28 Feb 2002, Martin Devera wrote:> Hi, > look whether backlog was build on htb qdisc. In your setup > where both you and modem are limiting the flow on the same > rate it is possible that modem is limiting "a bit more" thus > preventing backlog to be build on qdisc. > All non-work-conserving disciplines (shapers) must have some > backlog to work correctly. > As fix make HTB''s rate a bit smaller (750kbit f.e.). > devik > > On Wed, 27 Feb 2002, Ben wrote: > > > Hey all. I''m trying to set up QoS using the HTB qdisc in a very basic > > setup, but it the example shown in the howto doesn''t seem to be working. > > While the packets show up in the correct classes, they appear to be > > completely ignoring the rates, meaning nothing gets shaped. > > > > My setup is that I''ve got a a bunch of machines behind my firewall/router: > > > > > > 1.2.3.1 +----------------------------+ 10.0.0.1 > > 1.2.3.2 -----+eth0 firewall/router eth1+--- 10.0.0.2 > > 1.2.3.3 +----------------------------+ 10.0.0.3 > > > > > > 10.0.0.1 is nat''d to 1.2.3.1, 10.0.0.2 to 1.2.3.2, etc. eth0 is attached > > to a 768Kbit DSL line, and eth1 to a 100Mb ethernet. > > > > I want to limit the output of 10.0.0.1, but let it borrow from everybody > > else''s bandwidth when the bandwidth would go unused. HTB seems ideal for > > this, and the TC stuff is pretty much identical to the basic one in the > > howto: > > > > tc qdisc add dev eth0 handle 1: root htb default 11 > > > > tc class add dev eth0 parent 1: classid 1:1 htb rate 768kbit ceil 768kbit burst 15k > > tc class add dev eth0 parent 1:1 classid 1:10 htb rate 160kbit ceil 768kbit burst 15k > > tc class add dev eth0 parent 1:1 classid 1:11 htb rate 608kbit ceil 768kbit burst 15k > > > > tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10 > > tc qdisc add dev eth0 parent 1:11 handle 10: sfq perturb 10 > > > > tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 1.2.3.1 flowid 1:10 > > > > > > When I start sucking a lot of data from 10.0.0.1 and 10.0.0.2 from outside > > the firewall, the packets end up in the correct classes (judging by tc -s > > -d show dev eth0). But they also are processed at equal rates, not at the > > 160:608 ratio I''ve specified. > > > > What am I doing wrong? > > > > _______________________________________________ > > LARTC mailing list / LARTC@mailman.ds9a.nl > > http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/ > > > > > > _______________________________________________ > LARTC mailing list / LARTC@mailman.ds9a.nl > http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/ >
On Thursday 28 February 2002 18:52, you wrote:> As far as I can see, no backlog is being built. How can I tell? > > FYI, I lowered 768Kbit to 750Kbit and there is no difference. But anyway, > doesn''t doing that mean that my dsl line will run at less than its best > possible speed?Yes. But you have to do this. The reason is simple. The devices that''s the bottleneck on the link will be shaping the traffic. YOU want to shape the traffic, so you have to be sure your modem is never filled up with traffic so his buffers are not disturbing you setup. The only thing you can do is make sure you are not sending too nuch traffic. So yes, you loose some bandwidth, but you win the possibility to shape the remaining bandwidth. Stef -- stef.coene@docum.org More QOS info : http://www.docum.org/ Title : "Using Linux as bandwidth manager"
> As far as I can see, no backlog is being built. How can I tell?you would see the backlog in tc -s qdisc show. It must not be there all time but you should see some at least when link is fully used. If you don''t see it you line is probably slower than you isp claimed :) devik