5. Beschreibung des Protokolls für Gruppenmitglieder
IGMP ist ein asymmetrisches Protokoll, das unterschiedliche Verhaltensweisen für Gruppenmitglieder (Hosts oder Router, die Multicast-Pakete empfangen möchten) und Multicast-Router (die auf IGMP-Nachrichten hören und Multicast-Weiterleitung koordinieren) spezifiziert. Dieser Abschnitt beschreibt den Teil von IGMPv3, der für Gruppenmitglieder gilt. (Beachten Sie, dass ein Router auch ein Gruppenmitglied sein kann.)
Ein System führt das in diesem Abschnitt beschriebene Protokoll über jede Schnittstelle aus, auf der Multicast-Empfang unterstützt wird. Das Protokoll auf jeder Schnittstelle umfasst die sofortige Verarbeitung von zwei Arten von Ereignissen:
-
Eine Änderung des Multicast-Empfangsstatus auf der Schnittstelle, verursacht durch eine lokale Invokation der IPMulticastListen-Definition.
-
Empfang einer Membership Query-Nachricht.
5.1. Aktion bei Änderung des Schnittstellenstatus
Eine Invokation von IPMulticastListen kann den Multicast-Empfangsstatus einer Schnittstelle gemäß den Regeln in Abschnitt 3.2 ändern. Jede solche Änderung betrifft den Per-Interface-Status für eine einzelne Multicast-Gruppenadresse.
Eine Änderung des Schnittstellenstatus veranlasst das System, sofort einen State Change Report von dieser Schnittstelle zu übertragen. Der Typ und Inhalt des State Change Reports werden wie folgt bestimmt:
-
Wenn die Zustandsänderung nicht signifikant ist, z.B. der Filtermodus für eine Gruppe von INCLUDE zu INCLUDE oder von EXCLUDE zu EXCLUDE wechselt, während die Menge der Quelladressen unverändert bleibt, wird kein Report generiert.
-
Wenn die Zustandsänderung signifikant ist, wird ein State Change Report generiert. Der Report enthält einen einzelnen Group Record für die Gruppe, deren Status sich geändert hat. Der Typ und Inhalt des Group Records werden durch Vergleich des Old State (der Zustand vor der Änderung) mit dem New State (der Zustand nach der Änderung) bestimmt, wie in der folgenden Tabelle angegeben:
Old State New State State Change Record Sent INCLUDE (A) INCLUDE (B) ALLOW (B-A), BLOCK (A-B) EXCLUDE (A) EXCLUDE (B) ALLOW (A-B), BLOCK (B-A) INCLUDE (A) EXCLUDE (B) TO_EX (B) EXCLUDE (A) INCLUDE (B) TO_IN (B) Die Notation "ALLOW (B-A)" bedeutet, dass der State Change Record eine Quellliste trägt, die alle Quelladressen enthält, die in Menge B, aber nicht in Menge A sind. Die Notation "BLOCK (A-B)" bedeutet, dass der State Change Record eine Quellliste trägt, die alle Quelladressen enthält, die in Menge A, aber nicht in Menge B sind.
Wenn die berechnete Quellliste für einen ALLOW- oder BLOCK-Record leer ist, wird dieser Record vom State Change Report ausgelassen.
Um sicherzustellen, dass der State Change Report von allen Multicast-Routern im Netzwerk empfangen wird, überträgt das System den Report [Robustness Variable] - 1 Mal erneut, in zufälligen Intervallen, die aus dem Bereich (0, [Unsolicited Report Interval]) gewählt werden. Die [Robustness Variable] ist ein einstellbarer Parameter, der standardmäßig auf 2 gesetzt ist. Das [Unsolicited Report Interval] ist ebenfalls ein einstellbarer Parameter, der standardmäßig auf 10 Sekunden gesetzt ist.
Wenn ein State Change Report für die Übertragung geplant ist und eine Query empfangen wird, die einen Current State Report veranlassen würde (siehe Abschnitt 5.2), wird der ausstehende State Change Report verworfen und stattdessen der Current State Report gesendet. Der Current State Report muss alle Informationen enthalten, die im State Change Report gewesen wären.
5.2. Aktion beim Empfang einer Query
Wenn ein System eine Query empfängt, überprüft es zunächst, ob die Query gültig ist. Um gültig zu sein, muss die Query:
- mindestens 12 Oktette lang sein,
- eine korrekte IP-Checksum haben,
- eine Ziel-IP-Adresse haben, die der All-Systems-Multicast-Adresse (224.0.0.1) oder der spezifischen abgefragten Gruppenadresse entspricht.
Wenn die Query ungültig ist, wird sie ignoriert. Wenn die Query gültig ist, führt das System die folgenden Aktionen aus:
- Es aktualisiert seinen Timer für den Querier, falls erforderlich (siehe Abschnitt 6).
- Es bestimmt, ob es auf die Query antworten muss.
Die folgenden Unterabschnitte beschreiben die Regeln für die Beantwortung verschiedener Arten von Queries.
5.2.1. Aktion beim Empfang einer General Query
Beim Empfang einer General Query überprüft das System jede Schnittstelle, um zu sehen, ob es einen Multicast-Empfangsstatus für eine Gruppe gibt. Für jede Gruppe, für die es einen Status gibt, plant das System das Senden eines Current State Reports.
Der Report enthält einen Group Record für die Gruppe. Der Typ des Group Records ist MODE_IS_INCLUDE, wenn der Filtermodus für die Gruppe INCLUDE ist, und MODE_IS_EXCLUDE, wenn der Filtermodus EXCLUDE ist. Die Quellliste im Group Record enthält die Menge der Quelladressen für die Gruppe.
Der Report wird so geplant, dass er zu einer zufälligen Zeit gesendet wird, die aus dem Bereich (0, [Max Resp Time]) gewählt wird, wobei [Max Resp Time] der im Feld Max Resp Code der Query angegebene Wert ist.
5.2.2. Aktion beim Empfang einer Group-Specific Query
Beim Empfang einer Group-Specific Query überprüft das System, ob es einen Multicast-Empfangsstatus für die in der Query angegebene Gruppenadresse hat. Wenn nicht, ignoriert es die Query.
Wenn es einen Status für die Gruppe gibt, plant das System das Senden eines Current State Reports. Der Report enthält einen Group Record für die Gruppe, konstruiert wie in Abschnitt 5.2.1 beschrieben.
Der Report wird so geplant, dass er zu einer zufälligen Zeit gesendet wird, die aus dem Bereich (0, [Max Resp Time]) gewählt wird.
5.2.3. Aktion beim Empfang einer Group-and-Source-Specific Query
Beim Empfang einer Group-and-Source-Specific Query überprüft das System, ob es einen Multicast-Empfangsstatus für die in der Query angegebene Gruppenadresse hat. Wenn nicht, ignoriert es die Query.
Wenn es einen Status für die Gruppe gibt, bestimmt das System, ob es an einer der in der Query angegebenen Quelladressen interessiert ist. Das System ist an einer Quelladresse interessiert, wenn:
- Der Filtermodus für die Gruppe EXCLUDE ist, ODER
- Der Filtermodus für die Gruppe INCLUDE ist und die Quelladresse in der Quellliste ist.
Wenn das System an mindestens einer der Quelladressen interessiert ist, plant es das Senden eines Current State Reports. Der Report enthält einen Group Record für die Gruppe, konstruiert wie in Abschnitt 5.2.1 beschrieben.
Der Report wird so geplant, dass er zu einer zufälligen Zeit gesendet wird, die aus dem Bereich (0, [Max Resp Time]) gewählt wird.
5.2.4. Aktion beim Empfang einer Query mit gesetztem "S"-Flag
Wenn das "S" (Suppress Router-Side Processing) Flag in einer empfangenen Query gesetzt ist, aktualisiert das System seinen Timer für den Querier nicht. Es antwortet jedoch weiterhin auf die Query, wie in den Abschnitten 5.2.1 bis 5.2.3 beschrieben.