[PATH] ALTQ(9) codel algorithm implementation

Ermal Luçi eri at freebsd.org
Fri Jun 14 13:05:17 UTC 2013


On Fri, Jun 14, 2013 at 12:34 PM, Andre Oppermann <andre at freebsd.org> wrote:

> On 14.06.2013 11:51, Gleb Smirnoff wrote:
>
>>    Ermal,
>>
>> On Mon, Jun 10, 2013 at 03:43:12PM +0200, Ermal Lu?i wrote:
>> E> at location [1] can be found a patch for Codel[3] algorithm
>> implementation.
>> E>
>> E> Triggered by a mail to the mailing lists[2] of OpenBSD i completed the
>> E> implementation for FreeBSD.
>> E>
>> E> It allows to use codel as the single configured discipline on an
>> interface.
>> E> Also it can be used as a sub discipline of existing queueing
>> disciplines
>> E> already present.
>> E>
>> E> The work has been tested and confirmed working without issues in
>> pfSense.
>> E>
>> E> Any objections on pushing this into FreeBSD?
>> E>
>> E> [1]
>> E> https://github.com/pfsense/**pfsense-tools/blob/master/**
>> patches/RELENG_10_0/altq_**codel.diff<https://github.com/pfsense/pfsense-tools/blob/master/patches/RELENG_10_0/altq_codel.diff>
>> E> [2] http://permalink.gmane.org/**gmane.os.openbsd.tech/29745<http://permalink.gmane.org/gmane.os.openbsd.tech/29745>
>> E> [3] http://www.bufferbloat.net/**projects/codel/wiki<http://www.bufferbloat.net/projects/codel/wiki>
>>
>> I'm afraid we can't grow mbuf packet header with 8 bytes just to satisfy
>> the ALTQ codel algo, which would definitely have a limited usage among
>> FreeBSD users. Thus, "enqueue_time" should go into mbuf_tags(9) not into
>> mbuf packet header.
>>
>
> Agreed.  We don't have space for that in the mbuf header.  There's some
> other
> fields that may be repurposed though, the header pointer for example which
> is
> almost entirely unused.  With some updates to the TSO and Checksum offload
> mechanism I have in the pipeline the "header" field can be easily
> repurposed.
>
> Though I'm against an "obscure" ALTQ mechanism having its own mbuf header
> field
> as such.  It must be a generic field that can be used by others as well.
>
> --
> Andre
>
> Yeah i forgot to clarify that.
The initial implementation had the added field in tag of pf but for some
reason i did not investigate,
and this can be a more deep problem the tag not always made it up to ALTQ.

Hence it was put in the mbuf header.

I did not find a direct way on why the mbuf tag was lost.
Also with codel this does give lots of dropped packet hence i choose this
way.
I do not like to grow the mbuf tag as well but that was the only consistent
way to get this to work reliably.


-- 
Ermal


More information about the freebsd-net mailing list