My work proposal for a Google Summer of Code student to come work on the #FreeBSD #networking stack, to implement IGMP/MLD snooping in the bridge driver, is now live: https://wiki.freebsd.org/SummerOfCodeIdeas#if_bridge.284.29_IGMP.2FMLD_multicast_snooping_support #bsd #bsdfund #IP #internet #pim #igmp #mld
SummerOfCodeIdeas - FreeBSD Wiki

Как я победил «замирающее» IPTV на MikroTik с двумя провайдерами (MultiWan) и DoH

История одной диагностики, которая затянулась, но закончилась хеппи-эндом Если у вас MikroTik, два провайдера, настроена балансировка (PCC), вы включили DNS-over-HTTPS (DoH) для безопасности, а IPTV на Android-приставке работает с перебоями или замирает при включении второго WAN канала — эта статья для вас. Я прошёл этот путь от начала до конца и хочу поделиться готовым решением. Проблема: IPTV на Android-приставке работало стабильно только при отключённом одном из провайдеров. При двух активных каналах видео начинало "замирать" через некоторое время после переключения каналов.

https://habr.com/ru/articles/1002988/

#mikrotik #multiwan #doh #dns #ip_tv #udp #igmpproxy #igmp

Как я победил «замирающее» IPTV на MikroTik с двумя провайдерами (MultiWan) и DoH

История одной диагностики, которая затянулась, но закончилась хеппи-эндом Если у вас MikroTik, два провайдера, настроена балансировка (PCC), вы включили DNS-over-HTTPS (DoH) для безопасности, а IPTV...

Хабр
In the classic, non-DSA #Linux bridge the philosophy so far is: No matter in what combination you enable/disable multicast_snooping+ multicast_querier: The bridge ensures you don't break any network protocol, it detects per protocol family if #multicast snooping is applicable. That together with #RFC4541 I think is the only way to regain trust for #IGMP / #MLD snooping imo.
And now things like #DSA or #switchdev come along with non-foolproof solutions, diverging between each driver...
...and even this mrouter exists #switchdev event is a quite incomplete approach. What if you multicast router somehow #IGMP / #MLD querying disabled -> would break any #IPv6, even if you're not using multicast routing. What if you only have an IGMP querier? Would notify an mrouter-exists, but there's no MLD querier, so again IPv6 would be broken...
Neither #switchdev nor #DSA really check if an IGMP/MLD querier exists. So if you enable #multicast snooping on these you currently also need to make sure to have an #IGMP / #MLD querier somewhere. Which is different to a classic Linux bridge, which will stop snooping optimizations if there is none, to avoid packet loss. Only for Marvell Prestera I found some mrouter-exists check via an according switchdev event. Which no other driver uses. And...
Had found an issue with the #DSA #rtl83xx #IGMP / #MLD snooping code in #OpenWrt, it would always flood snoopable IP #multicast payload with no MDB entry, instead of dropping. Finally got some clue how this chip gets configured, it's a bit confusing with all these tables and how they point to each other :D. And these magic shifting numbers, instead abstracting them... Also found one bug in one shift value, I think.
And could get things to drop! Now need to drop more selectively.
Next PoE capable switch arrived from kleinanzeigen.de. This one hopefully supports #OpenWrt and #DSA out-of-the-box and has some progress towards #IGMP / #MLD snooping support. Hoping that it might be the pick to get #multicast running in our hackspace at the #Nobreakspace. There's still work on multicast router ports needed though.
But before I get started on this one, need to document+upload my previous progress on getting #OpenWrt running on the #Dlink DGS-1210-10P **B1** to the OpenWrt wiki.
for the former case it is broken when you have devices/listeners with #IGMP v1/v2 or #MLD v1, instead of IGMPv3 / MLDv2. The issue you'll then potentially run into is IGMP / MLD report suppression. The big thing which #RFC4541 specifies an ugly workaround for... this whole report suppression has lead to so many hard to debug, subtle breakages for decades and now seems to continue with #Linux #DSA / #switchdev...
#multicast #igmpsnooping #mldsnooping
and Jan's reply on the #OpenWrt forum also lead me to this observation, that several #switchdev drivers seem to try to emulate a multicast router port by mirroring all known #multicast listener entries onto these mc router ports... https://patchwork.ozlabs.org/project/openwrt/cover/[email protected]/#3074983
Which makes me scream, this is broken in so many scenarios... like when you use multiple #IGMP / #MLD snooping switches. Or if you don't have a listener for that group, only a sender, whose packets still need to go to multicast routers.
[0/6] realtek: fix management of mdb entries - Patchwork

on the other hand, unfortunately, it seems that #DSA in #Linux (and by that this downstream #rtl83xx driver) so far seems to repeat the mistakes we did in the Linux #bridge and fixed during the last decade... it's not following #RFC4541, DSA does not seem to have an option to set multicast router ports yet... which overall breaks #IGMP / #MLD snooping and by that #multicast in many scenarios... will be interesting if that is fixable or a limitation of #rtl83xx based #switch chips.