Common PCQ configuration, upload not working correctly

My goal: 2meg download and 1meg upload using PCQ

My problem: Upload speed for clients on local side is never correct. Usually I have to adjust it to double to get the correct bandwidth. You will see that in the “Queue Type” below. This is not being caused because of a shortage of available BW.

My download speed though is always reasonably close.

I have tried multiple different PCQ setups and all have the same problem. Here I have a very simple configuration so someone can help diagnose the problem.

System:
RB450G V3.30

Ether1 15meg public symmetrical connection
Ether2 Local Network, DHCP server, NAT, Mangle, Queues, Firewall, etc.
Ether3 is a switch using ether2 as a master

Ether2 and 3 are connected to AP’s

My example here will be to cover all IP’s /24 on the local side with the exception of a few using address list entries. There is over 100 clients.

  1. First mark all connections and all packets using mangle (there is no other mangle entries)
/ip firewall mangle 
;;; Add 2meg Connection Marks
     chain=forward action=mark-connection new-connection-mark=2meg-conn passthrough=yes src-address-list=!do-not-queue 

;;; Add 2meg packet marks
     chain=forward action=mark-packet new-packet-mark=2meg_traffic passthrough=no connection-mark=2meg-conn
  1. Setup Queue types (notice my up speed is set to over 2meg, but all clients get .8 or .9meg while download speeds work correctly)
/queue type
name="PCQ_down_2M" kind=pcq pcq-rate=2200000 pcq-limit=50 pcq-classifier=dst-address pcq-total-limit=7000 

name="PCQ_up_1M" kind=pcq pcq-rate=2200000 pcq-limit=40 pcq-classifier=src-address pcq-total-limit=4000
  1. Queue Tree
[admin@Main] /queue tree> print
Flags: X - disabled, I - invalid 
 0   name="Total_Download" parent=ether2 limit-at=0 priority=1 max-limit=15M burst-limit=0 burst-threshold=0 burst-time=0s 

 1   name="Total_Upload" parent=ether1 limit-at=0 priority=1 max-limit=8M burst-limit=0 burst-threshold=0 burst-time=0s 

 2   name="2_meg" parent=Total_Download packet-mark=2meg_traffic limit-at=0 queue=PCQ_down_2M priority=4 max-limit=0 
     burst-limit=0 burst-threshold=0 burst-time=0s 

 3   name="2meg_client" parent=Total_Upload packet-mark=2meg_traffic limit-at=0 queue=PCQ_up_1M priority=4 max-limit=0 
     burst-limit=0 burst-threshold=0 burst-time=0s

Any results ? I have the same problem on 5.0rc3

I really like the idea behind PCQ and the low CPU usage in comparison to Simple Queues. For two years now I have ran simple queues and never had an issue with them. But, PCQ is not consistent at all. It works a little here and a little there, but is never consistent. Granted, I have only used PCQ on 3.22 and 3.30 on a 450G with less than 200 clients. The other thing is it destroys results with speedtest.net. Very inconsistent and test can take upwards of a full minute to complete while the gauge bounces all over the place.
If there is a way to make PCQ work correctly, I have never found it.

1 name=“Total_Upload” > parent=ether1 > limit-at=0 priority=1 max-limit=8M burst-limit=0 burst-threshold=0 burst-time=0s

wrong, you must use global-out interface for parent, see packet flow diagram or you can check how many PCQ queues showed in you leaf queues in queue tree, also you must mark upload and download traffic separately

Look on tiktube.com for QoS, and read manual about packet flow and PCQ :wink: