Strange traffic control behaviour?

From: Lorenzo Allegrucci
Date: Fri Feb 06 2009 - 03:45:39 EST


Hi, I noticed a strange behaviour on a small sample network I used to test my
traffic control setup.
Below is the network setup (sorry for my ascii art..):

end user1|------------|router1|------------|router2|------------|end user2|
eth0 eth1 eth0 eth0 eth1 eth0

(Static routes on router1 and router2).

Test1:

I applied the following tc rules on eth1 of router1 to limit the bandwidth
to 3Mbit for a download flux (by wget or scp) from "end user2" to "end user1":

tc qdisc add dev eth1 root handle 1:0 htb default 100
tc class add dev eth1 parent 1:0 classid 1:1 htb rate 3Mbit ceil 3Mbit
tc class add dev eth1 parent 1:1 classid 1:100 htb rate 2Mbit ceil 3Mbit
tc class add dev eth1 parent 1:1 classid 1:200 htb rate 1Mbit ceil 3Mbit

Theoretically "end user1" should get about 375kbyte/s (3Mbit), but instead
I get bit less, about 330 kbye/s and the flux tends to fluctuate a bit.
(all other interfaces are "clean", no tc rules).

Test2:

However, if I apply the same tc rules to the router2's eth0 instead, I get
a *stable* flux of *exactly* 3Mbit (375kbyte/s), to be more precise what
I should have gotten on test1!

How can this be explained?

In general, noticed that tc applied "upstream" gives better results than
tc applied downstream. In other words, it's better to limit network
traffic near the source, can you confirm?

Thanks.

--
Lorenzo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/