[LARTC] TC/CBQ shaping problems
Denis Ovsienko
linux at pilot.org.ua
Fri Jan 6 02:38:49 CET 2006
> It doesn't seem to help. I still see bandwidth being shared equally
> between classes. Both iperf sessions report approximately 46 to 47
> Mbits/sec. Do you think what I am trying to achieve is possible with
> CBQ?
Okay...
I have spent some time trying different CBQ trees until I found that I
can't divide 100mbits with precision better than 10 mbit. I managed to
do it before though, but with different proportions... Most surprisingly
precision goes worse when avpkt goes closer to 1500 (iperf sends quite
big packets).
I tried HTB and found that it doesn't divide 100mbit well, but if we try
to limit outgoing interface by 50 mbit and divide it, it works just
fine (see below). I guess that CBQ would do it too, if we don't try to
control 100% of interface bandwidth and set all qdisc/class attributes
precisely.
--------------------------------------------------------------------------
tc qdisc add dev home root handle 10: htb default 3
tc class add dev home parent 10: classid 10:1 htb rate 50mbit
tc class add dev home parent 10:1 classid 10:2 htb rate 40mbit ceil 50mbit
tc class add dev home parent 10:1 classid 10:3 htb rate 10mbit ceil 50mbit
tc filter add dev home parent 10: prio 1 protocol ip u32 match ip dst 10.0.0.102 match ip dport 2000 0xffff flowid 10:2
Now we have iperf server at 10.0.0.102, ports 2000 and 2001.
1. port 2000 traffic only
$ iperf --client 10.0.0.102 --port 2000 --format k --time 10 --interval 1
------------------------------------------------------------
Client connecting to 10.0.0.102, TCP port 2000
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 5] local 10.0.0.103 port 44056 connected with 10.0.0.102 port 2000
[ ID] Interval Transfer Bandwidth
[ 5] 0.0- 1.0 sec 6376 KBytes 52232 Kbits/sec
[ 5] 1.0- 2.0 sec 6120 KBytes 50135 Kbits/sec
[ 5] 2.0- 3.0 sec 6184 KBytes 50659 Kbits/sec
[ 5] 3.0- 4.0 sec 6224 KBytes 50987 Kbits/sec
[ 5] 4.0- 5.0 sec 6168 KBytes 50528 Kbits/sec
[ 5] 5.0- 6.0 sec 6192 KBytes 50725 Kbits/sec
[ 5] 6.0- 7.0 sec 6208 KBytes 50856 Kbits/sec
[ 5] 7.0- 8.0 sec 6216 KBytes 50921 Kbits/sec
[ 5] 8.0- 9.0 sec 6208 KBytes 50856 Kbits/sec
[ 5] 9.0-10.0 sec 6200 KBytes 50790 Kbits/sec
[ 5] 0.0-10.0 sec 62104 KBytes 50780 Kbits/sec
2. port 2001 traffic only
iperf --client 10.0.0.102 --port 2001 --format k --time 10 --interval 1
------------------------------------------------------------
Client connecting to 10.0.0.102, TCP port 2001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 5] local 10.0.0.103 port 48914 connected with 10.0.0.102 port 2001
[ ID] Interval Transfer Bandwidth
[ 5] 0.0- 1.0 sec 6280 KBytes 51446 Kbits/sec
[ 5] 1.0- 2.0 sec 6176 KBytes 50594 Kbits/sec
[ 5] 2.0- 3.0 sec 6208 KBytes 50856 Kbits/sec
[ 5] 3.0- 4.0 sec 6192 KBytes 50725 Kbits/sec
[ 5] 4.0- 5.0 sec 6224 KBytes 50987 Kbits/sec
[ 5] 5.0- 6.0 sec 6216 KBytes 50921 Kbits/sec
[ 5] 6.0- 7.0 sec 6192 KBytes 50725 Kbits/sec
[ 5] 7.0- 8.0 sec 6192 KBytes 50725 Kbits/sec
[ 5] 8.0- 9.0 sec 6200 KBytes 50790 Kbits/sec
[ 5] 9.0-10.0 sec 6208 KBytes 50856 Kbits/sec
[ 5] 0.0-10.0 sec 62096 KBytes 50787 Kbits/sec
3. port 2001 traffic is sent alone, then mixed with port 2000 traffic,
then is sent alone again.
3.1 xterm 1:
$ date; iperf --client 10.0.0.102 --port 2001 --format k --time 20 --interval 1
Птн Янв 6 04:31:54 MSK 2006
------------------------------------------------------------
Client connecting to 10.0.0.102, TCP port 2001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 5] local 10.0.0.103 port 53131 connected with 10.0.0.102 port 2001
[ ID] Interval Transfer Bandwidth
[ 5] 0.0- 1.0 sec 6336 KBytes 51905 Kbits/sec
[ 5] 1.0- 2.0 sec 6184 KBytes 50659 Kbits/sec
[ 5] 2.0- 3.0 sec 6208 KBytes 50856 Kbits/sec
[ 5] 3.0- 4.0 sec 6200 KBytes 50790 Kbits/sec
[ 5] 4.0- 5.0 sec 6192 KBytes 50725 Kbits/sec
[ 5] 5.0- 6.0 sec 6208 KBytes 50856 Kbits/sec
[ 5] 6.0- 7.0 sec 6200 KBytes 50790 Kbits/sec
[ 5] 7.0- 8.0 sec 3360 KBytes 27525 Kbits/sec
[ 5] 8.0- 9.0 sec 1216 KBytes 9961 Kbits/sec
[ 5] 9.0-10.0 sec 1232 KBytes 10093 Kbits/sec
[ 5] 10.0-11.0 sec 1248 KBytes 10224 Kbits/sec
[ 5] 11.0-12.0 sec 1312 KBytes 10748 Kbits/sec
[ 5] 12.0-13.0 sec 1224 KBytes 10027 Kbits/sec
[ 5] 13.0-14.0 sec 1208 KBytes 9896 Kbits/sec
[ 5] 14.0-15.0 sec 4088 KBytes 33489 Kbits/sec
[ 5] 15.0-16.0 sec 6208 KBytes 50856 Kbits/sec
[ 5] 16.0-17.0 sec 6184 KBytes 50659 Kbits/sec
[ 5] 17.0-18.0 sec 6216 KBytes 50921 Kbits/sec
[ 5] 18.0-19.0 sec 6224 KBytes 50987 Kbits/sec
[ 5] 19.0-20.0 sec 6200 KBytes 50790 Kbits/sec
[ ID] Interval Transfer Bandwidth
[ 5] 0.0-20.0 sec 89456 KBytes 36613 Kbits/sec
3.2 xterm 2:
$ date; iperf --client 10.0.0.102 --port 2000 --format k --time 7 --interval 1
Птн Янв 6 04:32:02 MSK 2006
------------------------------------------------------------
Client connecting to 10.0.0.102, TCP port 2000
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 5] local 10.0.0.103 port 41592 connected with 10.0.0.102 port 2000
[ ID] Interval Transfer Bandwidth
[ 5] 0.0- 1.0 sec 4928 KBytes 40370 Kbits/sec
[ 5] 1.0- 2.0 sec 5008 KBytes 41026 Kbits/sec
[ 5] 2.0- 3.0 sec 4960 KBytes 40632 Kbits/sec
[ 5] 3.0- 4.0 sec 4960 KBytes 40632 Kbits/sec
[ 5] 4.0- 5.0 sec 4944 KBytes 40501 Kbits/sec
[ 5] 5.0- 6.0 sec 4968 KBytes 40698 Kbits/sec
[ 5] 6.0- 7.0 sec 4960 KBytes 40632 Kbits/sec
[ 5] 0.0- 7.0 sec 34736 KBytes 40547 Kbits/sec
--
DO4-UANIC
More information about the LARTC
mailing list