[Cake] Using cake to shape 1000’s of users.

Pete Heist pete at heistp.net
Sat Jul 28 20:17:59 EDT 2018

> On Jul 28, 2018, at 8:12 PM, Toke Høiland-Jørgensen <toke at toke.dk> wrote:
> Priority field sets tin, class sets flow. Both need the qdisc is as its major number, iirc. And both can be set from the same bpf filter which can be run in direct action mode...

This works for me. :)

I only tested so far by setting classid with u32 to map 3 macs to two members IDs, then verified fairness:

# IFACE is cake’s interface
# MAJOR_ID is from cake
while read mac id; do
        tc filter add dev $IFACE parent $MAJOR_ID: \
                u32 match ether src $mac classid $MAJOR_ID:$id
done << EOF
aa:bb:cc:11:22:33 1
bb:cc:dd:22:33:44 1
cc:dd:ee:33:44:55 2

This should use eBPF and a map lookup for performance, so I’ll see if I can make that work.

Caveats that I know of:
- Limited to 1024 members
- No fairness between flows
- Non-member traffic would have to be dealt with somehow, maybe put in its own queue or split among multiple queues, otherwise there can be hash collisions with member queues

More information about the Cake mailing list