Setting up igmp snooping confusion

Hi all,

I am a bit confused about setting-up IGMP snooping.
My scenario is as followed:

I have a RPI 4 which services my internet connection. On the RPI I created a sepperate vlan (id4) for my IPTV. Behind the RPI is a switch (Zyxel gs1900) where I plug in all my devices (3 AP's, my IPTV box tagged to the Vlan on port 8 and some pc's).

My network config on the RPI looks as followed:

config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fd01:0286:9fd4::/48'
	option packet_steering '1'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'eth0'
	option igmp_snooping '1'
	option multicast_querier '0'

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '192.168.1.1'
	option netmask '255.255.255.0'
	option ip6assign '60'

config device
	option name 'eth1'
	option mtu '1512'

config device
	option type '8021q'
	option ifname 'eth1'
	option vid '6'
	option name 'eth1.6'
	option mtu6 '1508'
	option mtu '1508'

config interface 'wan'
	option proto 'pppoe'
	option device 'eth1.6'
	option username 'F4-05-95-63-FB-E0@internet'
	option password 'ppp'
	option ipv6 '1'
	option mtu '1500'
	option metric '1'

config interface 'wan6'
	option proto 'dhcpv6'
	option device '@wan'
	option reqaddress 'try'
	option reqprefix 'auto'
	option peerdns '0'
	option metric '0'
	list dns '2606:4700:4700::1111'
	option dns_metric '55'

config device
	option type '8021q'
	option ifname 'eth1'
	option vid '4'
	option name 'eth1.4'
	option mtu '1500'

config interface 'iptv'
	option proto 'dhcp'
	option device 'eth1.4'
	option force_link '1'
	option delegate '0'
	option vendorid 'IPTV_RG'
	option peerdns '0'
	option defaultroute '0'

config device
	option type 'bridge'
	option name 'br-iptv'
	option ipv6 '0'
	list ports 'eth0.4'
	option igmp_snooping '1'
	option multicast_querier '0'

config interface 'iptv_lan'
	option proto 'static'
	option device 'br-iptv'
	option ipaddr '192.168.4.1'
	option netmask '255.255.255.0'
	option delegate '0'

config device
	option type '8021q'
	option ifname 'eth0'
	option vid '4'
	option name 'eth0.4'
	list egress_qos_mapping '0:5'
	list egress_qos_mapping '1:5'
	list egress_qos_mapping '2:5'
	list egress_qos_mapping '3:5'
	list egress_qos_mapping '4:5'

And this is my igmpproxy config:

config igmpproxy
	option quickleave 1
#	option verbose [0-3](none, minimal[default], more, maximum)

config phyint
	option network iptv
	option zone iptv
	option direction upstream
	list altnet 0.0.0.0/0

config phyint
	option network iptv_lan
	option zone iptv_lan
	option direction downstream

For the reccord: I want to use IGMP snooping on my main LAN and on the IPTV lan so I enabled them in the br-lan and br-iptv devices. On my switch I also enabled IGMP Snooping...

Now the strange part is, my IPTV config is working great (using igmpproxy), but when I disable igmp snooping on my Vlan 4 bridge it is still working, and that is the part which confuses me...

As the RPI has only 1 port which goes to a switch, should I disable igmp snooping on the RPI and just enable it on the switch, or?

The second thing that confuses me is that on the br-iptv device the snooping version is 2 and not 3. Even when i force to use v3 it stays at v2... altough, it is still working I would like to have it v3.

The third thing. When I disable igmp snooping on f.e. br-iptv I still see it when i run

cat /proc/net/igmp

With the network config above the output looks like the following:

Idx	Device    : Count Querier	Group    Users Timer	Reporter
1	lo        :     1      V3
				010000E0     1 0:00000000		0
2	eth0      :     1      V3
				010000E0     1 0:00000000		0
3	eth1      :     1      V3
				010000E0     1 0:00000000		0
7	br-lan    :     3      V3
				FB0000E0     1 0:00000000		0
				010000E0     1 0:00000000		0
				6A0000E0     1 0:00000000		0
8	br-iptv   :     4      V2
				160000E0     1 0:00000000		1
				020000E0     1 0:00000000		1
				010000E0     1 0:00000000		0
				6A0000E0     1 0:00000000		1
9	eth0.4    :     1      V3
				010000E0     1 0:00000000		0
10	eth1.4    :     3      V3
				060203E0     1 0:00000000		0
				FAFFFFEF     1 0:00000000		0
				010000E0     1 0:00000000		0
11	eth1.6    :     1      V3
				010000E0     1 0:00000000		0
15	pppoe-wan :     1      V3
				010000E0     1 0:00000000		0
38	ifb4pppoe-wan:     1      V3
				010000E0     1 0:00000000		0

And the last confusing bit is, I also have the igmp snooping on my wireless AP nodes which are enabled..

So basically, where should I enable it, how to get it to V3 on br-iptv if needed, how come IPTV is still working when disabled? Thank you all! :smiley:

Oké I am completely lost… if I F.E. Enable multicast querier on br-lan the output of

cat /proc/net/igmp

Will show V2 for the br-lan interface.. why???

When enabled, IGMP Snooping will restrict the default behavior of multicast packets "flooding" out on all ports of a switch. The switch becomes smart enough to not copy packets to a port where no device has made an IGMP request for the stream.

On your Pi, since there are only two ports, IGMP processing is not necessary at all. The TV connection could be a simple bridge from eth0.4 to eth1.4. Whatever the TV box wants will go directly to the ISP on its VLAN and the ISP will serve it.

This is also presuming that multicast is in use. Due to the overall bugginess of v4 multicasting and IGMP implementations, most TV streams are unicast.

Thanks for the answer.

Are you saying that enabling IGMP snooping will be enough without enabling multicast querier?

Or should I not even enable IGMP snooping on my rpi and only enable it on my switch?

The case is, I also use AirPlay, wireless sonos devices, so would like to use it on my local network aswell as for the IPTV VLan

So my question is, where do I enable IGMP snooping as my RPI has only one port which goes to a switch.

At the moment I disabled IGMP snooping on my RPI and my network config looks like this:

config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fd01:0286:9fd4::/48'
	option packet_steering '1'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'eth0'

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '192.168.1.1'
	option netmask '255.255.255.0'
	option ip6assign '60'

config device
	option name 'eth1'
	option mtu '1512'

config device
	option type '8021q'
	option ifname 'eth1'
	option vid '6'
	option name 'eth1.6'
	option mtu '1508'

config interface 'wan'
	option proto 'pppoe'
	option device 'eth1.6'
	option username 'F4-05-95-63-FB-E0@internet'
	option password 'ppp'
	option ipv6 '1'
	option mtu '1500'
	option metric '1'

config interface 'wan6'
	option proto 'dhcpv6'
	option device '@wan'
	option reqaddress 'try'
	option reqprefix 'auto'
	option metric '0'

config device
	option type '8021q'
	option ifname 'eth1'
	option vid '4'
	option name 'eth1.4'
	option mtu '1500'

config interface 'iptv'
	option proto 'dhcp'
	option device 'eth1.4'
	option force_link '1'
	option delegate '0'
	option vendorid 'IPTV_RG'
	option peerdns '0'
	option defaultroute '0'

config device
	option type 'bridge'
	option name 'br-iptv'
	option ipv6 '0'
	list ports 'eth0.4'

config interface 'iptv_lan'
	option proto 'static'
	option device 'br-iptv'
	option ipaddr '192.168.4.1'
	option netmask '255.255.255.0'
	option delegate '0'

config device
	option type '8021q'
	option ifname 'eth0'
	option vid '4'
	option name 'eth0.4'
	list egress_qos_mapping '0:5'
	list egress_qos_mapping '1:5'
	list egress_qos_mapping '2:5'
	list egress_qos_mapping '3:5'
	list egress_qos_mapping '4:5'

Because the RPI only has one port (which I think it make no sense enabling IGMP snooping there) I enabled it on my switch like this:


Where vlan 4 is the vlan for my iptv devices (currently only one).

On the RPI there is still a imgpproxy running which is needed for IPTV. This services is still running V2, but I don't know what the reason of that is?

8	br-iptv   :     3      V2
				160000E0     1 1:00000173		1
				020000E0     1 1:00000190		1
				010000E0     1 0:00000000		0