Any interest in updating the routing engine?

Joshua Coombs jcoombs at
Wed Oct 8 06:31:31 PDT 2003

>     Good god, how long have you been day dreaming about this?
>     Generally speaking I like the concept of a two-stage route
table.  I
>     have a few comments.  First, I think interface aliases would
have to be
>     treated the same as the primary interface address (that is,
entered into
>     the route table automatically simply by existing).
>     Second, I like the concept of a two-layer route table with
lookups based
>     on both the souce and target IP's (and associated masks).  I
am presuming
>     that the primary layer would contain the multi-homed routes
and the
>     secondary layer would 'lock in' the selected interface for a
flow, like a
>     TCP connection, on a temporary basis.
>     Third, I think that if we were to do this sort of thing we
really would
>     want to completely rewrite the BSD route table radix tree
code.  The
>     existing code is a huge mess and does not suit an MP
environment all that
>     well.  And it would have to be done in the kernel or as a
kernel module,
>     though perhaps development could be done in userland using
>     (to make it easier to develop, with a manual scan of interface
>     if the route table is otherwise not available as an emergency
>     I haven't gone over your notes with a fine toothed comb but
your ideas
>     sound quite interesting.
> -Matt

For the past year or so, as part of my job I've been comparing the
new crop of 'L3' switches to old gaurd cpu based routers and
determining their relative strengths and weaknesses.  This has given
me a chance to see a few different implimentations, and watch to see
how to make some of them fall flat on their face.  Combine that with
many debates about why a PC running a *nix is not a router, and this
was inevitable.  I'll work up something a little clearer/cleaner for
documentation as well as some notes on some of the corner cases I've
come across if that seems like a logical next step.

Joshua Coombs

More information about the Kernel mailing list