Linux – br0 causes to drop multicast connection after 5 minutes

bridgelinuxmulticast

I have these interfaces set up on the router (Linux machine):

br0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500
        inet 192.168.0.3  netmask 255.255.255.0  broadcast 192.168.0.255

bridge name bridge id       STP enabled interfaces
br0     8000.00156d8591ec   no      eth0
                            wlan0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::7271:bcff:feb1:d9cf  prefixlen 64  scopeid 0x20<link>

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.200.44.147  netmask 255.255.255.128  broadcast 10.200.44.255

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::215:6dff:fe85:91ec  prefixlen 64  scopeid 0x20<link>

In br0 there are two interfaces (eth0 – local home network and wlan0 – wireless home network). eth1 is internet connection interface and is not part of the br0.

I use mumudvb for sending multicast IPTV with IP group 239.100.0.1 (udp/1234) and receiving this multicast traffic on a different machine on LAN using VLC player.

When I configure it to send multicast over eth0 all works well on home LAN but I can't join the multicast group from the router itself.

That's why I configured it to send multicast over br0 (makes more sense – then I can join the multicast group from the LAN eth0 as well as router itself) but after about 5 minutes since join, LAN multicast connection drops (without sending any IGMP message). But I can join again and it will work for next 5 minutes again, then drop.

Why is it dropping when sending multicast over br0 and not dropping when sending directly through eth0? Am I missing some configuration on the bridge? What can expire during this period? For example STP is disabled for the bridge but it shouldn't affect this?

When I join the br0 multicast group from the router itself, it won't drop. Only when subscribed from a machine connected to the br0 through eth0.

Best Answer

When using br0 for multicasting, it needs to have IGMP Querier enabled. When it is enabled IGMP protocol version will change from v3 into v2 and it will start issuing Membership queries and no longer drop.

From what I've googled, there seems to be no utility for enabling querier on a bridge, it must be done via /sys like this:

$ echo -n 1 > /sys/devices/virtual/net/br0/bridge/multicast_querier