Linux Advanced Routing and Traffic Control list
 help / color / mirror / Atom feed
From: Patrick Nagelschmidt <dto@gmx.net>
To: lartc@vger.kernel.org
Subject: [LARTC] CBQ only works 'bounded'
Date: Fri, 07 Dec 2001 01:29:59 +0000	[thread overview]
Message-ID: <marc-lartc-100768870231848@msgid-missing> (raw)


what i try to achieve with QoS is to divide my outgoing traffic in one high priority class and one low priority class. i have an asymetric connection with 768 kbit/s downstream and 128 kbit/s upstream and want to avoid ack-congestions by sending ack packets through the high priority class and normal outbound traffic through the low priority class. what i've done so far is the following:

#create the root class
tc qdisc add dev ppp0 root handle 1: cbq bandwidth 10Mbit avpkt 1000 mpu 64

#limit outbound traffic to 128kbit/s total
tc class add dev ppp0 parent 1: classid 1:1 cbq bandwidth 10Mbit rate 128kbit allot 1514 weight 12.8kbit prio 8 maxburst 20 avpkt 1000 bounded

#create a high priority class
tc class add dev ppp0 parent 1:1 classid 1:10 cbq bandwidth 10Mbit rate 20kbit allot 1514 weight 2.0kbit prio 1 maxburst 20 avpkt 1000

#create a low priority class
tc class add dev ppp0 parent 1:1 classid 1:20 cbq bandwidth 10Mbit rate 108kbit allot 1514 weight 10.8kbit prio 7 maxburst 20 avpkt 1000 bounded

#use sfq for both
tc qdisc add dev ppp0 parent 1:10 sfq quantum 1514b perturb 10
tc qdisc add dev ppp0 parent 1:20 sfq quantum 1514b perturb 10

#put everything in the low priority class
tc filter add dev ppp0 parent 1: protocol ip prio 20 u32 \
match u8 0x00 0x00 \
flowid 1:20

#except ack-packets (header length 0x05, total l. 0x34, ack set)
tc filter add dev ppp0 parent 1: protocol ip prio 10 u32 \
match ip protocol 6 0xff \
match u8 0x05 0x0f at 0 \
match u8 0x34 0xff at 3 \
match u8 0x10 0xff at 33 \
flowid 1:10

the good thing is that this works. of course this doesn't mean its error-free, so please tell me if i've done something terribly wrong.

if i use this configurtion and upload with ~14.5kb/s (ack's not included) i can still download with ~84kb/s. but what i dont understand is that the whole thing stops working if i remove the 'bounded' from classid 1:20. i thought this would release the bandwidth of 1:10 to 1:20 _only_ if 1:10 doesn't need it. i set the prio of 1:10 to the highest value to ensure that if any ack-packets should be sent via 1:10 these packets get send first. but my download speed decreases to ~20kb/s if i upload at the same time. i think this indicates that ack packets have to wait behind some bigger data packets until they get sent. in numbers, i have with 1:20 set to 'bounded':

class cbq 1: root rate 10Mbit (bounded,isolated) prio no-transmit
 Sent 461859 bytes 1189 pkts (dropped 0, overlimits 0)
  borrowed 0 overactions 0 avgidle 605 undertime 0
class cbq 1:10 parent 1:1 leaf 8146: rate 20Kbit prio 1
 Sent 33372 bytes 828 pkts (dropped 0, overlimits 0)
  borrowed 0 overactions 0 avgidle 1.57292e+06 undertime 0
class cbq 1:1 parent 1: rate 128Kbit (bounded) prio no-transmit
 Sent 461859 bytes 1189 pkts (dropped 0, overlimits 0)
  borrowed 0 overactions 0 avgidle 41470 undertime 0
class cbq 1:20 parent 1:1 leaf 8147: rate 108Kbit (bounded) prio 7
 Sent 428487 bytes 361 pkts (dropped 0, overlimits 1860)
 backlog 15p
  borrowed 0 overactions 197 avgidle -82792 undertime 84903

and without 'bounded'

class cbq 1: root rate 10Mbit (bounded,isolated) prio no-transmit
 Sent 1283284 bytes 1397 pkts (dropped 0, overlimits 0)
  borrowed 0 overactions 0 avgidle 624 undertime 0
class cbq 1:10 parent 1:1 leaf 8148: rate 20Kbit prio 1
 Sent 18244 bytes 454 pkts (dropped 0, overlimits 0)
  borrowed 0 overactions 0 avgidle 2.66114e+06 undertime 0
class cbq 1:1 parent 1: rate 128Kbit (bounded) prio no-transmit
 Sent 1283284 bytes 1397 pkts (dropped 0, overlimits 0)
  borrowed 844 overactions 0 avgidle 219417 undertime 0
class cbq 1:20 parent 1:1 leaf 8149: rate 108Kbit prio 7
 Sent 1265040 bytes 943 pkts (dropped 0, overlimits 2564)
  borrowed 844 overactions 7 avgidle -186045 undertime 265135

now i'm curious what i have to do to make 1:10 share it's bandwidth in a way it doesn't ruin the whole mechanism.

also i would like to know what 'overactions' are and what it means (or at least if it is good or bad) if tc -s shows a 'backlog 15p' or similar in the statistic of e.g. class 1:20.

thanks for your help,

Patrick


_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://ds9a.nl/2.4Routing/

             reply	other threads:[~2001-12-07  1:29 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-12-07  1:29 Patrick Nagelschmidt [this message]
2001-12-07 11:13 ` [LARTC] CBQ only works 'bounded' bert hubert
2001-12-07 13:19 ` Patrick Nagelschmidt
2001-12-07 14:33 ` Michael T. Babcock
2001-12-07 15:26 ` bert hubert
2001-12-07 15:38 ` Patrick Nagelschmidt
2001-12-07 15:57 ` Martin Devera

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=marc-lartc-100768870231848@msgid-missing \
    --to=dto@gmx.net \
    --cc=lartc@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox