[Cerowrt-devel] fq_pie for linux

Dave Taht dave at taht.net
Thu Dec 6 15:03:06 EST 2018


Toke Høiland-Jørgensen <toke at toke.dk> writes:

> Dave Taht <dave.taht at gmail.com> writes:
>
>> https://github.com/gautamramk/FQ-PIE-for-Linux-Kernel/issues/2
>
> With all the variants of fq+AQM, maybe decoupling the FQ part and the
> AQM part would be worthwhile, instead of reimplementing it for each
> variant...

I actually sat down to write a userspace implementation of the fq bits
in C with a pluggable AQM a while back. I called it "drrp".

I think that there are many applications today that do too much
processing per packet, and end up with their recv socket buffer
overflowing (ENOBUFS) and tail-dropping in the kernel. I've certainly
seen this with babeld, in particular.

So by putting an intervening layer around the udp recv call to keep
calling that as fast as possible, and try to FQ and AQM the result, I
thought we'd get better fairness between different flows over udp and a
smarter means of shedding load when that was happening.

Then... there was all this activity recently around other approaches to
the udp problem in the kernel, and I gave up while that got sorted out.

(I'd rather like a setsockopt that sorted packets in the recv socket
buffer and head-dropped... )

While trying to work entirely from memory, using things like queue.h's
TAILQ macros... it ended up looking almost exactly like eric's code
(because that's so perfect! :)) and what I really needed (for babel) was
a version that was BSD-licensed. So I figured I'd look hard at the freeBSD
version and try to write from that... or a hard look at cake... and
never got back to it.

I guess we could ask eric if he'd mind if we just ported fq_codel to
userspace and relicensed. Wouldn't mind a go and rust version while
we're at it...

The only difference in what I wrote was that I never liked the "search
all the queues on overload" bit in fq_codel and just did that
inline. This looked to work well with the bulk dropper.

>
> -Toke
> _______________________________________________
> Cerowrt-devel mailing list
> Cerowrt-devel at lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/cerowrt-devel


More information about the Cerowrt-devel mailing list