TC/CBQ shaping problems

Linux Advanced Routing and Traffic Control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello everyone,

I'm a newbie experimenting with CBQ shaping and am facing a few problems.
Can any of you please help?

TEST SETUP:

+---------------+            +----------------+
| 10.0.0.103 |----------->| 10.0.0.102 |
+---------------+            +----------------+

10.0.0.103: Linux, 100Mbit/s NIC
10.0.0.102: Windows, 100Mbit/s NIC, iperf tcp server (ports 2000 and 2001)

WHAT I WANT TO DO:

1. Traffic from 10.0.0.103 to 10.0.0.102 port 2000 should always receive
at least 60Mbit/s regardless of presence of other traffic.
2. In the absence of traffic to 10.0.0.102 port 2000, all other traffic
should use all available bandwidth

CBQ SETUP 1:

#!/bin/bash
# rate1 = 60Mbit/s
RATE1=614400000
PRIO="prio 1"

DEV="dev eth0"
OPTION="allot 1514 maxburst 20 avpkt 1000"

# reset qdiscs
tc qdisc del $DEV root

# root CBQ
tc qdisc add $DEV root handle 10: cbq bandwidth 100mbit avpkt 1000
# 60 Mbit/s class
tc class add $DEV parent 10:0 classid 10:1 cbq bandwidth 100mbit rate
$RATE1 $OPTION $PRIO borrow

# add filter
tc filter add $DEV parent 10:0 protocol ip prio 3 handle 1 fw flowid 10:1

# mark packets
iptables -A OUTPUT -t mangle -p tcp --dport 2000 -d 10.0.0.102 -j MARK
--set-mark 1

OBSERVED RESULTS FOR SETUP 1:

1. A single iperf session to 10.0.0.102 port 2000 for 40 seconds reports
93.1 Mbit/s
2. Two simultaneous iperf sessions to 10.0.0.102 on ports 2000 and 2001
for 40 seconds each report 48.4 Mbit/s and 44.3 Mbit/s respectively
3. "tc -s -d class show dev eth0" shows the 10:1 class processing packets
and I assume port 2001 traffic uses the root qdisc. Is this assumption right?

CBQ SETUP 2:

I added a CBQ class 10:2 with a rate of 10240000, prio 3, borrow
parameter, a filter to direct port 2001 traffic to 10:2 and iptables
rules to assign fwmark.

OBSERVED RESULTS FOR SETUP 2:

Almost the same as above results with traffic being directed to
appropriate classes.

QUESTIONS:
1. What am I doing wrong? Why doesn't port 2000 traffic always receive
at least 60 Mbit/s?
2. prio 1 offers higher priority than prio 3, right? Lower the number,
higher the priority?
3. bandwidth parameter: I've seen examples where people always use the
NIC bandwidth (100 Mbit/s) and some examples where people use the link
bandwidth (say 6 Mbit/s for a DSL link). Which is right?
4. is it recommended that I have a class below the root CBQ and all
other classes as sub classes of that class?

Thanks!
Muthu
_______________________________________________
LARTC mailing list
LARTC@xxxxxxxxxxxxxxx
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc


[Index of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux