PRIO qdisc with HTB

Linux Advanced Routing and Traffic Control

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

 



Hi,

I'm trying to use prio qdisc with htb, however not the "usual" way (like for 
example FairNAT).
Here is my idea:
Root has HTB shaping traffic to link speed -> then goes PRIO queues -> each 
prio queue has HTB with sublasses for each user, should look like this:
                      1: htb qdisc
                      | 
                     1:1 htb class
                     /|\
                    / | \
                10:1 10:2 10:3 prio queues
                 |    |     |
                20:  30:   40: htb qdiscs
               /      |      \
          20:1....   30:1...  40:1... htb classes
                   
Then, if I'm right, when there is traffic in prio qdisc 1 to fully load link, 
users would get it distributed evenly but any low priority connections in 
qdiscs 2,3... would starve. Which is exactly what I want.

Problem is, when I add filters to enqueue in HTB "below" prio qdisc, they 
aren't working.

I'm tried to make simplified version first:
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 3000kbit
tc qdisc add dev eth0 parent 1:1 handle 10: prio
tc qdisc add dev eth0 parent 10:1 handle 20: htb
tc class add dev eth0 parent 20:0 classid 20:1 htb rate 3000kbit
tc qdisc add dev eth0 parent 10:2 handle 30: htb
tc qdisc add dev eth0 parent 10:3 handle 40: htb
tc class add dev eth0 parent 30:0 classid 30:1 htb rate 3000kbit
tc class add dev eth0 parent 40:0 classid 40:1 htb rate 3000kbit
tc filter add dev eth0 protocol ip parent 1: prio 0 handle 4 fw flowid 40:1

all packets are marked with 4, but none gets to 40:1
---------------------------------------------------------------
class htb 40:1 root prio 0 rate 3000Kbit ceil 3000Kbit burst 5439b cburst 
5439b
 Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
 lended: 0 borrowed: 0 giants: 0
 tokens: 14505 ctokens: 14505
class htb 30:1 root prio 0 rate 3000Kbit ceil 3000Kbit burst 5439b cburst 
5439b
 Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
 lended: 0 borrowed: 0 giants: 0
 tokens: 14505 ctokens: 14505
class htb 20:1 root prio 0 rate 3000Kbit ceil 3000Kbit burst 5439b cburst 
5439b
 Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
 lended: 0 borrowed: 0 giants: 0
 tokens: 14505 ctokens: 14505
class prio 10:1 parent 10: leaf 20: [UNKNOWN]
class prio 10:2 parent 10: leaf 30: [UNKNOWN]
class prio 10:3 parent 10: leaf 40: [UNKNOWN]
class htb 1:1 root leaf 10: prio 0 rate 3000Kbit ceil 3000Kbit burst 5439b 
cburst 5439b
 Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
 lended: 0 borrowed: 0 giants: 0
 tokens: 14505 ctokens: 14505
---------------------------------------------------------------
qdisc htb 40: r2q 10 default 0 direct_packets_stat 0
 Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
qdisc htb 30: r2q 10 default 0 direct_packets_stat 0
 Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
qdisc htb 20: r2q 10 default 0 direct_packets_stat 0
 Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
qdisc prio 10: bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
 Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
qdisc htb 1: r2q 10 default 0 direct_packets_stat 7347
 Sent 827649 bytes 7347 pkts (dropped 0, overlimits 0)
---------------------------------------------------------------
{setting flowid to 1:1 works as expected}

I can't find where my mistake lies,
any suggestions or pointers would be helpfull.

_______________________________________________
LARTC mailing list / LARTC@xxxxxxxxxxxxxxx
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/

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