Referring to Differentiated Services on Linux <draft-almesberger-wajhak-diffserv-linux-01.txt>
I read the
examples there; they seem to be very helpful. Especially the last two ones of
thee EF
But in my case
I am working on an exterior node (packets are not marked
yet)
Here is a
brief description of my problem.
1.
tc qdisc add
dev eth0 handle 1:0 root dsmark indices 64
set_tc_index
2.
tc class
change dev eth0 parent 1:0 classid 1:1 dsmark mask 0x3 value
0xb8
3.
tc class
change dev eth0 parent 1:0 classid 1:2 dsmark mask 0x3 value
0x28
4.
tc class
change dev eth0 parent 1:0 classid 1:3 dsmark mask 0x3 value
0x30
5.
tc class
change dev eth0 parent 1:0 classid 1:4 dsmark mask 0x3 value
0x38
6.
tc class
change dev eth0 parent 1:0 classid 1:5 dsmark mask 0x3 value
0x48
7.
tc class
change dev eth0 parent 1:0 classid 1:6 dsmark mask 0x3 value
0x50
8.
tc class
change dev eth0 parent 1:0 classid 1:7 dsmark mask 0x3 value
0x58
9.
tc class
change dev eth0 parent 1:0 classid 1:8 dsmark mask 0x3 value
0x60
10.
tc class
change dev eth0 parent 1:0 classid 1:9 dsmark mask 0x3 value
0x70
11.
tc class
change dev eth0 parent 1:0 classid 1:a dsmark mask 0x3 value
0x78
12.
tc class
change dev eth0 parent 1:0 classid 1:b dsmark mask 0x3 value
0x88
13.
tc class
change dev eth0 parent 1:0 classid 1:c dsmark mask 0x3 value
0x90
14.
tc class
change dev eth0 parent 1:0 classid 1:d dsmark mask 0x3 value
0x98
15.
tc qdisc add
dev eth0 handle 2:0 parent 1:0 cbq bandwidth 10Mbit cell 8 avpkt 1000 mpu
64
16.
tc class add
dev eth0 classid 2:1 parent 2:0 cbq bandwidth 10Mbit rate 50Kbit avpkt 1000 prio
1 bounded allot 1514 weight 1 maxburst 21
17.
tc class add
dev eth0 classid 2:2 parent 2:0 cbq bandwidth 10Mbit rate 50Kbit avpkt 1000 prio
2 bounded allot 1514 weight 1 maxburst 21
18.
tc class add
dev eth0 classid 2:3 parent 2:0 cbq bandwidth 10Mbit rate 50Kbit avpkt 1000 prio
3 bounded allot 1514 weight 1 maxburst 21
19.
tc class add
dev eth0 classid 2:4 parent 2:0 cbq bandwidth 10Mbit rate 50Kbit avpkt 1000 prio
4 bounded allot 1514 weight 1 maxburst 21
20.
tc class add
dev eth0 classid 2:5 parent 2:0 cbq bandwidth 10Mbit rate 50Kbit avpkt 1000 prio
5 bounded allot 1514 weight 1 maxburst 21
21.
tc class add
dev eth0 classid 2:6 parent 2:0 cbq bandwidth 10Mbit rate 50Kbit avpkt 1000 prio
6 bounded allot 1514 weight 1 maxburst 21
22.
tc class add
dev eth0 classid 2:7 parent 2:0 cbq bandwidth 10Mbit rate 50Kbit avpkt 1000 prio
7 bounded allot 1514 weight 1 maxburst 21
23.
tc class add
dev eth0 classid 2:8 parent 2:0 cbq bandwidth 10Mbit rate 50Kbit avpkt 1000 prio
8 bounded allot 1514 weight 1 maxburst 21
24.
tc class add
dev eth0 classid 2:9 parent 2:0 cbq bandwidth 10Mbit rate 50Kbit avpkt 1000 prio
9 bounded allot 1514 weight 1 maxburst 21
25.
tc class add
dev eth0 classid 2:a parent 2:0 cbq bandwidth 10Mbit rate 50Kbit avpkt 1000 prio
10 bounded allot 1514 weight 1 maxburst 21
26.
tc class add
dev eth0 classid 2:b parent 2:0 cbq bandwidth 10Mbit rate 50Kbit avpkt 1000 prio
11 bounded allot 1514 weight 1 maxburst 21
27.
tc class add
dev eth0 classid 2:c parent 2:0 cbq bandwidth 10Mbit rate 50Kbit avpkt 1000 prio
12 bounded allot 1514 weight 1 maxburst 21
28.
tc class add
dev eth0 classid 2:d parent 2:0 cbq bandwidth 10Mbit rate 50Kbit avpkt 1000 prio
13 bounded allot 1514 weight 1 maxburst 21
29.
etc.
So here in
lines 1, 2, till 14 I made a rood qdisc “DSMARK” and put in it two “DSMARK”
classes for marking 0xb8, and 0x28, etc
In lines 15,
16, till 28 I added a “CBQ”
Now I have no
problem in making filters to classify the incoming traffic according to their IP
header (u32, etc) and to point them to the “DSMARK” classes 1:1, and
1:2.
But I need to
reclassify the packets within the “CBQ” again, according to the mark they had
had.
The problem
here that I tried to use a “TCINDEX” filter
E.g. tc filter
add dev eth0 parent 2:0 protocol ip prio 1 tcindex handle 1 tcindex classid
2:1
This filter is
supposed to point the traffic with the mark 0xb8 to classid
2:1
But when I
added the rest of the filters to point to the classes 2:2, 2:3, 2:d .. only some
of the filters worked well and the rest didn’t
Also in that
“TCINDEX” filter, what value does that handle take? Is it in hex or decimal or
is it just the marking classid or what?
BEST REGARDS