[LARTC] HTB and diff.serv

Linux Advanced Routing and Traffic Control

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

 



Hi all.

As part of a project on the Norweigan University of Science and
Technology, I am trying to implement diffserv on a linux router. I have
started using HTB as part of this, since I have read the documentation on
it and find it easier to use than CBQ.

But I ran into problems when I tried to implement the AF classes. To do
this, I map each AF class to one HTB class. Now I need to attach a GRED
queue to each of the HTB classes to implement the drop preferences. But
GRED needs the skb->tcindex field from the dsmark qdisc to select the
correct virtual queue. So I configured dsmark as the root qdisc, and HTB inside this. But now I can't
use filters inside the HTB qdisc, because it is an internal qdisc.

Is it anyway around this, or do I have to go back to using CBQ? I'd rather not,
because it has given me some weird results earlier, and HTB works like a
charm!

My setup is something like this (_very_ incomplete code):
tc qdisc add dev eth0 root handle 1: dsmark
tc qdisc add dev eth0 parent 1:0 handle 2:0 htb
tc class add dev eth0 parent 2:0 classid 2:1 htb

tc class add dev eth0 parent 2:1 classid 2:10 htb
tc class add dev eth0 parent 2:1 classid 2:20 htb
tc class add dev eth0 parent 2:1 classid 2:30 htb
tc class add dev eth0 parent 2:1 classid 2:40 htb

2 of these classes are for EF and BE. That is not a problem. The other 2
are for AF1x and AF2x. Now I need the GRED queue:

tc qdisc add dev eth0 parent 2:20 handle 3:0
tc qdisc add dev eth0 parent 2:30 handle 4:0

The problem with this setup is as mentioned, to be able to filter the
packets into the right htb class. I'm hoping anyone can help me with this.

Øystein Løkås.





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