Multicast stream terminates for all clients on bridge if one client leaves

Hello Community,

we are setting up a network with RB5009UPr+S+IN Routers in v7.18.2.
They are connected via Wireguard interfaces and we want to distribute multicast streams from several senders to multible clients using PIM-SM.
Every router has a bridge for the multicast clients and/or multicast servers with igmp snooping and multicast querier activated.
If a multicast server is connected to the bridge of router R1, one client is connected to the bridge of R2 and another client is connected to the bridge of R3, everything works as intended.
Both clients can join and leave without problems.
However, if 2 clients are conected to the same bridge on R2 and one of them leaves the other client stops receiving multicast messages as well.
We noticed that the problem doesn’t occur if the clients connected to one router are not connected to a bridge but to ethernet interfaces with individual IPs, which is not practical for our idea.

We are not sure whats could be the issue and are looking forward to your help!

Export files of R1 (RP for PIM-SM) and R2 (R3 and R4 are configured analogously):


# R1:
# 2025-03-20 14:50:23 by RouterOS 7.18.2
# software id = **ELIDED**
#
# model = CCR2004-16G-2S+
# serial number = **ELIDED**
/interface bridge
add igmp-snooping=yes multicast-querier=yes name=loopback
/interface wireguard
add listen-port=13231 mtu=1420 name=wireguard1
add listen-port=13232 mtu=1420 name=wireguard2
add listen-port=13233 mtu=1420 name=wireguard3
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1 src-address=\
    10.0.1.0/24
/port
set 0 name=serial0
/routing pimsm instance
add disabled=no name=pimsm-instance-1 vrf=main
/interface wireguard peers
add allowed-address=0.0.0.0/0 endpoint-port=13231 interface=wireguard1 name=\
    r2_peer public-key="**ELIDED**"
add allowed-address=0.0.0.0/0 endpoint-port=13232 interface=wireguard2 name=\
    r3_peer public-key="**ELIDED**"
add allowed-address=0.0.0.0/0 endpoint-port=13233 interface=wireguard3 name=\
    r4_peer public-key="**ELIDED**"
/ip address
add address=10.0.1.1/24 interface=loopback network=10.0.1.0
add address=10.1.2.1/24 interface=wireguard1 network=10.1.2.0
add address=10.1.3.1/24 interface=wireguard2 network=10.1.3.0
add address=10.1.4.1/24 interface=wireguard3 network=10.1.4.0
/ip dhcp-client
add default-route-tables=main interface=ether1
/ip route
add disabled=no distance=110 dst-address=10.0.2.0/24 gateway=\
    10.1.2.5%wireguard1 routing-table=main scope=20 suppress-hw-offload=no \
    target-scope=10
add disabled=no distance=110 dst-address=10.0.3.0/24 gateway=\
    10.1.3.5%wireguard2 routing-table=main scope=20 suppress-hw-offload=no \
    target-scope=10
add disabled=no distance=110 dst-address=10.0.4.0/24 gateway=\
    10.1.4.5%wireguard3 routing-table=main scope=20 suppress-hw-offload=no \
    target-scope=10
add disabled=no distance=110 dst-address=10.1.0.0/16 gateway=\
    10.1.4.5%wireguard3 routing-table=main scope=20 suppress-hw-offload=no \
    target-scope=10
add disabled=no distance=110 dst-address=10.1.0.0/16 gateway=\
    10.1.3.5%wireguard2 routing-table=main scope=20 suppress-hw-offload=no \
    target-scope=10
add disabled=no distance=110 dst-address=10.1.0.0/16 gateway=\
    10.1.2.5%wireguard1 routing-table=main scope=20 suppress-hw-offload=no \
    target-scope=10
add address=10.0.1.1%loopback disabled=yes hashmask-length=0 instance=\
    pimsm-instance-1 priority=2
/routing pimsm bsr rp-candidate
add address=10.0.1.1%loopback disabled=yes group=224.0.0.0/4 holdtime=0 \
    instance=pimsm-instance-1 priority=2
/routing pimsm interface-template
add disabled=no hello-delay=1s hello-period=1s instance=pimsm-instance-1 \
    interfaces=loopback,wireguard1,wireguard2,wireguard3 join-prune-period=2s
/routing pimsm static-rp
add address=10.0.1.1 disabled=no group=224.0.0.0/4 instance=pimsm-instance-1

R2:


# 2025-03-20 14:49:59 by RouterOS 7.18.2
# software id = **ELIDED**
#
# model = RB5009UPr+S+
# serial number = **ELIDED**
/interface bridge
add igmp-snooping=yes igmp-version=3 last-member-interval=10s \
    last-member-query-count=10 mld-version=2 multicast-querier=yes name=\
    bridgeLAN query-interval=1s
/interface wireguard
add listen-port=13231 mtu=1420 name=wireguard1
/routing pimsm instance
add disabled=no name=pimsm-instance-1 vrf=main
/interface bridge port
add bridge=bridgeLAN interface=ether5 trusted=yes
add bridge=bridgeLAN interface=ether6 trusted=yes
add bridge=bridgeLAN interface=ether7 trusted=yes
add bridge=bridgeLAN interface=ether8 trusted=yes
/interface wireguard peers
add allowed-address=0.0.0.0/0 disabled=yes endpoint-address=139.30.200.125 \
    endpoint-port=13231 interface=wireguard1 name=third_peer public-key=\
    "**ELIDED**"
add allowed-address=0.0.0.0/0 endpoint-address=139.30.200.105 endpoint-port=\
    13231 interface=wireguard1 name=first_peer public-key=\
    "**ELIDED**"
/ip address
add address=10.0.2.1/24 interface=bridgeLAN network=10.0.2.0
add address=10.1.2.5/24 interface=wireguard1 network=10.1.2.0
/ip dhcp-client
add interface=ether1
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1 src-address=\
    10.0.2.0/24
/ip route
add disabled=no distance=110 dst-address=10.0.1.0/24 gateway=\
    10.1.2.1%wireguard1 routing-table=main scope=20 suppress-hw-offload=no \
    target-scope=10
add disabled=no distance=110 dst-address=10.0.3.0/24 gateway=\
    10.1.2.1%wireguard1 routing-table=main scope=20 suppress-hw-offload=no \
    target-scope=10
add disabled=no distance=110 dst-address=10.0.4.0/24 gateway=\
    10.1.2.1%wireguard1 routing-table=main scope=20 suppress-hw-offload=no \
    target-scope=10
add disabled=no distance=110 dst-address=10.1.3.0/24 gateway=\
    10.1.2.1%wireguard1 routing-table=main scope=20 suppress-hw-offload=no \
    target-scope=10
add disabled=no distance=110 dst-address=10.1.4.0/24 gateway=\
    10.1.2.1%wireguard1 routing-table=main scope=20 suppress-hw-offload=no \
    target-scope=10
/routing pimsm interface-template
add disabled=no hello-delay=1s hello-period=1s instance=pimsm-instance-1 \
    interfaces=wireguard1,bridgeLAN join-prune-period=2s
/routing pimsm static-rp
add address=10.0.1.1 disabled=no group=224.0.0.0/4 instance=pimsm-instance-1

Knee-jerk observation: you’re mixing your IGMP/MLD versions. It is best if they are the same throughout the entire network, including on the stream sinks and sources. The spec says the presence of IGMPv2 must make the entire network degrade from v3 to v2, but Windows at least ignores that advice, while macOS (and presumably BSD) heeds it. It’s simplest not to invite the altercation.

I doubt this is your actual problem, but make me happy and get your ducks in a row, okay? :nerd_face: