6. Protokoll für Multicast-Router
Der Zweck von IGMP besteht darin, jedem Multicast-Router zu ermöglichen, für jedes seiner direkt angeschlossenen Netzwerke zu erfahren, welche Multicast-Adressen Listener in diesem Netzwerk haben. IGMPv3 ermöglicht es einem Multicast-Router auch zu erfahren, welche Quellen für die Listener von Interesse sind.
6.1. Bedingungen für die Querier-Wahl
IGMPv3 stimmt mit IGMPv2 darin überein, dass es nur einen Querier pro Netzwerk geben sollte. IGMPv3-Querier und IGMPv2-Querier können jedoch im selben Netzwerk koexistieren. Das Wahlprotokoll ist das gleiche wie in IGMPv2:
- Zunächst startet jeder Multicast-Router als Querier auf jedem seiner angeschlossenen Netzwerke.
- Wenn ein Multicast-Router eine Query-Nachricht von einem Router mit einer niedrigeren IP-Adresse hört, muss er ein Non-Querier auf diesem Netzwerk werden.
- Wenn ein Multicast-Router für [Other Querier Present Interval] keine Query-Nachricht von einem Router mit einer niedrigeren IP-Adresse gehört hat, nimmt er die Rolle des Queriers wieder auf.
6.2. Querier-Aktion beim Empfang einer Query
Wenn ein Querier eine Query-Nachricht empfängt, überprüft er die Quell-IP-Adresse der Query.
- Wenn die Quell-IP-Adresse niedriger ist als seine eigene IP-Adresse, wird der Router ein Non-Querier.
- Wenn die Quell-IP-Adresse höher ist als seine eigene IP-Adresse, bleibt der Router der Querier.
- Wenn die Quell-IP-Adresse gleich seiner eigenen IP-Adresse ist, wird die Query ignoriert (es handelt sich um eine Reflexion oder Loopback).
6.3. Senden von Queries
Der Querier sendet periodisch General Queries, um Mitgliedschaftsinformationen zu erbitten. Er sendet auch Group-Specific oder Group-and-Source-Specific Queries, wenn er bestimmte Arten von State Change Reports empfängt.
6.3.1. General Queries
Der Querier sendet periodisch General Queries an die All-Systems-Multicast-Adresse (224.0.0.1). Das Standard-[Query Interval] beträgt 125 Sekunden.
General Queries werden verwendet, um die Mitgliedschaftsinformationen für alle Gruppen und Quellen zu aktualisieren.
6.3.2. Group-Specific Queries
Wenn der Querier einen State Change Report empfängt, der anzeigt, dass ein System eine Gruppe verlassen hat (z.B. eine Filtermodusänderung von EXCLUDE zu INCLUDE oder eine Quelllistenänderung, die eine Quelle blockiert), sendet er eine Group-Specific Query an die Gruppenadresse.
Diese Query wird verwendet, um festzustellen, ob es noch verbleibende Systeme gibt, die an der Gruppe interessiert sind.
6.3.3. Group-and-Source-Specific Queries
Wenn der Querier einen State Change Report empfängt, der anzeigt, dass ein System nicht mehr an bestimmten Quellen für eine Gruppe interessiert ist (z.B. das Blockieren bestimmter Quellen), sendet er eine Group-and-Source-Specific Query.
Diese Query wird verwendet, um festzustellen, ob es noch verbleibende Systeme gibt, die an diesen bestimmten Quellen interessiert sind.
6.4. Empfang von Reports
Multicast-Router zeichnen den Empfangsstatus für jede Gruppe und Quelle basierend auf den Reports auf, die sie empfangen. Der Status wird pro Schnittstelle beibehalten.
6.4.1. Empfang von Current State Records
Wenn ein Router einen Current State Record empfängt, aktualisiert er seine Gruppen-/Quell-Timer.
- Wenn der Record MODE_IS_INCLUDE ist, aktualisiert der Router die Timer für die aufgeführten Quellen.
- Wenn der Record MODE_IS_EXCLUDE ist, aktualisiert der Router den Gruppentimer und die Timer für die ausgeschlossenen Quellen (falls vorhanden).
6.4.2. Empfang von Filter-Mode-Change Records
Wenn ein Router einen Filter-Mode-Change Record empfängt, aktualisiert er den Filtermodus und die Timer.
- CHANGE_TO_INCLUDE_MODE: Der Router wechselt in den INCLUDE-Modus, falls er es noch nicht war, und aktualisiert die Quell-Timer.
- CHANGE_TO_EXCLUDE_MODE: Der Router wechselt in den EXCLUDE-Modus und aktualisiert den Gruppentimer.
6.4.3. Empfang von Source-List-Change Records
Wenn ein Router einen Source-List-Change Record empfängt, aktualisiert er die Quell-Timer.
- ALLOW_NEW_SOURCES: Der Router fügt die neuen Quellen zu seiner Liste hinzu und startet deren Timer.
- BLOCK_OLD_SOURCES: Der Router kann abfragen, ob andere Systeme diese Quellen noch benötigen, bevor er sie entfernt.
6.5. Wechsel des Router-Filtermodus
Der Filtermodus des Routers für eine Gruppe wechselt zwischen INCLUDE und EXCLUDE basierend auf dem Status des Gruppentimers und der Quell-Timer.
- Wenn der Gruppentimer läuft, ist der Filtermodus EXCLUDE.
- Wenn der Gruppentimer abläuft, wechselt der Filtermodus zu INCLUDE.
6.6. Aktion beim Empfang einer Group Leave-Nachricht (IGMPv2)
Wenn ein Router eine IGMPv2 Leave Group-Nachricht empfängt, verhält er sich so, als hätte er einen State Change Report erhalten, der eine Änderung in den INCLUDE-Modus (effektiv das Verlassen der Gruppe) für die in der Leave-Nachricht angegebene Gruppe anzeigt. Dies ermöglicht es IGMPv3-Routern, mit IGMPv2-Hosts zu interoperieren.