Subject: Re: IPv6 Router Alert breaks forwarding
To: Greg Troxel <gdt@ir.bbn.com>
From: Andrew McDonald <andrew@mcdonald.org.uk>
List: tech-net
Date: 10/16/2007 20:34:15
On Mon, Oct 15, 2007 at 09:44:36AM -0400, Greg Troxel wrote:
>   Currently the NetBSD IPv6 stack, when acting as a router and forwarding
>   traffic, treats any packet with a Router Alert hop-by-hop option as
>   'ours' and sends it to the local stack. This stops the packet from
>   being forwarded any further, and also results in ICMPv6 Destination
>   Unreachable message being sent back.
> 
> That's definitely broken.
> 
> My understanding, which may be a bit off, is that router alert is
> essentially a method to enable routers to skip a whole bunch of checks
> that may be costly when the option is *not* present.

Yes. It's designed to be a quick way, implementable in the fast path,
for routers to decide whether or not the packet is potentially
'interesting' to them.

> Do you know if MLD packets would be handled properly if there were no
> router alert special treatment?

My understanding is that the router alert handling is needed for MLD to
work properly.

> I would be inclined to commit a version of the FreeBSD patch (the one I
> looked at since you listed it first).  Are you set up to prepare and
> test such a patch on NetBSD-current?

The FreeBSD and KAME patches are identical (it was written by JINMEI
Tatuya after some discussion on the FreeBSD list earlier in the year).

Unfortunately I haven't got the ability to test on NetBSD at the
moment. My end systems are running Linux - I'm seeing the problems from
other people's BSD boxes on the path.

However, I do have some test code which will generate packets with
router alert options, and so get the problem to manifest itself. I'm
using it on Linux, but I believe it should also run on NetBSD (it uses
the IPv6 advanced sockets API). Let me know if you would like a copy.

thanks for your help,

Andrew