Hi,
I'm just doing some testing of my PtP patch, and I noticed that ripd
has code in several places that looks like this:
if (version == RIPv2 && if_is_multicast (ifp))
So it seems that RIPv2 is disabled if the interface does not
have the IFF_MULTICAST flag turned on.
Is this correct logic? My understanding was that the system should assume
that all broadcast and point-to-point interfaces are capable of multicast.
According to the linux iproute tools "IP Command Reference" manual
(located in /usr/share/doc/iproute-2.4.7/ip-cref.ps on my linux system):
* MULTICAST -- is an advisory flag indicating that the interface is
aware of multicasting i.e. sending packets to some subset of
neighbouring nodes. Broadcasting is a particular case of
multicasting, where the multicast group consists of all nodes on the
link. It is important to emphasize that software must not interpret
the absence of this flag as the inability to use multicasting on this
interface. Any POINTOPOINT and BROADCAST link is multicasting by
definition, because we have direct access to all the neighbours and,
hence, to any part of them. Certainly, the use of high bandwidth
multicast transfers is not recommended on broadcast-only links because
of high expense, but it is not strictly prohibited.
So what's the correct approach? I notice that ripd and ripngd are
the only two protocol daemons to test for the multicast flag...
-Andy
I'm just doing some testing of my PtP patch, and I noticed that ripd
has code in several places that looks like this:
if (version == RIPv2 && if_is_multicast (ifp))
So it seems that RIPv2 is disabled if the interface does not
have the IFF_MULTICAST flag turned on.
Is this correct logic? My understanding was that the system should assume
that all broadcast and point-to-point interfaces are capable of multicast.
According to the linux iproute tools "IP Command Reference" manual
(located in /usr/share/doc/iproute-2.4.7/ip-cref.ps on my linux system):
* MULTICAST -- is an advisory flag indicating that the interface is
aware of multicasting i.e. sending packets to some subset of
neighbouring nodes. Broadcasting is a particular case of
multicasting, where the multicast group consists of all nodes on the
link. It is important to emphasize that software must not interpret
the absence of this flag as the inability to use multicasting on this
interface. Any POINTOPOINT and BROADCAST link is multicasting by
definition, because we have direct access to all the neighbours and,
hence, to any part of them. Certainly, the use of high bandwidth
multicast transfers is not recommended on broadcast-only links because
of high expense, but it is not strictly prohibited.
So what's the correct approach? I notice that ripd and ripngd are
the only two protocol daemons to test for the multicast flag...
-Andy