Vasudevan, Swaminathan (PNB Roseville)
2005-Oct-28 18:02 UTC
Issues in setting up different priorities for the MAC match filter
Hi,
I am currently using TC for setting up user MAC based filters,and I am
seeing a problem when I try to assign different priorities to the MAC
Match filter apart from the root qdisc and parent class.
Here is my script.
/*****************************************************/
First of all I create the qdisc and class based on priority 2 and also
the Hash mask
tc qdisc add dev eth1 root handle 1:0 htb r2q 1
tc class add dev eth1 parent 1:0 classid 1:fffe htb rate 100mbit
tc filter add dev eth1 parent 1:0 prio 2 protocol ip u32
tc filter add dev eth1 parent 1:0 prio 2 handle ffe:0 protocol ip u32
divisor 256
tc filter add dev eth1 parent 1:0 prio 2 protocol ip u32 ht 800:: match
u32 \
0x00000800 0x0000FFFF at -4 hashkey mask 0x00ff0000 at -8 link
ffe:
Then I am trying to create a MAC match filter for each user with a
different priority.
User 1:
tc class add dev eth1 parent 1:fffe classid 1:140 htb rate 100mbit
tc qdisc add dev eth1 parent 1:140 handle 140:0 htb r2q 1
tc class add dev eth1 parent 140:0 classid 140:1 htb rate 100mbit
tc class add dev eth1 parent 140:0 classid 140:2 htb rate 100mbit
tc qdisc add dev eth1 parent 140:2 tbf rate 1bps burst 1 latency 50ms
tc filter add dev eth1 parent 1:0 prio 3 protocol ip u32 ht ffe:40 match
u32 \
0x000bcd59 0xffffffff at -12 match u16 0x1240 0xffff at -8 flowid
1:140
User 2:
tc class add dev eth1 parent 1:fffe classid 1:13E htb rate 100mbit
tc qdisc add dev eth1 parent 1:13E handle 13E:0 htb r2q 1
tc class add dev eth1 parent 13E:0 classid 13E:1 htb rate 100mbit
tc class add dev eth1 parent 13E:0 classid 13E:2 htb rate 100mbit
tc qdisc add dev eth1 parent 13E:2 tbf rate 1bps burst 1 latency 50ms
tc filter add dev eth1 parent 1:0 prio 4 protocol ip u32 ht ffe:3E match
u32 \
0x000bcd59 0xffffffff at -12 match u16 0x123E 0xffff at -8 flowid
1:13E
/* test ends here */
Output from tc:
~ # tc qdisc show dev eth1
qdisc htb 1: r2q 1 default 0 direct_packets_stat 193
qdisc htb 140: parent 1:140 r2q 1 default 0 direct_packets_stat 0
qdisc tbf 8001: parent 140:2 rate 8bit burst 0b lat 1us
qdisc htb 13e: parent 1:13e r2q 1 default 0 direct_packets_stat 0
qdisc tbf 8002: parent 13e:2 rate 8bit burst 0b lat 1us
The output from the tc when I type "tc filter show dev eth1" is as
shown
below:
~ # tc filter show dev eth1
filter parent 1: protocol ip pref 2 u32
filter parent 1: protocol ip pref 2 u32 fh ffe: ht divisor 256
filter parent 1: protocol ip pref 2 u32 fh ffe:3e:800 order 2048 key ht
ffe bkt 3e flowid 1:13e
match 000bcd59/ffffffff at -12
match 123e0000/ffff0000 at -8
filter parent 1: protocol ip pref 2 u32 fh ffe:40:800 order 2048 key ht
ffe bkt 40 flowid 1:140
match 000bcd59/ffffffff at -12
match 12400000/ffff0000 at -8
filter parent 1: protocol ip pref 2 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 2 u32 fh 800::800 order 2048 key ht
800 bkt 0 link ffe:
match 00000800/0000ffff at -4
hash mask 00ff0000 at -8
filter parent 1: protocol ip pref 3 u32
filter parent 1: protocol ip pref 3 u32 fh 801: ht divisor 1
filter parent 1: protocol ip pref 4 u32
filter parent 1: protocol ip pref 4 u32 fh 802: ht divisor 1
Note: Here the priority given to the MAC match filters are not assigned
properly.
I am currently using Linux kernel 2.4.30.
Could anyone of you help me out on this.
Thanks
Swami
