IPTV - IGMPv3 support via mcproxy on Netgear R7800 running 18.06.2

Hello everyone,
I have been trying for over a week to get my IPTV running after upgrading my SOHO but did not have any success yet. That's why I'm here, I hope I can find the solution and finally sleep in peace again =)

My network setup

network

My ISP is German Telekom, they are tagging traffic with VLAN7. I am using a Draytek Vigor 165 in modem mode to establish the connection. The traffic is managed by a IGMPv3-capable Netgear GS108Ev3 switch, which redirects all VLAN7 traffic to the Netgear R7800 main router via a VLAN trunk. The router performs the PPPoE dial-in and distributs the traffic into VLAN101, 102 and 103, which are sent over the VLAN trunk back into the basement, and VLAN104, which is going straight into the media receiver MR401. Later on, I would like to use a dedicated WiFi but I am still testing. In the basement, the signal is distributed to the different flats and rooms of the house with existing installtion cables into RJ45 sockets (star distribution).

I did a lot of research and managed to get all of this stuff up and running and the internet connection is blazing fast. Everyone in the house is happy and thankful, except for that one dude in the house who is using IPTV. I know it has something to do with the multicast server, because after switching channels I get a fluid picture for like 10s when the signal is still in unicast, but when it starts to switch to multicast the signal freezes.

I have tried igmpproxy but stopped using it because I read that it won't support IGMPv3, which is required by the ISP. So now I am using mcproxy (2017-08-24-93b5ace422..9-1 from the package installer in LUCI).

/etc/config/network

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

config globals 'globals'
	option ula_prefix 'fd4c:f092:8c4e::/48'

config interface 'wan'
	option proto 'pppoe'
	option username
	option password
	option ifname 'eth0.7'
	option ipv6 'auto'
	option peerdns '0'
	option dns '129.70.132.100 212.82.226.212 204.152.184.76 194.150.168.168'

config switch
	option name 'switch0'
	option reset '1'
	option enable_vlan '1'

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option vid '101'
	option ports '4 5t 6t'

config switch_vlan
	option device 'switch0'
	option vlan '2'
	option vid '102'
	option ports '3 5t 6t'

config switch_vlan
	option device 'switch0'
	option vlan '3'
	option vid '103'
	option ports '2 5t 6t'

config switch_vlan
	option device 'switch0'
	option vlan '5'
	option vid '7'
	option ports '0t 5t'

config interface 'lan1'
	option proto 'static'
	option ipaddr '192.168.1.1'
	option netmask '255.255.255.0'
	option type 'bridge'
	option ifname 'eth1.101'

config interface 'lan2'
	option proto 'static'
	option ipaddr '192.168.2.1'
	option netmask '255.255.255.0'
	option type 'bridge'
	option ifname 'eth1.102'

config interface 'lan3'
	option proto 'static'
	option ipaddr '192.168.3.1'
	option netmask '255.255.255.0'
	option type 'bridge'
	option ifname 'eth1.103'

config switch_vlan
	option device 'switch0'
	option vlan '6'
	option ports '1 6t'
	option vid '104'

config interface 'lan4'
	option proto 'static'
	option ipaddr '192.168.4.1'
	option netmask '255.255.255.0'
	option ifname 'eth1.104'

/etc/network/firewall

config defaults
	option syn_flood '1'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'REJECT'

config zone
	option name 'wan'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'
	option mtu_fix '1'
	option network 'wan'

config rule
	option name 'Allow-DHCP-Renew'
	option src 'wan'
	option proto 'udp'
	option dest_port '68'
	option target 'ACCEPT'
	option family 'ipv4'

config rule
	option name 'Allow-Ping'
	option src 'wan'
	option proto 'icmp'
	option icmp_type 'echo-request'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-IGMP'
	option src 'wan'
	option proto 'igmp'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-DHCPv6'
	option src 'wan'
	option proto 'udp'
	option src_ip 'fc00::/6'
	option dest_ip 'fc00::/6'
	option dest_port '546'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-MLD'
	option src 'wan'
	option proto 'icmp'
	option src_ip 'fe80::/10'
	list icmp_type '130/0'
	list icmp_type '131/0'
	list icmp_type '132/0'
	list icmp_type '143/0'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Input'
	option src 'wan'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	list icmp_type 'router-solicitation'
	list icmp_type 'neighbour-solicitation'
	list icmp_type 'router-advertisement'
	list icmp_type 'neighbour-advertisement'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Forward'
	option src 'wan'
	option dest '*'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config include
	option path '/etc/firewall.user'

config redirect
	option target 'DNAT'
	option src 'wan'
	option proto 'tcp udp'
	option dest_ip '192.168.2.1'
	option name 'Joachim DMZ'
	option dest 'lan2'

config zone
	option input 'ACCEPT'
	option output 'ACCEPT'
	option name 'lan1'
	option network 'lan1'
	option forward 'ACCEPT'

config forwarding
	option dest 'wan'
	option src 'lan1'

config zone
	option input 'ACCEPT'
	option output 'ACCEPT'
	option name 'lan2'
	option forward 'ACCEPT'
	option network 'lan2'

config forwarding
	option dest 'wan'
	option src 'lan2'

config zone
	option input 'ACCEPT'
	option output 'ACCEPT'
	option name 'lan3'
	option forward 'ACCEPT'
	option network 'lan3'

config forwarding
	option dest 'wan'
	option src 'lan3'

config zone
	option input 'ACCEPT'
	option output 'ACCEPT'
	option name 'lan4'
	option forward 'ACCEPT'
	option network 'lan4'

config forwarding
	option dest 'wan'
	option src 'lan4'

config zone
	option name 'wan_iptv'
	option forward 'REJECT'
	option output 'ACCEPT'
	option input 'REJECT'
	option masq '1'
	option log '1'
	option network ' '

config rule
	option name 'Allow-DHCP-Renew-iptv'
	option src 'wan_iptv'
	option proto 'udp'
	option dest_port '68'
	option target 'ACCEPT'
	option family 'ipv4'

config rule
	option name 'Allow-Ping-iptv'
	option src 'wan_iptv'
	option proto 'icmp'
	option icmp_type 'echo-request'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-DHCPv6-iptv'
	option src 'wan_iptv'
	option proto 'udp'
	option src_ip 'fe80::/10'
	option src_port '547'
	option dest_ip 'fe80::/10'
	option dest_port '546'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option src 'wan_iptv'
	option proto 'igmp'
	option target 'ACCEPT'

config rule
	option src 'wan_iptv'
	option proto 'udp'
	option dest 'lan4'
	option dest_ip '224.0.0.0/4'
	option target 'ACCEPT'

/etc/mcproxy

protocol IGMPv3;

pinstance iptv: "pppoe-wan" ==> "eth1.104" ;

Please tell me what could possibly be wrong. If you need any further information I will gladly provide it.

Best regards,
Domme

Can you try igmpproxy instead?

I tried igmpproxy but after experimenting for a while without any success I found out that it doesn't support IGMPv3, which is required. Maybe I should add this to the original post.

Edit: this information may be outdated or even wrong but it's what I read and it wasn't working, either, so I thought that this was the cause of this whole problem. According to my research, it has to be compiled from source to make it IGMPv3-compatible, whereas mcproxy can (?) be used straight from the package list with minimum configuration (see the small file above).

1 Like

igmpproxy works fine for me with IGMPv3. I only added the multicast addresses in /etc/config/igmpproxy and added two firewall rules for forwarding ICMP for IPv4 and a 2nd rule for allowing traffic from wan to the desired IPTV zone.