Hi
everyone,
I am trying to set-up a scenario wherein a given traffic flow gets
certain QoS to begin with, and then is moved to another QoS class. Using Linux
RH7.0 kernel 2.2.16. I tried doing this using the "tc filter change" and "tc
filter replace" commands, but both don't seem to work. An example scenario
is as follows:
***** Initial set-up
****
tc qdisc add dev
eth0 handle 1:0 root htb default 1 r2q 1
tc class add dev eth0 parent 1:0 classid 1:1 htb rate \
64kbit ceil 64kbit burst 2k
tc qdisc add dev eth0 parent 1:1 handle 2:0 dsmark indices 64
tc class change dev eth0 classid 2:1 dsmark mask 0x3 value 0x68
tc class add dev eth0 parent 1:0 classid 1:1 htb rate \
64kbit ceil 64kbit burst 2k
tc qdisc add dev eth0 parent 1:1 handle 2:0 dsmark indices 64
tc class change dev eth0 classid 2:1 dsmark mask 0x3 value 0x68
tc class change dev
eth0 classid 2:2 dsmark mask 0x3 value 0x48
tc filter add dev
eth0 parent 2:0 protocol ip prio 1 handle 1: \
u32 divisor 1
u32 divisor 1
tc filter add dev
eth0 parent 2:0 prio 1 u32 \
match ip src 10.0.41.2
match ip protocol 17 0xff
match ip dport 5000 0xffff
flowid 2:1
match ip src 10.0.41.2
match ip protocol 17 0xff
match ip dport 5000 0xffff
flowid 2:1
As shown above,
initially the flow is marked with DSCP value 0x68 (confirmed using ethereal).
Later, I need to move this flow to class 2:2, so that it gets marked with value
0x48. Using, "tc filter replace" to now classify the flow as 2:2 doesn't work,
as the packets are still marked as 0x68. Doing "tc filter show dev eth0" returns
nothing! I am not sure what I am doing wrong. Any help in this matter is
appreciated.
Thanking in
advance.
regards
Kaustubh