Subject: Re: works in progress: route cache invalidation, RADIX_MPATH
To: None <tech-net@NetBSD.org>
From: David Young <dyoung@pobox.com>
List: tech-net
Date: 11/16/2006 16:18:18
On Thu, Nov 16, 2006 at 01:33:30PM -0600, David Young wrote:
> Patches for two networking features I have in progress are at
> <ftp://cuw.ojctech.com/cuw/netbsd-70b158cb/net-wip.patch>. The first
> feature is route-cache invalidation. The second feature is RADIX_MPATH,
> the multipath routing patches from KAME, with many of my own improvements.
> Sorry the patches for both features are intermingled---anybody know a
> good patch editor?
>
BTW,
> * Route-cache invalidation
I do intend to commit this, soon. It fixes a bug that causes me a lot
of grief.
> * RADIX_MPATH
I don't know when I will get around to debugging and committing this.
Not very soon, I'm afraid.
RADIX_MPATH fixes a bug, albeit not a very popular one: IIRC, the
Host Requirements Spec requires that the routing table can hold more
than one default route, and NetBSD's will not. So we are not strictly
compliant.
RADIX_MPATH also makes it a lot easier for someone to bootstrap an
experiment in wireless routing. Wireless routing is a hot topic these
days. NetBSD is too often overlooked as a platform for that.
I believe RADIX_MPATH will help us do things like operate in the IPv4
link-local subnet (169.254/16) on more than one ethernet, without bridging
all of the ethernets together. (Yes, I really do think that's useful. :-)
Dave
> The second feature is the RADIX_MPATH patches from KAME, with
> significant modifications by me. RADIX_MPATH implements multipath
> routing according to "Modulo-N Hash," described in RFC2991.
> Beware: I have not run compiled or run my RADIX_MPATH patches
> in a long time. I know there are bugs that cause crashes.
>
> My mods make RADIX_MPATH work sensibly in the event that you
> can reach the same destination both directly (i.e., it's on the
> same link), and through an IP router---this is not the least
> bit unusual on a wireless multihop network.
>
> I encapsulate each route's preferability in a macro,
> RADIX_MPATH_PREFERENCE(). Routes with greater preference
> numbers are chosen with greater likelihood. Right now,
> RADIX_MPATH_PREFERENCE() always evaluates to 1.
>
> I also add a "wireless heuristic" to the code that selects
> nexthops: if a destination is on the same link, but there is
> a route through an IP router, the heuristic chooses the latter
> route. The assumption is that a routing daemon has added the
> longer path, knowing full well what it is doing! :-) This is
> a pretty reasonable assumption in practice, but we need the
> capability to turn the heuristic on and off.
>
> * Et cetera
>
> I retired a workaround in gif(4) for the old route-caching
> bug.
>
> I removed gre(4)'s ability to configure the same remote inner
> IP as remote outer IP, per prior discussions on tech-net.
>
> I made many cosmetic changes throughout the networking stacks.
>
> Dave
>
> --
> David Young OJC Technologies
> dyoung@ojctech.com Urbana, IL * (217) 278-3933
--
David Young OJC Technologies
dyoung@ojctech.com Urbana, IL * (217) 278-3933