Multicast
Multicast ist eine effiziente Methode zur Datenübertragung in Netzwerken, bei der Datenpakete gleichzeitig an mehrere Empfänger gesendet werden – ohne jede Verbindung einzeln aufbauen zu müssen. Im Smart Home wird Multicast häufig eingesetzt, z. B. bei KNX IP, wo Telegramme über einen KNX/IP-Router per Multicast im Netzwerk verteilt werden. So können KNX-Komponenten über IP kommunizieren. Auch andere Smart-Home-Geräte wie Sonos nutzen Multicast, z. B. für die Geräteerkennung oder die Synchronisierung von Musik in mehreren Räumen.
Daher ist es heutzutage wichtig, dass Multicast auch im privaten Heimnetzwerk zuverlässig funktioniert. Leider gibt es gerade im Consumer-Bereich viele Netzwerkgeräte – insbesondere WLAN-Router oder Access Points –, die Multicast nur unzureichend unterstützen oder in ihrer Funktion einschränken. Dies führt häufig zu Problemen mit KNX/IP-Routern oder auch mit Produkten wie Sonos. Sonos umgeht diese Schwierigkeiten, indem es im WLAN-Betrieb ein eigenes Mesh-Netzwerk (SonosNet) aufbaut. Für KNX-Router ist das jedoch keine Option – sie sind auf ein korrekt funktionierendes Multicast im Heimnetz angewiesen. Daher möchte ich an dieser Stelle ein wenig aufklären, worauf zu achten ist.
Funktionsweise
Daher ist es zunächst wichtig, grob zu verstehen, wie Multicast funktioniert. Damit ein einmal verschicktes Datenpaket auch wirklich bei allen gewünschten Empfängern ankommt, müssen die Switches und Access Points im Netzwerk Multicast unterstützen. Dabei gibt es grundsätzlich zwei Betriebsmodi.
Dummer Modus
Der erste ist der sogenannte „dumme Modus“ (auch bekannt als Flooding). In diesem Fall wird ein Multicast-Paket einfach ungefiltert an alle Geräte im Netzwerk weitergeleitet – unabhängig davon, ob diese das Paket überhaupt benötigen. Das bedeutet zum Beispiel: Wenn Sonos zwei Audiostreams über Multicast versendet, erhalten nicht nur die entsprechenden Lautsprecher, sondern auch alle anderen Geräte, wie etwa ein KNX/IP-Router, diese Datenpakete. Bei leistungsstarken, modernen Geräten mag das oft kein Problem darstellen. Bei eingebetteten Systemen oder kleinen IoT-Geräten kann dieser unnötige Multicast-Traffic jedoch die Leistung beeinträchtigen oder im schlimmsten Fall zu Kommunikationsproblemen führen.
Intelligenter Modus
Der zweite ist der sogenannte „intelligente Modus“ (auch bekannt als IGMP Snooping). Ziel dieses Modus ist es, den Multicast-Traffic nur an diejenigen Geräte weiterzuleiten, die diesen tatsächlich empfangen möchten. Dafür nutzen viele Netzwerkgeräte das IGMP-Protokoll (Internet Group Management Protocol).
Über IGMP können sich Geräte aktiv bei einer bestimmten Multicast-Gruppe „anmelden“ (joinen). Dadurch wird der Datenverkehr gezielt nur dorthin gesendet, wo er benötigt wird, statt unnötig das gesamte Netzwerk zu belasten. Dieses Prinzip funktioniert allerdings nur zuverlässig, wenn IGMP Snooping aktiviert wurde und zusätzlich ein IGMP Querier im Netzwerk vorhanden ist.
Der fehlende IGMP Querier ist in der Praxis meist der Hauptgrund dafür, warum nach dem Aktivieren von IGMP Snooping der Multicast-Verkehr plötzlich nicht mehr funktioniert. Obwohl das Snooping korrekt aktiviert ist, fehlen dem Netzwerk die notwendigen Informationen über die aktiven Teilnehmer der Multicast-Gruppen. In der Folge funktioniert der Multicast-Traffic nach kurzer Zeit einfach nicht mehr – die Datenpakete erreichen die Empfänger nicht mehr, obwohl die Netzwerkinfrastruktur auf den ersten Blick korrekt konfiguriert erscheint.
Fazit
Wenn du IGMP Snooping aktivierst (was ich dir empfehle), achte darauf, dass auch ein IGMP Querier im Netzwerk vorhanden ist. Da im Heimbereich viele Router diese Funktion nicht unterstützen, brauchst du in der Regel einen intelligenten Switch, der den Querier übernehmen kann.
Beispiel UniFi
Da im KNX-Umfeld häufig Unifi-Setups zum Einsatz kommen, möchte ich euch hier mein eigenes Setup als Beispiel zeigen – nicht als Werbung für Unifi, sondern weil es einfach in vielen Installationen verbreitet ist und ich selbst ebenfalls damit arbeite. Ich verwende aktuell eine Unifi UCG als Router mit integriertem Controller. Dazu kommen zwei USW Lite 16 PoE, die als IGMP Querier fungieren können.
Um das IGMP Snooping zu aktivieren, musst du dich auf deinem UniFi Controller einloggen. Dort unter “Settings > Networks” findest du nun die Checkbox um das IGMP zu aktivieren:
Sobald du IGMP Snooping aktiviert hast, kannst du festlegen, für welche Netze (VLANs) es gelten soll. Nur in diesen ausgewählten VLANs verhält sich der Switch „intelligent“ – in allen anderen wird Multicast weiterhin einfach geflutet.
Die Option „Forward Unknown Multicast Traffic“ steuert, was mit Multicast-Paketen passiert, die keiner IGMP-Gruppe zugeordnet sind (z. B. weil das Endgerät oder das Protokoll kein IGMP unterstützt). Ich lasse solchen Traffic verwerfen (Drop). Wenn du möchtest, dass diese Pakete nicht gefiltert werden, kannst du alternativ auswählen, dass sie entweder per Flood an alle Geräte im VLAN verteilt oder nur an bestimmte, manuell definierte Router-Ports weitergeleitet werden.
Die Option „Flood Known Multicast Protocols“ habe ich aktiviert, da es einige definierte, bekannte Multicast-Protokolle gibt, deren Traffic grundsätzlich alle Geräte im Netzwerk erreichen soll. Für viele Heimnetz-Setups ist diese Option aber nicht zwingend notwendig.
Die Option „Fast Leave“ ist bei mir nicht mehr aktiv, da sie zwar Clients schneller aus Multicast-Gruppen entfernt, jedoch einen unerwünschten Nebeneffekt hat: Ich verwende beispielsweise den UniFi Flex Mini, der kein IGMP-Snooping unterstützt. Befinden sich an diesem Switch zwei Teilnehmer in derselben Multicast-Gruppe und einer verlässt diese, entfernt der nächstgelegene Switch mit IGMP-Unterstützung den gesamten Port aus der Multicast-Gruppe. Dadurch erhält der verbleibende Teilnehmer für kurze Zeit keinen Multicast-Traffic mehr.
Nun zum entscheidenden Punkt: dem „Querier Switch“. Für jedes Netzwerk (VLAN) wird ein eigener IGMP Querier benötigt. Im Screenshot sieht man, dass ich für beide Netzwerke jeweils beide Switches als mögliche Querier hinterlegt habe. Wähle also für alle VLANs mit aktiviertem IGMP Snooping mindestens einen Switch aus, der als Querier fungiert.
Wenn sich an dieser Stelle kein Switch auswählen lässt, bedeutet das, dass in deinem Netzwerk kein Gerät mit Querier-Funktion vorhanden ist. In diesem Fall bleibt dir nur, IGMP Snooping zu deaktivieren und mit dem „dummen“ Multicast-Modus (Flooding) zu arbeiten. Ausnahme du hast einen Multicast-Router der die Aufgabe übernimmt. (Ich meine Fritzboxen tun das in bestimmten fällen)
Kontrolle
Man kann das Ganze auch kontrollieren indem man sich auf dem Switch einloggt. Dafür muss man allerdings die Debug Tools aktivieren.
Dann kann man sich per SSH auf dem Switch einloggen (wie das geht darauf gehe ich hier nicht ein).
Fangen wir mit dem Switch im Keller an:
ssh admin@192.168.13.71
SwitchKG-UM.7.2.123# cli
SwitchKG# show ip igmp snooping querier
VID | State | Status | Version | Querier IP | Elected IP | Election Participation | Timer
------+----------+-------------+---------+-----------------+-----------------+------------------------+-------
1 | Enabled | Querier | v2 | 10.0.0.1 | 10.0.0.1 | Enabled | 3
2 | Disabled | Non-Querier | No | --------- | --------- | --------- | ---
3 | Enabled | Querier | v2 | 10.0.0.1 | 10.0.0.1 | Enabled | 3
41 | Disabled | Non-Querier | No | --------- | --------- | --------- | ---
Total Entry 4
Total Entry 3
SwitchKG# show ip igmp snooping groups
VLAN | Group IP Address | Type | Life(Sec) | Port
------+------------------+--------+-----------+------------------
1 | 224.0.23.12 | Dynamic| 250 | gi4-6
1 | 233.89.188.1 | Dynamic| 248 | gi16
1 | 239.254.127.63 | Dynamic| 242 | gi5
1 | 239.255.255.250 | Dynamic| 251 | gi2,gi5-6,gi11
Total Number of Entry = 4Hier sieht man nun, dass der Switch im Keller als Querier für beide aktivierten Netzwerke die IP-Adresse 10.0.0.1 erhalten hat. Diese Adresse muss nicht Teil des jeweiligen Subnetzes sein – UniFi vergibt hier automatisch eine passende Querier-IP, auch wenn sie außerhalb des VLAN-Adressbereichs liegt. In der Spalte Status erkennt man außerdem, dass dieser Switch aktuell tatsächlich der aktive Querier ist.
Im unteren Bereich sieht man, dass momentan vier Multicast-Gruppen aktiv sind. Besonders interessant ist dabei die Gruppe 224.0.23.12 – das ist die KNX-Multicast-Gruppe. Der Switch zeigt hier, dass die Ports 4 bis 6 dieser Gruppe beigetreten sind (joined) und somit Multicast-Telegramme aus dem KNX/IP-Verkehr empfangen.
Nun der Switch im EG:
ssh admin@192.168.13.59 143 ↵
SwitchEG-UM.7.2.123# cli
SwitchEG# show ip igmp snooping querier
VID | State | Status | Version | Querier IP | Elected IP | Election Participation | Timer
------+----------+-------------+---------+-----------------+-----------------+------------------------+-------
1 | Enabled | Non-Querier | v2 | 10.0.0.2 | 10.0.0.1 | Enabled | 39
2 | Disabled | Non-Querier | No | --------- | --------- | --------- | ---
3 | Enabled | Non-Querier | v2 | 10.0.0.2 | 10.0.0.1 | Enabled | 40
41 | Disabled | Non-Querier | No | --------- | --------- | --------- | ---
Total Entry 4
SwitchEG# show ip igmp snooping groups
VLAN | Group IP Address | Type | Life(Sec) | Port
------+------------------+--------+-----------+------------------
1 | 224.0.23.12 | Dynamic| 198 | gi16
1 | 233.89.188.1 | Dynamic| 195 | gi16
1 | 239.254.127.63 | Dynamic| 198 | gi8,gi16
1 | 239.255.255.250 | Dynamic| 258 | gi3-4,gi8,gi11,gi13-14,gi16
Total Number of Entry = 4In der zweiten Ausgabe ist der andere Switch (SwitchEG) zu sehen. Auch hier wird ein Querier angezeigt, jedoch ist der Switch selbst nicht der aktive Querier. Die gewählte Querier-IP entspricht der des SwitchKG, weshalb der Status auf Non-Querier steht. Der State ist allerdings auf Enabled gesetzt, sodass der Switch vollständig bereit wäre, die Querier-Rolle zu übernehmen, falls der aktuelle Querier (SwitchKG) ausfallen sollte.
In der unteren Liste sieht man, dass nur Port 16 der KNX-Multicast-Gruppe beigetreten ist, was der Uplink zum SwitchKG ist. Auf SwitchKG ist jedoch Port 3 (der Uplink zurück zu SwitchEG) nicht der Gruppe beigetreten. Der Grund dafür ist, dass am SwitchEG kein Gerät Interesse an der Multicast-Gruppe signalisiert hat, also kein IGMP Join erfolgt ist. Der Multicast-Traffic wird daher gar nicht erst zum SwitchEG weitergeleitet, solange dort niemand die Daten benötigt. Dadurch wird nicht nur der Traffic zu den Clients reduziert, sondern auch der Datenverkehr zwischen den Switches deutlich minimiert – ein klarer Vorteil des intelligenten Modus mit IGMP Snooping.
Ich habe übrigens auch noch ein paar Unifi Flex Minis im Einsatz. Diese unterstützen kein IGMP Snooping und arbeiten daher im „dummen Modus“ – sie leiten den gesamten Multicast-Traffic einfach ungefiltert weiter, unabhängig davon, ob ein Gerät diesen überhaupt benötigt. Ein Mischbetrieb ist also möglich.