[openbeosnetteam] FreeBSD vs. our stack
- From: "Axel Dörfler" <axeld@xxxxxxxxxxxxxxxx>
- To: openbeosnetteam@xxxxxxxxxxxxx
- Date: Fri, 02 Jun 2006 18:59:04 +0200 CEST
Hi there,
Waldemar and I talked a bit and here is what we came up with:
According to Waldemar, our current networking stack is still very close
to a BSD stack which could ease the effort of porting FreeBSD modules
into it. Also according to Waldemar, he has little hope that we could
or should use any of the code in our repository right now. While my
impression of the code was similar, it has been some years since I
looked at it (during David's active time).
In any way, what needs to be done first is that someone starts at the
very ground (ie. packet and memory management, a.k.a. mbufs and their
handling) of our current stack and works his way up in layers and
modules. Step by step the existing code can either be replaced with
FreeBSD code or fixed so that it becomes usable. Everything above the
current working set doesn't even need to be built.
The only things that we definitely need to keep are the
net_stack_driver, the ethernet legacy code, and the userland testing
stuff (BONE only). The ethernet code probably needs most of the work
and should be better separated from the rest.
We also agreed that it makes sense to liften up the current module
structure a bit at first, and, if needed, put more stuff into the stack
directly (though as modularized as possible). Only the interface layer
must be true modules for VPN and the like. That would be a good
compromise for R1 if it allows us to reach a stable and robust stack
earlier.
It would be nice if we have the following in mind when doing the port/
rework:
- use native BeOS kernel API wherever possible, there shouldn't be a
generic FreeBSD porting layer - the networking modules should be
integrated as much as possible.
- use our coding style guide
Both will make it much harder to adopt further improvements to the
FreeBSD stack, but since it's working nicely now, I don't see that this
would be so important - the maintenance and cleaning changes at least
shouldn't be necessary anymore, if we do a good job.
So, since we are more than one person working on this, we need to break
that work down into smaller portions, and we also need to communicate a
lot to keep us on track.
For a start, we identified the following separate tasks:
* separate the ethernet legacy code from the network core, and move it
into the ethernet interface, so that it can later be used with no or
only little changes
* make yourself familiar with the FreeBSD networking stack (in
comparison with what we have in our tree)
* port demons and other needed networking tools to our stack
Any takers?
Andrew, what have you done so far, and what would you prefer to do? Any
comments?
The main configuration should work via ioctl(), not via sysctl() - in
contrast we thought that it would be nicer to have an extra userland
API for the networking stack configuration and interfaces etc. that
would hide these details from the programmer.
Networking notifications like "interface (dis)connected" should be done
via the KMessage service, like node monitoring.
Accessing networking interfaces (via ifconfig, for example) should go
over the path of the device (if any), or the name of the interface
module. I like how BONE does it. And I don't like what our current
stack does (ipro10000, sis9000, etc.).
To suggest some goals that are further down the road:
* a nice and clean preferences application
* a net_server application that takes over the duties of inetd and also
handles the complete server configuration in a useful way (ie. reads in
configuration files on startup and configures the stack)
* a Deskbar replicant that manages all available interfaces and shows
useful info
* have a look at porting WiFi stuff from FreeBSD
I hope that wasn't too confusing :-)
Bye,
Axel.
- Follow-Ups:
- [openbeosnetteam] Re: FreeBSD vs. our stack
- From: Joseph Liu
- [openbeosnetteam] Re: FreeBSD vs. our stack
- From: Oliver Tappe
Other related posts:
- » [openbeosnetteam] FreeBSD vs. our stack
- » [openbeosnetteam] Re: FreeBSD vs. our stack
- » [openbeosnetteam] Re: FreeBSD vs. our stack
- » [openbeosnetteam] Re: FreeBSD vs. our stack
- » [openbeosnetteam] Re: FreeBSD vs. our stack
- » [openbeosnetteam] Re: FreeBSD vs. our stack
- » [openbeosnetteam] Re: FreeBSD vs. our stack
- » [openbeosnetteam] Re: FreeBSD vs. our stack
- » [openbeosnetteam] Re: FreeBSD vs. our stack
- » [openbeosnetteam] Re: FreeBSD vs. our stack
- » [openbeosnetteam] Re: FreeBSD vs. our stack
- » [openbeosnetteam] Re: FreeBSD vs. our stack
- » [openbeosnetteam] Re: FreeBSD vs. our stack
- » [openbeosnetteam] Re: FreeBSD vs. our stack
- » [openbeosnetteam] Re: FreeBSD vs. our stack
- » [openbeosnetteam] Re: FreeBSD vs. our stack
- [openbeosnetteam] Re: FreeBSD vs. our stack
- From: Joseph Liu
- [openbeosnetteam] Re: FreeBSD vs. our stack
- From: Oliver Tappe