Go to the FreeLists Home Page Home Signup Help Login
 



[openbeosnetteam] || [Date Prev] [10-2004 Date Index] [Date Next] || [Thread Prev] [10-2004 Thread Index] [Thread Next]

[openbeosnetteam] Re: porting FreeBSD's new netstack

  • From: Waldemar Kornewald <Waldemar.Kornewald@xxxxxx>
  • To: openbeosnetteam@xxxxxxxxxxxxx
  • Date: Wed, 06 Oct 2004 19:18:42 +0200
Philippe Houdoin wrote:
Maybe NewStack is just to make us devs happy because we always wanted to write our own netstack?


That wasn't my feeling when I commit the src/tests/kits/net/new_stack subtree.
I guess new_stack started after some discussions here about more modularity and because of messness of current core and protocols code, PPP putted aside ;-)

I am always open for suggestions, don't make PPP sound too nice. ;)

BTW, of course, I had a different feeling when I thought about new_stack the first time, too, but now it seems that it is better to do something that makes the user happier.

I fear it'll be hard to work with the FreeBSD community not because of human factor (I'm sure they're smart guys!) but because of technical issues. AFAIK, their stack is a monolithic stack where pretty much is builtin. This make thing easier for them than for us: we want a modular stack. Maybe we're wrong here, maybe we should have just a monolithic add-ons/
kernel/network/stack kernel module instead, basicly a port of latest BSD stack. That would make easy to hide the inter-depencies of protocols and stack core.

This is one thing I thought about, too. When would a user want modules? If we just copy IPv4+IPv6 from FreeBSD into one module, what else would be needed? OTOH, *if* someone needs AppleTalk or IPX he would be left alone. I do *not* want the Linux/BSD way of compiling customized kernels/modules. We need a stack that fits our audience's needs.


Do we need to separate UDP, etc. from IP? One IPv4+6 module (if at all) could work much better and simplify our porting work.

And in cur_netstack we even have parts belonging to IPv4 in the core module. So, we do not really separate it.

----------------
My suggestion is: at first port BSDstack with IPv4+6 as a monolithic kernel module. This will help keeping our code synced with FreeBSD. If we find that sometimes there is a need for modularization of protocols we can still implement it.


IMHO, interface modules are useful because they are comparable to drivers (there will be more than only ethernet) and companies will probably not always need all drivers (esp. in embedded devices). AFAIK, it is rather easy to implement interface modules support, isn't it?

Anyway, our first aim should be a working, but totally (!) monolithic port of FreeBSD's netstack. After that we can consider modularizing parts of their netstack.
----------------


I don't think it'll be easy to modularize their stack code without huge code refactory. Maybe I'm wrong here too and the latest BSD stack is already highly modular, feel free to correct me.

They said it will be rather difficult to make a modular port thread-safe. Their netstack is not module-safe, so to speak.


Well, IPv6 is not mandatory for R1 at least, I prefer a stable IPv4 only stack than an unstable-too-quickly-ported IPv4 & v6 stack.
In fact, I prefer a stable and well-known stack code but limited than any other option!
Hence the new_stack spin-off: try to understand, step by step. But time vanished soon after I made the first steps :-(

IPv6 will be needed somewhere in-between R1 and R2, I think. This makes it rather important. But I agree with you.
A monolithic port would allow both: stable+features(IPv6)


Sounds like after more than one year nobody (and that's include me obvioulsy) have the will to continue with the current code.
So, maybe it's a signal we should not ignore, meaning it's time to drop the current stack code and start over.


By "stack code", I mean all src/add-ons/kernel/network/core|protocols|
interfaces/*.




But first, we must choose what road we want to follow:
- port as much and simply as possible the FreeBSD stack code

This should be done first. We *neeeeed* a stable netstack. This could attract new devs, too, and R5 people could have a finally working and stable net_server replacement.


- or stay with the modular stack design, taking inspiration from FreeBSD's stack to code modules

Nothing speaks against making it modular and implementing iovecs for R2, but for now I would say we need a working basis.


Bye,
Waldemar





[ Home | Signup | Help | Login | Archives | Lists ]

All trademarks and copyrights within the FreeLists archives are owned by their respective owners.
Everything else ©2007 Avenir Technologies, LLC.