I have just found a nasty bug triggered by some bad interaction between IGMP Proxy and UPnP. Tested with 6.33.3 and 6.34rc34. It does not happen with 6.32.3.
Here is my IGMP Proxy configuration:
/routing igmp-proxy
set query-interval=10s query-response-interval=9s quick-leave=no
/routing igmp-proxy interface
add alternative-subnets=0.0.0.0/0 disabled=no interface=IPTV threshold=1 upstream=yes
add alternative-subnets="" disabled=no interface=ether2-master-local threshold=1 upstream=no
Yes, I know that query-interval=10s can sound strange, but I want to replicate the configuration used by my Internet/IPTV provider on their own routers.
This is my UPnP configuration:
/ip upnp
set allow-disable-external-interface=no enabled=yes show-dummy-rule=yes
/ip upnp interfaces
add disabled=no !forced-external-ip interface=ether2-master-local type=internal
add disabled=no !forced-external-ip interface=pppoe-out1 type=external
After upgrading from 6.32.3 to 6.33.3 I began to have TV image freezes (for ~15 secs.) approximately every two minutes. Using a packet sniffer I found that the freezes coincided with IGMP queries lost (not sent) by the router. Each IGMP query loss coincided in turn with an SSDP packet being sent by the router:
SSDP.png
Note how IGMP queries are being sent every 10 secs, and then there is a gap between 11:57:43 and 11:58:17, resuming normal operation at 11:58:23. Meanwhile, queries that should have been sent at 11:57:53 and 11:58:03 were lost, and the query that should have been sent at 11:58:13 seems delayed to 11:58:17.
Disabling UPnP “fixes” the problem. It is 100% replicable. I tried upgrading to 6.34rc34 and the behavior was the same. Using 6.32.3 no SSDP packets are sent even with UPnP enabled.
It seems that, somehow, sending that SSDP packet is disrupting the IGMP Proxy query timer.