Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 08 Mar 1998 22:38:30 -0500
From:      "Louis A. Mamakos" <louie@TransSys.COM>
To:        "Christopher J. White" <cjwhite@empire.net>
Cc:        freebsd-hackers@FreeBSD.ORG
Subject:   Re: FreeBSD routing code 
Message-ID:  <199803090338.WAA11065@whizzo.TransSys.COM>
In-Reply-To: Your message of "Sun, 08 Mar 1998 18:29:45 EST." <199803082329.SAA32622@Empire.Net> 
References:  <199803082329.SAA32622@Empire.Net> 

next in thread | previous in thread | raw e-mail | index | archive | help
> I'm interested in the possiblity of using BSD code
> as the IP forwarding engine, interfaced to commercial
> versions of routing protocols such as OSPF.  This is all
> using VxWorks on a PowerPC.  The target is a rather
> high performance router capable of upto 10,000 routes.

Either you missed a digit or two in your route count, or you've
seriously misunderstood the market for "high performance
routers."   For development starting now, "high-performance
router" means something with OC-12 speed network interfaces,
and lots more than 10K routes.

> I've heard that BSDs TCP/IP is just about the fastest
> around, so I thought I'd take a look at it.  A thread
> from about two years ago indicated that BSD as a router
> is certainly possible, but this seemed to be system running
> the full BSD operating system, not just the router code.

Most instances that I'm aware of using the BSD networking
code (and kernel, for that matter), don't use the existing
packet forwarding path in the stack.  It's not that it's
particularlly slow (though, for a software-based forwarding
engine, you can probably do much better), but that most
implementations use a other forwarding engines, with the
BSD network code used as the "control-plane" for the box.

> Has anyone ripped out just the BSD routing code to
> build a router on top of another operating system?
> How much effort is involved?

Certainly the reverse has been done.  The Ascend GRF
router, for instance, uses a version of BSDI UNIX as it's
OS, and pushes the computed routes out to the forwarding
engines distributed through the box.  There are at least
2 or 3 others that I know about, but I originally learned
of the details under a non-disclosure agreement, and am not
sure what is common and public knowledge now.  Heck, some
of them even use FreeBSD :-)  Again, these are instances of
the OS used to host the routing code; forwarding is
done elsewhere.

There are lots of products with embedded versions of the
BSD networking code inside of some random OS.  The Annex
terminal servers, for instance (by Encore, Xylogics, and now
Bay Networks) are essentially the BSD stack with applications.

Many moons ago, I ported the 4.3-tahoe networking code to run
on a Univac 1100/90 mainframe.  It was just the network stack,
and interfaced with the host OS in a way that I won't bore you
with.  What was interesting is that the host computer was a
36 bit, word-addressable, 1's-complement CPU.  The code was
actually mostly portable, once you realise that -1 != ~0 on
these systems.

> I'm new to BSD code, but on the face of it, the routing 
> code seems pretty tightly coupled to the kernel.  

Not impossible.  Actually, the networking code is fairly well
isolated from the rest of the kernel.  There are pretty clean
interfaces; mostly the socket abstraction on the one end, and
some pretty well defined device driver interfaces, too.

Please do a little market research to make sure you're not wasting
your time though.  For high-performance routers, the bar is set
pretty high these days.

louie





To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199803090338.WAA11065>