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 <[email protected]>
> ---
>  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: signature.asc
Description: This is a digitally signed message part.

Reply via email to