On Monday, September 14, 2020 9:53:45 PM CEST Linus Lüssing wrote: > Scenario: > * Multicast frame send from a BLA backbone (multiple nodes with > their bat0 bridged together, with BLA enabled) > > Issue: > * BLA backbone nodes receive the frame multiple times on bat0 > > For multicast frames received via batman-adv broadcast packets the > originator of the broadcast packet is checked before decapsulating and > forwarding the frame to bat0 (batadv_bla_is_backbone_gw()-> > batadv_recv_bcast_packet()). If it came from a node which shares the > same BLA backbone with us then it is not forwarded to bat0 to avoid a > loop. > > When sending a multicast frame in a non-4-address batman-adv unicast > packet we are currently missing this check - and cannot do so because > the batman-adv unicast packet has no originator address field. > > However, we can simply fix this on the sender side by only sending the > multicast frame via unicasts to interested nodes which do not share the > same BLA backbone with us. This also nicely avoids some unnecessary > transmissions on mesh side. > > Note that no infinite loop was observed, probably because of dropping > via batadv_interface_tx()->batadv_bla_tx(). However the duplicates still > utterly confuse switches/bridges, ICMPv6 duplicate address detection and > neighbor discovery and therefore leads to long delays before being able > to establish TCP connections, for instance. And it also leads to the Linux > bridge printing messages like: > "br-lan: received packet on eth1 with own address as source address ..." > > Fixes: 405cc1e5a81e ("batman-adv: Modified forwarding behaviour for > multicast packets") Signed-off-by: Linus Lüssing <linus.luess...@c0d3.blue> > ---
Acked-by: Simon Wunderlich <s...@simonwunderlich.de>
signature.asc
Description: This is a digitally signed message part.