> On Jul 28, 2018, at 8:12 PM, Toke Høiland-Jørgensen <[email protected]> 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
EOF

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

_______________________________________________
Cake mailing list
[email protected]
https://lists.bufferbloat.net/listinfo/cake

Reply via email to