it's the output, not ack coalescing (Re: TSO and FreeBSD vs Linux)

Adrian Chadd adrian at freebsd.org
Sun Aug 18 21:54:37 UTC 2013


Hi,

I think the "UNIX architecture" is a bit broken for anything other than the
occasional (for various traffic levels defining "occasional!") traffic
connection. It's serving us well purely through the sheer force of will of
modern CPU power but I think we can do a lot better.

_I_ think the correct model is a netmap model - batched packet handling,
lightweight drivers pushing and pulling batches of things, with some
lightweight plugins to service that inside the kernel and/or push into the
netmap ring buffer in userland. Interfacing into the ethernet and socket
layer should be something that bolts on the side, kind of netgraph style.
It would likely look a lot more like a switching backplane with socket IO
being one of many processing possibilities. If socket IO stays packet at a
time than great; but that's messing up the ability to do a lot of other
interesting things.

That's why I'm (more) interested in what you've done architecture wise than
just saying "dump it in userland and be done with it." I think the VALE
kernel stuff is very interesting from an architectural perspective. The
questions (to me!) are:

* how do we implement this in the current framework? (That's not too scary
though; we'd just have the existing ethernet input/output path be one of
many processing modules, and VALE would be another; netmap-userland would
be another; etc, etc);
* how do we make it a compile time fallback to the traditional model, for
platforms that continue to be memory and/or cache constrained? (read:
everything that's embedded)
* ... and not simply have lots of #Ifdef NETMAP everywhere, but make the
fallback be something sane and fall out of the API design?

I'll try to rope some more ideas into that design at the cambridge and euro
BSD developer summits. I'll try to post some kind of work roadmap to the
list(s) for comments and potential code hacking.

Anyway. I'll continue waving hands and hacking on code until I have
something that works.

Luigi - when are you next at a BSD developer summit / conference? Will you
be at Malta?


-adrian


More information about the freebsd-net mailing list