I am currently trying to setup PCQ for our home.
It seems to be working fine, when the bandwidth is actually what it should be.
Unfortunately our bandwidth varies from about 80Mbit/s to 15Mbit/s.
Is there a way to dynamically adjust PCQ for that? Or is there a queue type, that is better suited for our scenario?
When the network is empty, I get a ping of around 30.
When someone starts a download and I adjust the max-limit to a lower value that fits the current download speed, I get a ping of around 100, but also timeouts.
Found that out by setting the pcq-rate to 10Mbit/s and 10Mbit/s was the max I got.
Problem was, that the src and dst mask was not set correctly in the queue type. It was set to 0 instead of 32.
So PCQ couldn’t distinguish between IPs because they were all in the same “subnet”
PCQ can’t work correctly if it doesn’t know what is the limit. In theory it could learn about the limit by observing various transfer properties (achieved throughput, RTT of TCP packets, etc.), but it would be quite unreliable because transfer properties are affected by every single path part for every single connection, not only the last mile (which is indeed bottleneck most of the time). PCQ can quite reliably throttle Tx (uplink in usual case) because it observes Tx queues and can work with QoS parameters. Throttling Rx is quite challenging even if throughput is static, with ever changing downlink capacity this task is nearly impossible.