On Apr 6, 2017, at 11:33 AM, Toke Høiland-Jørgensen <toke@toke.dk> wrote:

Once upon a time I implemented something like this; it was basically a
PHP script that would generate an HTB bucket (with sfq as leaf qdisc;
this was pre-fq_codel) per subscriber ID and use tc filter to map the
list of IPs registered to that customer into the right bucket. The HTB
shaper was used to enforce the bandwidth each customer was paying for.

Did it work? Yup, mostly. Was it ugly? Oh boy, yes!

Oh my, ok, so it is possible. It can take a while to apply many qdiscs and filters on lower end devices, so I picture some delay while modifying the list or restarting the routers, but I’m just exploring options now, so it is one.

The fq_codel qdisc does have support for arbitrary tc filters to replace
the default hashing, BTW. If you don't need the cake shaper, that might
be a solution?

I see, I found mention of it in Chapter 6 of a draft RFC that it looks like you wrote, actually (https://tools.ietf.org/html/draft-ietf-aqm-fq-codel-06#section-6). :) To try it out, am I heading the right direction by looking at tc filter’s skbedit action, or is that just for MQ devices? (http://man7.org/linux/man-pages/man8/tc-skbedit.8.html)

I also saw this mention of “We are not aware of any deployments utilising the custom classification feature" https://tools.ietf.org/html/draft-ietf-aqm-fq-codel-02#section-5.1.1, so not sure how often this has been tried. :)

Cake is not a requirement yet. I like it for several of its attributes (good performance with high numbers of flows, and also when “over-limiting”, which I’ll explain more in my next round of point-to-point WiFi results).