I run an ISP so this is at the provider level. We have customer IP addresses in firewall lists by speed, eg: 100000. Then we use mangle to park packets with those speeds as packet marks. We are currently using PCQ’s and Simple queue to limit our users bandwidth but I wanted to try the new CAKE queues to give our customers a better experience by using the QOS features that CAKE offers but I’m running into an issue.
As of right now I define the PCQ in queue types with the Dst. Address classifier and a Src. Address Mask of 32 and then use that in the simple queues for all users by using the target=0.0.0.0/0. This lets every user get their full 100Mb before it starts to throttle them while the queue itself is able to process 500Mb+ at a time. This is my current PCQ Config:
/queue type
add kind=pcq name=PCQ_DOWN_100M pcq-burst-rate=120M pcq-burst-threshold=98M \
pcq-burst-time=15s pcq-classifier=dst-address pcq-rate=100M \
pcq-total-limit=1000000000KiB
add kind=pcq name=PCQ_UPLOAD_100M pcq-burst-rate=120M pcq-burst-threshold=98M \
pcq-burst-time=15s pcq-classifier=src-address pcq-rate=100M \
pcq-total-limit=1000000000KiB
/queue simple
add dst=sfp28-2 name="100k - 0.0.0.0/0" packet-marks=100000 \
queue=PCQ_UPLOAD_100M/PCQ_DOWN_100M target="0.0.0.0/0"
However, when I try to implement CAKE it takes every IP address inside the target range and limits the sum of those IP’s to 100Mb. So if I have 10 customers on different IP addresses around town trying to use the internet they are limited to 100Mb TOTAL instead of 100Mb EACH. This was the CAKE config:
/queue type
add cake-bandwidth=100.0Mbps cake-nat=yes kind=cake name=CAKE_DOWN_100M
add cake-bandwidth=100.0Mbps cake-nat=yes kind=cake name=CAKE_UP_100M
/queue simple
add dst=sfp28-2 name="cake 100M" packet-marks=100000 queue=\
CAKE_UP_100M/CAKE_DOWN_100M target="0.0.0.0/0"
Is there a way to implement CAKE without creating an individual queue for each customer IP address or is this a feature that is planned in the future? If there was a Dst. Address classifier I’m sure it would work. I can’t really have thousands of queues and keep track of those on all my edge routers so without some work around I’m not sure I can use CAKE. But man, the experiments I performed were amazing and it’s something I REALLY want to get into my network.
Any input is appreciated!!