Zum Hauptinhalt springen

3. Protocol Description (Protokollbeschreibung)

3. Protocol Description (Protokollbeschreibung)

Beachten Sie, dass die Standardwerte für Timer später in diesem Dokument beschrieben werden. Timer- und Zählernamen erscheinen in eckigen Klammern.

Der Begriff "interface" (Schnittstelle) wird in diesem Dokument manchmal verwendet, um "die primäre Schnittstelle in einem angeschlossenen Netzwerk" zu bedeuten; wenn ein Router mehrere physische Schnittstellen in einem einzelnen Netzwerk hat, muss dieses Protokoll nur auf einer davon laufen. Hosts hingegen müssen ihre Aktionen auf allen Schnittstellen ausführen, denen Mitgliedschaften zugeordnet sind.

Multicast-Router verwenden IGMP, um zu erfahren, welche Gruppen Mitglieder in jedem ihrer angeschlossenen physischen Netzwerke haben. Ein Multicast-Router führt eine Liste der Multicast-Gruppenmitgliedschaften für jedes angeschlossene Netzwerk und einen Timer für jede Mitgliedschaft. "Multicast-Gruppenmitgliedschaften" bedeutet das Vorhandensein von mindestens einem Mitglied einer Multicast-Gruppe in einem bestimmten angeschlossenen Netzwerk, nicht eine Liste aller Mitglieder. In Bezug auf jedes seiner angeschlossenen Netzwerke kann ein Multicast-Router eine von zwei Rollen einnehmen: Querier (Abfragender) oder Non-Querier (Nicht-Abfragender). Normalerweise gibt es nur einen Querier pro physischem Netzwerk. Alle Multicast-Router starten als Querier in jedem angeschlossenen Netzwerk. Wenn ein Multicast-Router eine Query-Nachricht von einem Router mit einer niedrigeren IP-Adresse hört, MUSS er ein Non-Querier in diesem Netzwerk werden. Wenn ein Router für [Other Querier Present Interval] (Anderer Abfragender Anwesend Intervall) keine Query-Nachricht von einem anderen Router gehört hat, nimmt er die Rolle des Querier wieder auf. Router senden regelmäßig [Query Interval] (Abfrageintervall) eine General Query (Allgemeine Abfrage) in jedem angeschlossenen Netzwerk, für das dieser Router der Querier ist, um Mitgliedschaftsinformationen anzufordern. Beim Start SOLLTE ein Router [Startup Query Count] (Start-Abfrageanzahl) General Queries in kurzem Abstand [Startup Query Interval] (Start-Abfrageintervall) senden, um Mitgliedschaftsinformationen schnell und zuverlässig zu ermitteln. Eine General Query ist an die All-Systems-Multicast-Gruppe (224.0.0.1) gerichtet, hat ein Group Address (Gruppenadresse) Feld von 0 und eine Max Response Time (Maximale Antwortzeit) von [Query Response Interval] (Abfrageantwortintervall).

Wenn ein Host eine General Query empfängt, setzt er Verzögerungstimer für jede Gruppe (mit Ausnahme der All-Systems-Gruppe), deren Mitglied er auf der Schnittstelle ist, von der er die Abfrage empfangen hat. Jeder Timer wird auf einen anderen zufälligen Wert gesetzt, unter Verwendung der höchsten auf dem Host verfügbaren Taktgranularität, ausgewählt aus dem Bereich (0, Max Response Time], wobei Max Response Time wie im Query-Paket angegeben ist. Wenn ein Host eine Group-Specific Query (Gruppenspezifische Abfrage) empfängt, setzt er einen Verzögerungstimer auf einen zufälligen Wert, ausgewählt aus dem Bereich (0, Max Response Time] wie oben für die abgefragte Gruppe, wenn er Mitglied auf der Schnittstelle ist, von der er die Abfrage empfangen hat. Wenn ein Timer für die Gruppe bereits läuft, wird er nur dann auf den zufälligen Wert zurückgesetzt, wenn die angeforderte Max Response Time kleiner ist als der verbleibende Wert des laufenden Timers. Wenn der Timer einer Gruppe abläuft, sendet der Host einen Version 2 Membership Report (Version 2 Mitgliedschaftsbericht) per Multicast an die Gruppe, mit IP TTL von 1. Wenn der Host den Report eines anderen Hosts (Version 1 oder 2) empfängt, während sein Timer läuft, stoppt er seinen Timer für die angegebene Gruppe und sendet keinen Report, um doppelte Reports zu unterdrücken.

Wenn ein Router einen Report empfängt, fügt er die gemeldete Gruppe zur Liste der Multicast-Gruppenmitgliedschaften in dem Netzwerk hinzu, in dem er den Report empfangen hat, und setzt den Timer für die Mitgliedschaft auf das [Group Membership Interval] (Gruppenmitgliedschaftsintervall). Wiederholte Reports aktualisieren den Timer. Wenn vor Ablauf dieses Timers keine Reports für eine bestimmte Gruppe empfangen werden, nimmt der Router an, dass die Gruppe keine lokalen Mitglieder hat und dass er keine von außen stammenden Multicasts für diese Gruppe in das angeschlossene Netzwerk weiterleiten muss.

Wenn ein Host einer Multicast-Gruppe beitritt, sollte er sofort einen unaufgeforderten Version 2 Membership Report für diese Gruppe senden, für den Fall, dass er das erste Mitglied dieser Gruppe im Netzwerk ist. Um die Möglichkeit abzudecken, dass der erste Membership Report verloren geht oder beschädigt wird, wird empfohlen, ihn nach kurzen Verzögerungen [Unsolicited Report Interval] (Unaufgefordertes Berichtintervall) ein- oder zweimal zu wiederholen. (Ein einfacher Weg, dies zu erreichen, besteht darin, den ersten Version 2 Membership Report zu senden und dann so zu tun, als ob eine Group-Specific Query für diese Gruppe empfangen wurde, und einen Timer entsprechend zu setzen).

Wenn ein Host eine Multicast-Gruppe verlässt, SOLLTE er, wenn er der letzte Host war, der auf eine Query mit einem Membership Report für diese Gruppe geantwortet hat, eine Leave Group (Gruppe verlassen) Nachricht an die All-Routers-Multicast-Gruppe (224.0.0.2) senden. Wenn er nicht der letzte Host war, der auf eine Query geantwortet hat, KANN er nichts senden, da es ein anderes Mitglied im Subnetz geben muss. Dies ist eine Optimierung zur Reduzierung des Verkehrs; ein Host ohne ausreichenden Speicher, um sich zu merken, ob er der letzte Host war, der geantwortet hat, KANN immer eine Leave Group Nachricht senden, wenn er eine Gruppe verlässt. Router SOLLTEN eine Leave Group Nachricht akzeptieren, die an die verlassene Gruppe gerichtet ist, um Implementierungen einer früheren Version dieses Standards zu berücksichtigen. Leave Group Nachrichten werden an die All-Routers-Gruppe gerichtet, da andere Gruppenmitglieder nicht wissen müssen, dass ein Host die Gruppe verlassen hat, aber es schadet nicht, die Nachricht an die Gruppe zu richten.

Wenn ein Querier eine Leave Group Nachricht für eine Gruppe empfängt, die Gruppenmitglieder auf der Empfangsschnittstelle hat, sendet er [Last Member Query Count] (Letztes Mitglied Abfrageanzahl) Group-Specific Queries alle [Last Member Query Interval] (Letztes Mitglied Abfrageintervall) an die verlassene Gruppe. Diese Group-Specific Queries haben ihre Max Response Time auf [Last Member Query Interval] gesetzt. Wenn nach Ablauf der Antwortzeit der letzten Abfrage keine Reports empfangen werden, nehmen die Router an, dass die Gruppe keine lokalen Mitglieder hat, wie oben. Jeder Übergang von Querier zu Non-Querier wird während dieser Zeit ignoriert; derselbe Router sendet weiterhin die Group-Specific Queries.

Non-Queriers MÜSSEN Leave Group Nachrichten ignorieren, und Queriers SOLLTEN Leave Group Nachrichten ignorieren, für die es keine Gruppenmitglieder auf der Empfangsschnittstelle gibt.

Wenn ein Non-Querier eine Group-Specific Query Nachricht empfängt und sein bestehender Gruppenmitgliedschaftstimer größer ist als [Last Member Query Count] mal die in der Nachricht angegebene Max Response Time, setzt er seinen Gruppenmitgliedschaftstimer auf diesen Wert.