From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.taht.net (mail.taht.net [176.58.107.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 3F83B3BA8E for ; Thu, 6 Dec 2018 15:03:22 -0500 (EST) Received: from dancer.taht.net (unknown [IPv6:2603:3024:1536:86f0:eea8:6bff:fefe:9a2]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.taht.net (Postfix) with ESMTPSA id 7114021B46; Thu, 6 Dec 2018 20:03:20 +0000 (UTC) From: Dave Taht To: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= Cc: Dave Taht , cerowrt-devel , edumazet@google.com References: <87bm5zgkkg.fsf@toke.dk> Date: Thu, 06 Dec 2018 12:03:06 -0800 In-Reply-To: <87bm5zgkkg.fsf@toke.dk> ("Toke \=\?utf-8\?Q\?H\=C3\=B8iland-J\?\= \=\?utf-8\?Q\?\=C3\=B8rgensen\=22's\?\= message of "Thu, 06 Dec 2018 09:50:55 +0200") Message-ID: <87efau1kzp.fsf@taht.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Cerowrt-devel] fq_pie for linux X-BeenThere: cerowrt-devel@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: Development issues regarding the cerowrt test router project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Dec 2018 20:03:22 -0000 Toke H=C3=B8iland-J=C3=B8rgensen writes: > Dave Taht 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@lists.bufferbloat.net > https://lists.bufferbloat.net/listinfo/cerowrt-devel