[Olsr-dev] olsr 0.5.6-r8 ipv6 multicast

John Hay (spam-protected)
Tue Feb 9 20:35:10 CET 2010


On Tue, Feb 09, 2010 at 07:53:04PM +0100, Henning Rogge wrote:
> Am Dienstag 09 Februar 2010 19:37:49 schrieb John Hay:
> > Hi,
> > 
> > I am trying out r8 (with FreeBSD and IPv6 as usual) and ran into a few
> > surprises. I see the default multicast address is now ff02::1 and not
> > ff0e::1 anymore. I think it is better, but it is going to be fun moving
> > our networks. :-)
> ff02::1 is the universal "all nodes linklocal multicast".

I agree with the direction, I just wish we did it a few years ago. :-)

Any reason why we do not use the link-local address for the source
address? It would simplify the code in bsd/kernel_routes.c. :-)

> 
> Some commits ago (after 0.5.6-r8) we changed it to ff02::6d (manet-router 
> linklocal multicast).
> 
> ff0e::1 would be a global scope multicast IP, which would be a desaster for 
> OLSRd. OLSR routing messages MUST not be forwarded beyond one hop by the ip 
> stack.

Hmm so if ff02::6d is actually where we want to go, I'll skip ff02::1 and
go directly there. No reason to move our networks twice. :-) Any ideas on
how to move a network and minimize disruption? :-)

> 
> > I tried setting the multicast address with "IPv6Multicast ff0e::1", but
> > I did not get packets out of the interfaces. Looking into it, I see that
> > there is now two sockets for each interface, one to receive and one to
> > send on. I think the problem is that join_mcast() is only called for the
> > receive socket, so setsockopt IPV6_MULTICAST_IF is not set on the
> > transmit socket. An interesting thing is that ff02::1 work properly as
> > it is, probably because the kernel handle link-local multicast special.
> Yes, that might be the case. Don't use anything beyond linklocal scope for the 
> OLSR multicast IP.

Its been running like that for years, with no harm done. :-)

> 
> > So what should one do? I think join_mcast() is a bit heavy to use for
> > the transmit socket, maybe we should have another function that only
> > set IPV6_MULTICAST_IF?
> If this is necessary for BSD you could send a patch. But it might create a 
> non-working OLSR mesh.

Well the RFCs say that the way to tell the kernel on which interface to
send out multicast packets is with setsockopt IPV6_MULTICAST_IF. You can
look at RFC3542 6.7.3 and RFC3493 5.2.

John
-- 
John Hay -- (spam-protected) / (spam-protected)




More information about the Olsr-dev mailing list