Re: [B.A.T.M.A.N.] [PATCHv14 6/6] batman-adv: Send multicast packets to nodes with a WANT_ALL flag

Marek Lindner
2014-02-16T06:32:43Z

[-- Attachment #1: Type: text/plain, Size: 2436 bytes --]

On Saturday 15 February 2014 17:47:54 Linus Lüssing wrote:
> With this patch a node sends IPv4 multicast packets to nodes which
> have a BATADV_MCAST_WANT_ALL_IPV4 flag set and IPv6 multicast packets
> to nodes which have a BATADV_MCAST_WANT_ALL_IPV6 flag set, too.
>
> Why is this needed? There are scenarios involving bridges where
> multicast report snooping and multicast TT announcements are not
> sufficient, which would lead to packet loss for some nodes otherwise:
>
> MLDv1 and IGMPv1/IGMPv2 have a suppression mechanism
> for multicast listener reports. When we have an MLDv1/IGMPv1/IGMPv2
> querier behind a bridge then our snooping bridge is potentially not
> going to see any reports even though listeners exist because according
> to RFC4541 such reports are only forwarded to multicast routers:
>
> -----------------------------------------------------------
> ---------------
> {Querier}---|Snoop. Switch|----{Listener}
> ---------------
> \ ^
> -------
> | br0 | < ???
> -------
> \
> _-~---~_
> _-~/ ~-_
> ~ batman-adv \-----{Sender}
> \~_ cloud ~/
> -~~__-__-~_/
>
> I) MLDv1 Query: {Querier} -> flooded
> II) MLDv1 Report: {Listener} -> {Querier}
>
> -> br0 cannot detect the {Listener}
> => Packets from {Sender} need to be forwarded to all
> detected listeners and MLDv1/IGMPv1/IGMPv2 queriers.
>
> -----------------------------------------------------------
>
> Note that we do not need to explicitly forward to MLDv2/IGMPv3 queriers,
> because these protocols have no report suppression: A bridge has no
> trouble detecting MLDv2/IGMPv3 listeners.
>
> Even though we do not support bridges yet we need to provide the
> according infrastructure already to not break compatibility later.
>
> Signed-off-by: Linus Lüssing <linus.luessing@web.de>
> ---
> main.c | 2 +
> multicast.c | 178
> +++++++++++++++++++++++++++++++++++++++++++++++++++++-
> packet.h | 4 ++
> send.c | 1 +
> soft-interface.c | 2 +
> types.h | 14 ++++-
> 6 files changed, 198 insertions(+), 3 deletions(-)

Applied in revision 02705e4.

Thanks,
Marek

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 490 bytes --]