[openbeosnetteam] Re: porting FreeBSD's new netstack

  • From: Waldemar Kornewald <Waldemar.Kornewald@xxxxxx>
  • To: openbeosnetteam@xxxxxxxxxxxxx
  • Date: Wed, 06 Oct 2004 17:09:58 +0200

Philippe Houdoin wrote:

Damned, in the post-Master mess, I totally miss these posts!

No problem. At least you did not totally forget it. ;)

the netstack of FreeBSD 5.3 will have some nice features and speed improvements. Additionally, their netstack is finally thread-safe (and multi-threaded). Our netstack is a port of an older version and thus not thread-safe.
I did not port that beast, so I do not know what is harder to do:
- port the new netstack
- make our netstack thread-safe and extend with functionality (non-blocking support, etc.)

Both imply to dive in BSD stack source code internal.
I guess it means both are hard to do, but at least their newest code may give us up-to-date knowlegde.

Do we want to live with not-so-fine-grained locking or do we want to switch over later? We could also import their future changes easily, I think.

IMHO, it would be very useful if we had a nice port including documentation about changes made to the port. If we can create a layer around the stack's core and module layers around the protocols it might become rather easy to port new releases and always have an up-to-date and stable netstack. While we maintain the port we can also slowly write our own stack, compare speeds, and improve it until it is better and at the same time smaller and cleaner.

What do you think? How much work would a new port (we can reuse existing code and experience) and fixing/extending the current port mean?

Well, dunno, really.
Our current stack seems so near to reach a final alpha stage (DHCP is missing, mostly), it sounds radical to drop pretty much all the meat to start again. But maybe it's the momentum we, as a team (including me), need.

IMHO, switching from alpha to stable will be harder with our current stack. Do you have enough time for doing a new port? I would like to finish some of my tasks/projects before starting the port.

BTW, what was the reason for putting DHCP & mDNS into the kernel, again? Could we not live with a daemon that communicates with a little kernel module that serves as an API gateway (kernel <-> userland)?

I guess it's time I give a look at FreeBSD 5.3 net stack code...

Sorry, I only had a quick look because there are other things I am working on (porting GHC+darcs to BeOS, finishing PPP userland stuff, etc.). I hope to have more time soon.


Other related posts: