Strange HTB rate and ceil setting situation with adsl

Linux Advanced Routing and Traffic Control

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

 



Hi, all:
 
   I have been used HTB Queue within netfilter bridge environment over 
two year and It's working fine. Very thank for htb writer Martin Devera and
experience share with Stef Coene... :)
 
   Last week I helped my friend to setup box that use nf-bridge + htb with
512/64Kbit ADSL. When I use two polciy to limit the bandwith and use ceil to
share bandwith. The rate and ceil parameter can not work according to setting.
 
I only test the download rule.
 
Rule 1: Http download have 384Kbit rate and 512Kbit ceil.
Rule 2: Ftp download have 64Kbit rate and 512Kbit ceil.
Default rule: download have 64Kbit rate and 512Kbit ceil.
 
When I start ftp session to download one file, bandwith can be about 500kbit.
But when I start another http session to download file(ftp seeion still on).
The http session only get 266Kbps bandwith and ftp session rate down to 167Kbps
or sometime ftp will get more bandwidth.

Why http session can't get the 384Kbit rate?  In my enviroment
(nat box +
bridge qos), the ceil setting can work. The only different between me and my
friend is the nat gateway. I was using linux be nat gateway and my firend using
normally IP Sharing router.
PS: We also use same ISP.
 
To found out why,  I have done some experiment that remove my friend's nat
router and only use nf-bridge + htb to test those tc rule. It the same.
The orign kernel is 2.4.18 + htb2 + nf-bridge-0.0.8. Even though I change
to linux-2.4.21 + htb3 + nf-bridge-0.0.9.  It also the same result.
If I change test enviroment to local ethernet network,it can work again.
 
In my guess, may be it is dsl problem. But if have linux nat router before
bridge box, htb queue will be work. It's a little strange... :(
 
Of course, I can use nat + htb in same box to solve the problem. But may
be to understand to reason will be good.
 
Have someone talk me. Does other some reason will cause this situation or
have some method to solve this problem?
 
Thank's for your advise.
 
The tc rule and qdisc show are list below:
Wan nic is eth0, Lan nic is eth1. The test client ip address is 192.168.1.10.
 
/sbin/tc qdisc del dev eth0 root
/sbin/tc qdisc add dev eth0 root handle 10:0 htb r2q 10 default ffff
/sbin/tc class add dev eth0 parent 10:0 classid 10:1 htb rate 64kbit ceil 64kbit
/sbin/tc class add dev eth0 parent 10:1 classid 10:ffff htb rate 12kbit ceil 64kbit prio 3
/sbin/tc qdisc add dev eth0 parent 10:ffff handle ffff:0 sfq perturb 10
/sbin/tc class add dev eth0 parent 10:1  classid 10:2 htb rate 36kbit ceil 64kbit prio 1
/sbin/tc qdisc add dev eth0 parent 10:2 handle 22:0 sfq perturb 10
/sbin/tc filter add dev eth0 parent 10:0 protocol ip prio 1 handle 2 fw classid 10:2
/sbin/tc class add dev eth0 parent 10:1  classid 10:4 htb rate 16kbit ceil 64kbit prio 2
/sbin/tc qdisc add dev eth0 parent 10:4 handle 24:0 sfq perturb 10
/sbin/tc filter add dev eth0 parent 10:0 protocol ip prio 2 handle 4 fw classid 10:4
 
/sbin/tc qdisc del dev eth1 root
/sbin/tc qdisc add dev eth1 root handle 10:0 htb r2q 10 default ffff
/sbin/tc class add dev eth1 parent 10:0 classid 10:1 htb rate 512kbit ceil 512kbit
/sbin/tc class add dev eth1 parent 10:1 classid 10:ffff htb rate 64kbit ceil 512kbit prio 3
/sbin/tc qdisc add dev eth1 parent 10:ffff handle ffff:0 sfq perturb 10
/sbin/tc class add dev eth1 parent 10:1  classid 10:3 htb rate 384kbit ceil 512kbit prio 1
/sbin/tc qdisc add dev eth1 parent 10:3 handle 23:0 sfq perturb 10
/sbin/tc filter add dev eth1 parent 10:0 protocol ip prio 2 handle 3 fw classid 10:3
/sbin/tc class add dev eth1 parent 10:1  classid 10:5 htb rate 64kbit ceil 512kbit prio 2
/sbin/tc qdisc add dev eth1 parent 10:5 handle 25:0 sfq perturb 10
/sbin/tc filter add dev eth1 parent 10:0 protocol ip prio 2 handle 5 fw classid 10:5
/sbin/iptables -I PREROUTING -t mangle -p tcp -s 192.168.1.10 -m mport --ports 80 -j MARK --set-mark 2
/sbin/iptables -I PREROUTING -t mangle -p tcp -d 192.168.1.10 -m mport --ports 80 -j MARK --set-mark 3
/sbin/iptables -I PREROUTING -t mangle -p all  -s 192.168.1.10 -m helper --helper ftp -j MARK --set-mark 4
/sbin/iptables -I PREROUTING -t mangle -p all  -d 192.168.1.10 -m helper --helper ftp -j MARK --set-mark 5
 
###### iptables mark rule list ######
Chain PREROUTING (policy ACCEPT 9102 packets, 259K bytes)
 pkts bytes target     prot opt in     out     source               destination
10117   15M MARK       all  --  *      *       0.0.0.0/0            192.168.1.10       helper match "ftp" MARK set 0x5
 7172  392K MARK       all  --  *      *       192.168.1.10        0.0.0.0/0           helper match "ftp" MARK set 0x4
26520   40M MARK       tcp  --  *      *       0.0.0.0/0            192.168.1.10       mport ports 80 MARK set 0x3
18545  796K MARK       tcp  --  *      *       192.168.1.10        0.0.0.0/0           mport ports 80 MARK set 0x2
 
###### /sbin/tc -s -d qdisc show dev eth0 ######
class htb 10:ffff parent 10:1 leaf ffff: prio 3 rate 12Kbit ceil 64Kbit burst 1614b/8 mpu 0b cburst 1680b/8 mpu 0b quantum 153 level 0
 Sent 7372729 bytes 61380 pkts (dropped 158729, overlimits 58778)
 rate 5bps
 lended: 12217 borrowed: 49163 giants: 0 injects: 0
 tokens: 831467 ctokens: 162500
 
class htb 10:1 root prio 0 rate 64Kbit ceil 64Kbit burst 1680b/8 mpu 0b cburst 1680b/8 mpu 0b quantum 819 level 3
 Sent 9345277 bytes 78138 pkts (dropped 0, overlimits 0)
 rate 1603bps 25pps
 lended: 49163 borrowed: 0 giants: 0 injects: 0
 tokens: 163300 ctokens: 163300
 
class htb 10:2 parent 10:1 leaf 22: prio 1 rate 36Kbit ceil 64Kbit burst 1645b/8 mpu 0b cburst 1680b/8 mpu 0b quantum 460 level 0
 Sent 403214 bytes 7034 pkts (dropped 0, overlimits 0)
 rate 736bps 13pps
 lended: 7034 borrowed: 0 giants: 0 injects: 0
 tokens: 284089
 
##### /sbin/tc -s -d qdisc show dev eth1 ######
class htb 10:ffff parent 10:1 leaf ffff: prio 3 rate 64Kbit ceil 512Kbit burst 1680b/8 mpu 0b cburst 2Kb/8 mpu 0b quantum 819 level 0
 Sent 58166130 bytes 518222 pkts (dropped 1713, overlimits 482227)
 lended: 72484 borrowed: 445738 giants: 0 injects: 0
 tokens: 162500 ctokens: 27488
 
class htb 10:1 root prio 0 rate 512Kbit ceil 512Kbit burst 2Kb/8 mpu 0b cburst 2Kb/8 mpu 0b quantum 6553 level 3
 Sent 98025731 bytes 544613 pkts (dropped 0, overlimits 0)
 rate 55148bps 36pps
 lended: 458124 borrowed: 0 giants: 0 injects: 0
 tokens: 6773 ctokens: 6773
 
class htb 10:3 parent 10:1 leaf 23: prio 1 rate 384Kbit ceil 512Kbit burst 2Kb/8 mpu 0b cburst 2Kb/8 mpu 0b quantum 4915 level 0
 Sent 16020166 bytes 10591 pkts (dropped 0, overlimits 8155)
 rate 266Kbit 22pps
 lended: 10323 borrowed: 268 giants: 0 injects: 0
 tokens: 212 ctokens: 6773
 
class htb 10:5 parent 10:1 leaf 25: prio 2 rate 64Kbit ceil 512Kbit burst 1680b/8 mpu 0b cburst 2Kb/8 mpu 0b quantum 819 level 0
 Sent 23876440 bytes 15800 pkts (dropped 0, overlimits 1)
 rate 167Kbit 14pps
 lended: 3682 borrowed: 12118 giants: 0 injects: 0
 tokens: -140306 ctokens: 6773
 
##### /sbin/tc -s -d qdisc show dev eth1 ###### Again ######
class htb 10:ffff parent 10:1 leaf ffff: prio 3 rate 64Kbit ceil 512Kbit burst 1680b/8 mpu 0b cburst 2Kb/8 mpu 0b quantum 819 level 0
 Sent 58166256 bytes 518225 pkts (dropped 1713, overlimits 482227)
 lended: 72487 borrowed: 445738 giants: 0 injects: 0
 tokens: 164100 ctokens: 27688
 
class htb 10:1 root prio 0 rate 512Kbit ceil 512Kbit burst 2Kb/8 mpu 0b cburst 2Kb/8 mpu 0b quantum 6553 level 3
 Sent 118164481 bytes 557926 pkts (dropped 0, overlimits 0)
 rate 430Kbit 36pps
 lended: 461746 borrowed: 0 giants: 0 injects: 0
 tokens: 6773 ctokens: 6773
 
class htb 10:3 parent 10:1 leaf 23: prio 1 rate 384Kbit ceil 512Kbit burst 2Kb/8 mpu 0b cburst 2Kb/8 mpu 0b quantum 4915 level 0
 Sent 28120752 bytes 18590 pkts (dropped 0, overlimits 8155)
 rate 28117bps 18pps
 lended: 18183 borrowed: 407 giants: 0 injects: 0
 tokens: 212 ctokens: 6773
 
class htb 10:5 parent 10:1 leaf 25: prio 2 rate 64Kbit ceil 512Kbit burst 1680b/8 mpu 0b cburst 2Kb/8 mpu 0b quantum 819 level 0
 Sent 31914478 bytes 21111 pkts (dropped 0, overlimits 1)
 rate 26828bps 17pps
 lended: 5510 borrowed: 15601 giants: 0 injects: 0
 tokens: -115091 ctokens: 9288
 
Regards,
Matt.

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