Zum Hauptinhalt springen

4.1. PIM Protocol State (PIM-Protokollzustand)

Dieser Abschnitt spezifiziert den gesamten Protokollzustand, den eine PIM-Implementierung aufrechterhalten sollte, um korrekt zu funktionieren. Wir bezeichnen diesen Zustand als Bauminformationsbasis (Tree Information Base, TIB), da sie den Zustand aller Multicast-Verteilungsbäume auf diesem Router enthält.

Obwohl wir den zu behaltenden Zustand präzise spezifizieren, bedeutet dies nicht, dass eine Implementierung von PIM-SM den Zustand in dieser Form halten muss. Dies ist tatsächlich eine abstrakte Zustandsdefinition, die erforderlich ist, um das Verhalten des Routers präzise zu spezifizieren.

Wir teilen den TIB-Zustand in drei Abschnitte:

(*,G) Zustand: Zustand, der den RP-Baum für G aufrechterhält.

(S,G) Zustand: Zustand, der einen quellenspezifischen Baum für Quelle S und Gruppe G aufrechterhält.

(S,G,rpt) Zustand: Zustand, der quellenspezifische Informationen über Quelle S auf dem RP-Baum für G aufrechterhält.

4.1.1. General-Purpose State (Allzweckzustand)

Für jede Schnittstelle hält ein Router folgenden Zustand:

Zustand pro Schnittstelle:

  • Hello-Timer (Hello Timer, HT): Wird verwendet, um das Senden der nächsten Hello-Nachricht auszulösen
  • Nachbarzustand: Für jeden Nachbarn werden Nachbaradresse, Generations-ID, Hello-Haltezeit und andere Informationen gepflegt
hinweis

Für detaillierte Zustandsfelddefinitionen, Timer-Werte und Zustandsmaschinenübergänge siehe Abschnitt 4.1.1 der RFC 7761 für die vollständige Spezifikation.

4.1.2. (,G) State ((,G) Zustand)

Für jede Gruppe G hält ein Router folgenden Zustand:

Zustand pro Schnittstelle:

  • Lokale Mitgliedschaft (Local Membership): Zustand ist "NoInfo" oder "Include"
  • PIM (*,G) Join/Prune-Zustand: Umfasst Zustand (NoInfo, Join, Prune-Pending), Prune-Pending-Timer und Join/Prune-Ablauf-Timer
  • (*,G) Assert Winner-Zustand: Umfasst Zustand (NoInfo, I lost Assert, I won Assert), Assert-Timer und Gewinnerinformationen

Nicht schnittstellenspezifischer Zustand:

  • Upstream-(*,G) Join/Prune-Zustand: Zustand ist "NotJoined(,G)" oder "Joined(,G)"
  • Upstream-Join/Prune-Timer (JT)
  • Zuletzt verwendeter RP
  • Zuletzt verwendeter RPF-Nachbar zum RP
hinweis

Für detaillierte Zustandsfelddefinitionen, Zustandsübergangsregeln und Makrodefinitionen siehe Abschnitt 4.1.2 der RFC 7761 für die vollständige Spezifikation.

4.1.3. (S,G) State ((S,G) Zustand)

Für jedes Quell-/Gruppenpaar (S,G) hält ein Router folgenden Zustand:

Zustand pro Schnittstelle:

  • Lokale Mitgliedschaft: Zustand ist "NoInfo" oder "Include"
  • PIM (S,G) Join/Prune-Zustand: Umfasst Zustand und Timer
  • (S,G) Assert Winner-Zustand: Umfasst Zustand, Timer und Gewinnerinformationen

Nicht schnittstellenspezifischer Zustand:

  • Upstream-(S,G) Join/Prune-Zustand
  • Upstream-(S,G) Join/Prune-Timer
  • Zuletzt verwendeter RPF-Nachbar zu S
  • SPTbit: Zeigt an, ob (S,G)-Zustand aktiv ist
  • (S,G) Keepalive-Timer (KAT)

Zusätzlicher (S,G)-Zustand am DR:

  • Register-Zustand: Join, Prune, Join-Pending oder NoInfo
  • Register-Stop-Timer (RST)
hinweis

Für detaillierte Zustandsfelddefinitionen, SPTbit-Verwendung und Keepalive-Timer-Funktionen siehe Abschnitt 4.1.3 der RFC 7761 für die vollständige Spezifikation.

4.1.4. (S,G,rpt) State ((S,G,rpt) Zustand)

Für jedes Quell-/Gruppenpaar (S,G), für das der Router auch (*,G)-Zustand hat, hält er auch folgenden Zustand:

Zustand pro Schnittstelle:

  • Lokale Mitgliedschaft: Zustand ist "NoInfo" oder "Exclude"
  • PIM (S,G,rpt) Join/Prune-Zustand: Umfasst Zustand (NoInfo, Pruned, Prune-Pending) und Timer

Nicht schnittstellenspezifischer Zustand:

  • Upstream-(S,G,rpt) Join/Prune-Zustand: RPTNotJoined(G), NotPruned(S,G,rpt) oder Pruned(S,G,rpt)
  • Überschreiben-Timer (Override Timer, OT)
hinweis

Für detaillierte Zustandsfelddefinitionen und Zustandsmaschinenverhalten siehe Abschnitt 4.1.4 der RFC 7761 für die vollständige Spezifikation.

4.1.5. State Summarization Macros (Zustandszusammenfassungsmakros)

Die PIM-Spezifikation verwendet eine Reihe von Makros, um den Zustand für die Bestimmung des Weiterleitungsverhaltens und der Nachrichtengenerierung zusammenzufassen. Diese Makros umfassen:

  • immediate_olist(*,G): Sofortige ausgehende Schnittstellenliste
  • inherited_olist(S,G): Geerbte ausgehende Schnittstellenliste
  • joins(*,G): Ob Join-Zustand (*,G) auf einer Schnittstelle existiert
  • pim_include(*,G): Ob eine Schnittstelle lokale Mitgliedschaft hat
  • lost_assert(*,G): Ob ein Assert auf einer Schnittstelle verloren wurde
  • Und andere Makros zur Berechnung von Weiterleitungs- und Join/Prune-Verhalten
hinweis

Für vollständige Definitionen und Verwendungsszenarien aller Zustandszusammenfassungsmakros siehe Abschnitt 4.1.5 der RFC 7761 für detaillierte Spezifikationen. Diese Makros sind entscheidend für das Verständnis des PIM-Weiterleitungs- und Kontrollebenenverhaltens.