On Jul 30, 2018, at 12:09 PM, Sebastian Moeller <moeller0@gmx.de> wrote:

You could assign more than one queue per customer and hash traffic
between them in BPF…

True. There will always be that limit of 1024 (in my case I’ll need 800).

I believe all you needto do is change the following in scg_cake.c:
#define CAKE_QUEUES (1024)

Now I heard reports that above a certain number this breaks, but it might be enough for 32K or even 64k, or ~32 to 64 queues per customer, which might already help to spread out things a bit...

That’s true, I could try it. I could also add to the classifier the ability to spread one subscriber across multiple queues, as Toke suggested. You’d have to specify how many queues you’ve compiled Cake with (defaults to 1024), and it would spread subscribers across the available classids evenly. I suppose the userspace tool is right place to do this even in ISP Cake, as updates can be made pretty easily to a global BPF map without restarting the qdisc, and further customizations are possible for those writing their own eBPF without qdisc changes.

We’ll eventually want to handle changing the number of queues in ISP Cake somehow so people don’t have to change and re-compile. Should become a tc parameter instead of a define? I guess it comes back to the question of “new qdisc or not”…