Network Stack Code Re-write (Possible motivations...?)

Lowell Gilbert freebsd-questions-local at
Sat Dec 20 22:54:30 UTC 2008

Wojciech Puchar <wojtek at> writes:

>>>> I very much doubt that marketing issues were a significant issue.
>>>> Off-the-shelf OS networking has always fallen short of supporting
>>> it wasn't made for that.
>> It can be.  I've written portable IP stacks intended for exactly this
> Of course it can. i just write that FreeBSD network stack WASN'T MADE
> for that.
> not if it can or not.

I had deliberately worked around this topic because FreeBSD's routing
table implementation has made considerable strides in virtualization
lately (for which, as far as I know, the credit is almost entirely due
to Julian Elischer), and this will probably turn out to make it more
useful for commercial routers.  So far, however, these changes are
irrelevant to the historical question of Juniper's use of FreeBSD code.

>>> routing ASIC's and put them there!
>> Mostly, yes.  But the system still has to be network manageable.  That
>> requires that it send and receive packets.  Doing so requires using the
>> same routing information that the forwarding engines are using to
>> forward packets in the same address space.  The kernel *does* still need
>> to know routes to any of its destinations.
> but kernel doesn't forward much packets.

It may not not forward any, but your statement that all it does with IP
is put data into ASICs is still generally incorrect.  It generally does
*send* and *receive* packets, and as such it needs routing information.

It is possible to use a FreeBSD kernel without the IP stack (and this
has been done on particularly deeply embedded processors).  However,
commercial routers generally do not use their OS kernel this way -- it
is far more common that the kernel does send and receive packets within
its native IP stack.  That forwarding data is usually coordinated with
the entity managing the routing data, although sometimes the management
is done completely out-of-band, in which case the kernel's forwarding
data need not have any connection with the data driven into the
forwarding hardware.

Lowell Gilbert, embedded/networking software engineer, Boston area

More information about the freebsd-questions mailing list