6.8.1. State Variables (Zustandsvariablen)
6.8.1. State Variables (Zustandsvariablen)
Eine Mindestmenge an Informationen über eine Sitzung muss verfolgt werden, um die hier beschriebenen Verfahrenselemente zu erreichen. Das Folgende ist ein Satz von Zustandsvariablen, die bei der Beschreibung der BFD-Mechanismen hilfreich sind. Jedes Mittel zur Verfolgung dieses Zustands kann verwendet werden, solange sich das Protokoll wie beschrieben verhält.
Wenn der Text auf die Initialisierung einer Zustandsvariable verweist, findet dies nur zum Zeitpunkt der Erstellung der Sitzung (und der entsprechenden Zustandsvariablen) statt. Die Zustandsvariablen werden anschließend vom Zustandsautomaten manipuliert und werden nie reinitialisiert, selbst wenn die Sitzung fehlschlägt und wiederhergestellt wird.
Sobald der Sitzungszustand erstellt ist und mindestens ein BFD Control Packet vom entfernten Ende empfangen wurde, MUSS er für mindestens eine Detection Time (siehe Abschnitt 6.8.4) nach dem Empfang des letzten BFD Control Packets erhalten bleiben, unabhängig vom Sitzungszustand. Dies bewahrt Timing-Parameter für den Fall, dass die Sitzung fluktuiert. Ein System KANN den Sitzungszustand länger als diese Zeit bewahren. Die Bewahrung oder Zerstörung des Sitzungszustands, wenn keine BFD Control Packets für diese Sitzung vom entfernten System empfangen wurden, liegt außerhalb des Geltungsbereichs dieser Spezifikation.
Alle Zustandsvariablen in dieser Spezifikation haben die Form "bfd.Xx" und sollten nicht mit Feldern verwechselt werden, die in den Protokollpaketen übertragen werden, die immer ausgeschrieben werden, um den Namen in Abschnitt 4 zu entsprechen.
Wichtige Zustandsvariablen
bfd.SessionState
Der wahrgenommene Zustand der Sitzung (Init, Up, Down oder AdminDown). Die genaue Aktion, die ergriffen wird, wenn sich der Sitzungszustand ändert, liegt außerhalb des Geltungsbereichs dieser Spezifikation, obwohl erwartet wird, dass diese Zustandsänderung (insbesondere zu und von Up-Zustand) anderen Komponenten des Systems gemeldet wird. Diese Variable MUSS auf Down initialisiert werden.
bfd.RemoteSessionState
Der Sitzungszustand, der zuletzt vom entfernten System im State (Sta) Feld des BFD Control Packets gemeldet wurde. Diese Variable MUSS auf Down initialisiert werden.
bfd.LocalDiscr
Der lokale Discriminator für diese BFD-Sitzung, der zur eindeutigen Identifizierung verwendet wird. Er MUSS über alle BFD-Sitzungen auf diesem System eindeutig und ungleich Null sein. Er SOLLTE auf einen zufälligen (aber dennoch eindeutigen) Wert gesetzt werden, um die Sicherheit zu verbessern. Der Wert liegt ansonsten außerhalb des Geltungsbereichs dieser Spezifikation.
bfd.RemoteDiscr
Der entfernte Discriminator für diese BFD-Sitzung. Dies ist der vom entfernten System gewählte Discriminator und ist für das lokale System vollständig opak. Dies MUSS auf Null initialisiert werden. Wenn eine Periode einer Detection Time vergeht, ohne dass ein gültiges, authentifiziertes BFD-Paket vom entfernten System empfangen wird, MUSS diese Variable auf Null gesetzt werden.
bfd.LocalDiag
Der Diagnostic Code, der den Grund für die letzte Änderung des lokalen Sitzungszustands angibt. Dies MUSS auf Null (No Diagnostic) initialisiert werden.
bfd.DesiredMinTxInterval
Das minimale Intervall in Mikrosekunden zwischen übertragenen BFD Control Packets, das dieses System zum aktuellen Zeitpunkt verwenden möchte, abzüglich jeglichen angewendeten Jitters (siehe Abschnitt 6.8.2). Das tatsächliche Intervall wird zwischen den beiden Systemen ausgehandelt. Dies MUSS auf einen Wert von mindestens einer Sekunde (1.000.000 Mikrosekunden) gemäß den in Abschnitt 6.8.3 beschriebenen Regeln initialisiert werden. Die Einstellung dieser Variable liegt ansonsten außerhalb des Geltungsbereichs dieser Spezifikation.
bfd.RequiredMinRxInterval
Das minimale Intervall in Mikrosekunden zwischen empfangenen BFD Control Packets, das dieses System benötigt, abzüglich jeglichen vom Sender angewendeten Jitters (siehe Abschnitt 6.8.2). Die Einstellung dieser Variable liegt außerhalb des Geltungsbereichs dieser Spezifikation. Ein Wert von Null bedeutet, dass dieses System keine periodischen BFD Control Packets empfangen möchte. Siehe Abschnitt 6.8.18 für Details.
bfd.RemoteMinRxInterval
Der letzte Wert von Required Min RX Interval, der vom entfernten System in einem BFD Control Packet empfangen wurde. Diese Variable MUSS auf 1 initialisiert werden.
bfd.DemandMode
Auf 1 gesetzt, wenn das lokale System Demand Mode verwenden möchte, oder 0, wenn nicht.
bfd.RemoteDemandMode
Auf 1 gesetzt, wenn das entfernte System Demand Mode verwenden möchte, oder 0, wenn nicht. Dies ist der Wert des Demand (D) Bits im zuletzt empfangenen BFD Control Packet. Diese Variable MUSS auf Null initialisiert werden.
bfd.DetectMult
Der gewünschte Detection Time Multiplier für BFD Control Packets auf dem lokalen System. Das ausgehandelte Control Packet-Übertragungsintervall, multipliziert mit dieser Variable, ergibt die Detection Time für diese Sitzung (wie vom entfernten System gesehen). Diese Variable MUSS eine von Null verschiedene Ganzzahl sein und liegt ansonsten außerhalb des Geltungsbereichs dieser Spezifikation. Siehe Abschnitt 6.8.4 für weitere Informationen.
bfd.AuthType
Der Authentifizierungstyp, der für diese Sitzung verwendet wird, wie in Abschnitt 4.1 definiert, oder Null, wenn keine Authentifizierung verwendet wird.
bfd.RcvAuthSeq
Eine vorzeichenlose 32-Bit-Ganzzahl, die die zuletzt empfangene Sequenznummer für Keyed MD5 oder SHA1 Authentication enthält. Der Anfangswert ist unwichtig.
bfd.XmitAuthSeq
Eine vorzeichenlose 32-Bit-Ganzzahl, die die nächste zu übertragende Sequenznummer für Keyed MD5 oder SHA1 Authentication enthält. Diese Variable MUSS auf einen zufälligen 32-Bit-Wert initialisiert werden.
bfd.AuthSeqKnown
Auf 1 gesetzt, wenn die nächste erwartete Sequenznummer für Keyed MD5 oder SHA1 Authentication bekannt ist, oder 0, wenn sie nicht bekannt ist. Diese Variable MUSS auf Null initialisiert werden.
Diese Variable MUSS auf Null gesetzt werden, nachdem für mindestens die doppelte Detection Time keine Pakete auf dieser Sitzung empfangen wurden. Dies stellt sicher, dass die Sequenznummer resynchronisiert werden kann, wenn das entfernte System neu startet.