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