Zum Hauptinhalt springen

A.2. Gemeinsame Labelverteilungsverfahren

Dieser Abschnitt spezifiziert Hilfsprozeduren, die von den Algorithmen zur Behandlung von Labelverteilungsereignissen verwendet werden.

A.2.1. Send_Label​

Zusammenfassung:

Die Prozedur Send_Label weist, wenn möglich, ein Label für eine FEC für einen LDP-Peer zu und sendet eine Label-Abbildung für die FEC an den Peer. Wenn der LSR nicht in der Lage ist, das Label zuzuweisen, und wenn er eine ausstehende Label-Anforderung vom Peer hat, sendet er dem LDP-Peer eine No Label Resources-Benachrichtigung.

Parameter:

  • Peer. Der LDP-Peer, an den die Label-Abbildung zu senden ist.

  • FEC. Die FEC, für die eine Label-Abbildung zu senden ist.

  • Attributes. Attribute, die mit der Label-Abbildung einzuschließen sind.

Zusätzlicher Kontext:

  • LSR. Der LSR, der die Prozedur ausführt.

  • Label. Das zugewiesene und an den Peer gesendete Label.

Algorithmus:

   SL.1   Hat der LSR ein Label zuzuweisen?
Wenn nicht, gehe zu SL.9.

SL.2 Label zuweisen und es an die FEC binden.

SL.3 Label zur Weiterleitungs-/Vermittlungsnutzung installieren.

SL.4 Prozedur Send_Message (Peer, Label Mapping, FEC,
Label, Attributes) ausführen.

SL.5 Aufzeichnen, dass eine Label-Abbildung für die FEC mit Label
und Attributes an den Peer gesendet wurde.

SL.6 Hat der LSR eine Aufzeichnung einer als ausstehend markierten
FEC-Label-Anforderung vom Peer?
Wenn nicht, gehe zu SL.8.

SL.7 Aufzeichnung der ausstehenden Label-Anforderung für die FEC
vom Peer löschen.

SL.8 Erfolg zurückgeben.

SL.9 Hat der LSR eine als ausstehend markierte Label-Anforderung
für die FEC vom Peer?
Wenn nicht, gehe zu SL.13.

SL.10 Prozedur Send_Notification (Peer, No Label
Resources) ausführen.

SL.11 Aufzeichnung der ausstehenden Label-Anforderung für die FEC
vom Peer löschen.

SL.12 Aufzeichnen, dass eine No Label Resources-Benachrichtigung an
den Peer gesendet wurde.
Gehe zu SL.14.

SL.13 Aufzeichnen, dass eine Label-Abbildung für die FEC und
Attributes für den Peer benötigt wird, aber keine
Label-Ressourcen verfügbar sind. (Siehe Anmerkung 1.)

SL.14 Fehler zurückgeben.

Anmerkung:

  1. SL.13 behandelt den Fall der Downstream Unsolicited-Labelverteilung, wenn der LSR nicht in der Lage ist, ein Label für eine FEC zuzuweisen, um es an einen Peer zu senden.

A.2.2. Send_Label_Request​

Zusammenfassung:

Ein LSR verwendet die Prozedur Send_Label_Request, um eine Anforderung für ein Label für eine FEC an einen LDP-Peer zu senden, wenn dies derzeit zulässig ist.

Parameter:

  • Peer. Der LDP-Peer, an den die Label-Anforderung zu senden ist.

  • FEC. Die FEC, für die eine Label-Anforderung zu senden ist.

  • Attributes. Attribute, die in die Label-Anforderung aufzunehmen sind, z. B. Hop Count, Path Vector.

Zusätzlicher Kontext:

  • LSR. Der LSR, der die Prozedur ausführt.

Algorithmus:

   SLRq.1  Wurde eine Label-Anforderung für die FEC zuvor an den Peer
gesendet und ist sie als ausstehend markiert?
Wenn ja, Erfolg zurückgeben. (Siehe Anmerkung 1.)

SLRq.2 Ist die Statusaufzeichnung, die angibt, dass es in Ordnung
ist, Label-Anforderungen an den Peer zu senden, gesetzt?
Wenn nicht, gehe zu SLRq.6

SLRq.3 Prozedur Send_Message (Peer, Label Request, FEC,
Attributes) ausführen.

SLRq.4 Aufzeichnen, dass eine Label-Anforderung für die FEC an den
Peer gesendet wurde, und sie als ausstehend markieren.

SLRq.5 Erfolg zurückgeben.

SLRq.6 Die Label-Anforderung zurückstellen, indem aufgezeichnet
wird, dass eine Label-Abbildung für die FEC und Attributes
vom Peer benötigt wird, aber keine Label-Ressourcen
verfügbar sind.

SLRq.7 Fehler zurückgeben.

Anmerkung:

  1. Wenn der LSR ein nicht zusammenführender (non-merging) LSR ist, muss er zwischen Versuchen, Label-Anforderungen für eine FEC zu senden, die durch verschiedene vorgelagerte LDP-Peers ausgelöst wurden, und doppelten Anforderungen unterscheiden. Diese Prozedur wird keine doppelte Label-Anforderung senden.

A.2.3. Send_Label_Withdraw​

Zusammenfassung:

Ein LSR verwendet die Prozedur Send_Label_Withdraw, um ein Label für eine FEC von einem LDP-Peer zu entziehen. Dazu sendet der LSR eine Label Withdraw-Nachricht an den Peer.

Parameter:

  • Peer. Der LDP-Peer, an den der Label-Entzug zu senden ist.

  • FEC. Die FEC, für die ein Label entzogen wird.

  • Label. Das entzogene Label.

Zusätzlicher Kontext:

  • LSR. Der LSR, der die Prozedur ausführt.

Algorithmus:

   SWd.1  Prozedur Send_Message (Peer, Label Withdraw, FEC,
Label) ausführen.

SWd.2 Aufzeichnen, dass ein Label-Entzug für die FEC an den Peer
gesendet wurde, und ihn als ausstehend markieren.

A.2.4. Send_Notification​

Zusammenfassung:

Ein LSR verwendet die Prozedur Send_Notification, um einem LDP-Peer eine Notification-Nachricht zu senden.

Parameter:

  • Peer. Der LDP-Peer, an den die Notification-Nachricht zu senden ist.

  • Status. Der in die Notification-Nachricht aufzunehmende Status Code.

Zusätzlicher Kontext:

Keiner.

Algorithmus:

   SNt.1  Prozedur Send_Message (Peer, Notification, Status) ausführen

A.2.5. Send_Message​

Zusammenfassung:

Ein LSR verwendet die Prozedur Send_Message, um einem LDP-Peer eine LDP-Nachricht zu senden.

Parameter:

  • Peer. Der LDP-Peer, an den die Nachricht zu senden ist.

  • Message Type. Der Typ der zu sendenden Nachricht.

  • Weiterer Nachrichteninhalt . . . .

Zusätzlicher Kontext:

Keiner.

Algorithmus:

Diese Prozedur ist das Mittel, mit dem ein LSR eine LDP-Nachricht des angegebenen Typs an den angegebenen LDP-Peer sendet.

A.2.6. Check_Received_Attributes​

Zusammenfassung:

Die in einer Label Mapping- oder Label Request-Nachricht empfangenen Attribute prüfen. Wenn die Attribute eine Hop-Zahl oder einen Path Vector enthalten, eine Schleifenerkennungsprüfung durchführen. Wenn eine Schleife erkannt wird, bewirken, dass eine Loop Detected Notification-Nachricht an MsgSource gesendet wird.

Parameter:

  • MsgSource. Der LDP-Peer, der die Nachricht gesendet hat.

  • MsgType. Der Typ der empfangenen Nachricht.

  • RAttributes. Die Attribute in der Nachricht.

Zusätzlicher Kontext:

  • LSR Id. Die eindeutige LSR Id dieses LSR.

  • Hop Count. Die gegebenenfalls in den empfangenen Attributen enthaltene Hop-Zahl.

  • Path Vector. Der gegebenenfalls in den empfangenen Attributen enthaltene Path Vector.

Algorithmus:

   CRa.1   Enthalten die RAttributes eine Hop-Zahl?
Wenn nicht, gehe zu CRa.5.

CRa.2 Überschreitet die Hop-Zahl die maximal zulässige Hop-Zahl?
Wenn ja, gehe zu CRa.6.

CRa.3 Enthalten die RAttributes einen Path Vector?
Wenn nicht, gehe zu CRa.5.

CRa.4 Enthält der Path Vector die LSR Id? ODER Überschreitet die
Länge des Path Vector die maximal zulässige Länge?
Wenn ja, gehe zu CRa.6

CRa.5 No Loop Detected zurückgeben.

CRa.6 Ist MsgType LabelMapping?
Wenn ja, gehe zu CRa.8. (Siehe Anmerkung 1.)

CRa.7 Prozedur Send_Notification (MsgSource, Loop
Detected) ausführen.

CRa.8 Loop Detected zurückgeben.

CRa.9 Fertig.

Anmerkung:

  1. Wenn die geprüften Attribute in einer Label Mapping-Nachricht empfangen wurden, sendet der LSR die Loop Detected-Benachrichtigung in einem Status Code TLV in einer Label Release-Nachricht. (Siehe den Abschnitt "Receive Label Mapping".)

A.2.7. Prepare_Label_Request_Attributes​

Zusammenfassung:

Diese Prozedur wird immer dann verwendet, wenn eine Label Request an einen Peer gesendet werden soll, um die gegebenenfalls in die Nachricht aufzunehmende Hop-Zahl und den Path Vector zu berechnen.

Parameter:

  • Peer. Der LDP-Peer, an den die Nachricht zu senden ist.

  • FEC. Die FEC, für die eine Label-Anforderung zu senden ist.

  • RAttributes. Die Attribute, die dieser LSR der LSP für die FEC zuordnet.

  • SAttributes. Die in die Label Request-Nachricht aufzunehmenden Attribute.

Zusätzlicher Kontext:

  • LSR Id. Die eindeutige LSR Id dieses LSR.

Algorithmus:

   PRqA.1  Ist eine Hop-Zahl für diesen Peer erforderlich? (Siehe
Anmerkung 1.) ODER Enthalten die RAttributes eine Hop-Zahl?
ODER Ist die Schleifenerkennung am LSR konfiguriert?
Wenn nicht, gehe zu PRqA.14.

PRqA.2 Ist der LSR der Ingress für die FEC?
Wenn nicht, gehe zu PRqA.6.

PRqA.3 Eine Hop-Zahl von 1 in die SAttributes aufnehmen.

PRqA.4 Ist die Schleifenerkennung am LSR konfiguriert? Wenn nicht,
gehe zu PRqA.14.

PRqA.5 Ist der LSR merge-fähig?
Wenn ja, gehe zu PRqA.14.
Wenn nicht, gehe zu PRqA.13.

PRqA.6 Enthalten die RAttributes eine Hop-Zahl?
Wenn nicht, gehe zu PRqA.8.

PRqA.7 Die Hop-Zahl der RAttributes erhöhen und die resultierende
Hop-Zahl in die SAttributes kopieren. (Siehe Anmerkung 2.)
Gehe zu PRqA.9.

PRqA.8 Eine Hop-Zahl von unbekannt (0) in die SAttributes
aufnehmen.

PRqA.9 Ist die Schleifenerkennung am LSR konfiguriert?
Wenn nicht, gehe zu PRqA.14.

PRqA.10 Haben die RAttributes einen Path Vector?
Wenn ja, gehe zu PRqA.12.

PRqA.11 Ist der LSR merge-fähig?
Wenn ja, gehe zu PRqA.14.
Wenn nicht, gehe zu PRqA.13.

PRqA.12 Die LSR Id an den Anfang des Path Vector aus den RAttributes
hinzufügen und den resultierenden Path Vector in die
SAttributes kopieren.
Gehe zu PRqA.14.

PRqA.13 Einen Path Vector der Länge 1, der die LSR Id enthält, in die
SAttributes aufnehmen.

PRqA.14 Fertig.

Anmerkungen:

  1. Die Verbindung zum Peer kann erfordern, dass die Hop-Zahl in Label Request-Nachrichten enthalten ist; siehe beispielsweise [RFC3035] und [RFC3034].

  2. Für die Hop-Zahl-Arithmetik gilt: unbekannt + 1 = unbekannt.

A.2.8. Prepare_Label_Mapping_Attributes​

Zusammenfassung:

Diese Prozedur wird immer dann verwendet, wenn eine Label Mapping an einen Peer gesendet werden soll, um die gegebenenfalls in die Nachricht aufzunehmende Hop-Zahl und den Path Vector zu berechnen.

Parameter:

  • Peer. Der LDP-Peer, an den die Nachricht zu senden ist.

  • FEC. Die FEC, für die eine Label-Anforderung zu senden ist.

  • RAttributes. Die Attribute, die dieser LSR der LSP für die FEC zuordnet.

  • SAttributes. Die in die Label Mapping-Nachricht aufzunehmenden Attribute.

  • IsPropagating. Der LSR sendet die Label Mapping-Nachricht, um eine vom FEC-Next-Hop empfangene weiterzugeben.

  • PrevHopCount. Die gegebenenfalls von diesem LSR der LSP für die FEC zugeordnete Hop-Zahl.

Zusätzlicher Kontext:

  • LSR Id. Die eindeutige LSR Id dieses LSR.

Algorithmus:

   PMpA.1  Enthalten die RAttributes unbekannte TLVs?
           Wenn nicht, gehe zu PMpA.4.

   PMpA.2  Erfordern die Einstellungen der U- und F-Bits die
           Weiterleitung dieser TLVs?
           Wenn nicht, gehe zu PMpA.4.

   PMpA.3  Die unbekannten TLVs in die SAttributes kopieren.

   PMpA.4  Ist eine Hop-Zahl für diesen Peer erforderlich? (siehe
           Anmerkung 1.) ODER Enthalten die RAttributes eine Hop-Zahl?
           ODER Ist die Schleifenerkennung am LSR konfiguriert?
           Wenn nicht, gehe zu PMpA.24.

   PMpA.5  Ist der LSR der Egress für die FEC?
           Wenn nicht, gehe zu PMpA.7.

   PMpA.6  Eine Hop-Zahl von 1 in die SAttributes aufnehmen. Gehe zu
           PMpA.24.

   PMpA.7  Haben die RAttributes eine Hop-Zahl?
           Wenn nicht, gehe zu PMpA.11.

   PMpA.8  Ist der LSR Mitglied der Randmenge für eine LSR-Domäne,
           deren LSRs keine TTL-Dekrementierung durchführen, UND
           befindet sich der Peer in dieser Domäne? (Siehe Anmerkung 2.)
           Wenn nicht, gehe zu PMpA.10.

   PMpA.9  Eine Hop-Zahl von 1 in die SAttributes aufnehmen. Gehe zu
           PMpA.12.

   PMpA.10 Die Hop-Zahl der RAttributes erhöhen und die resultierende
           Hop-Zahl in die SAttributes kopieren. (Siehe Anmerkung 2.)
           Gehe zu PMpA.12.

   PMpA.11 Eine Hop-Zahl von unbekannt (0) in die SAttributes
           aufnehmen.

   PMpA.12 Ist die Schleifenerkennung am LSR konfiguriert?
           Wenn nicht, gehe zu PMpA.24.

   PMpA.13 Haben die RAttributes einen Path Vector?
           Wenn ja, gehe zu PMpA.22.

   PMpA.14 Gibt der LSR eine empfangene Label Mapping weiter?
           Wenn nicht, gehe zu PMpA.23.

   PMpA.15 Unterstützt der LSR das Zusammenführen (merging)?
           Wenn nicht, gehe zu PMpA.17.

   PMpA.16 Hat der LSR zuvor eine Label Mapping für die FEC an den Peer
           gesendet?
           Wenn nicht, gehe zu PMpA.23.

   PMpA.17 Enthalten die RAttributes eine Hop-Zahl?
           Wenn nicht, gehe zu PMpA.24.

   PMpA.18 Ist die Hop-Zahl in den RAttributes unbekannt (0)?
           Wenn ja, gehe zu PMpA.23.

   PMpA.19 Hat der LSR zuvor eine Label Mapping für die FEC an den Peer
           gesendet?
           Wenn nicht, gehe zu PMpA.24.

   PMpA.20 Unterscheidet sich die Hop-Zahl in den RAttributes von
           PrevHopCount?
           Wenn nicht, gehe zu PMpA.24.

   PMpA.21 Ist die Hop-Zahl in den RAttributes > PrevHopCount? ODER Ist
           PrevHopCount unbekannt (0)?
           Wenn nicht, gehe zu PMpA.24.

   PMpA.22 Die LSR Id an den Anfang des Path Vector aus den RAttributes
           hinzufügen und den resultierenden Path Vector in die
           SAttributes kopieren.
           Gehe zu PMpA.24.

   PMpA.23 Einen Path Vector der Länge 1, der die LSR Id enthält, in die
           SAttributes aufnehmen.

   PMpA.24 Fertig.

Anmerkungen:

  1. Die Verbindung zum Peer kann erfordern, dass die Hop-Zahl in Label Mapping-Nachrichten enthalten ist; siehe beispielsweise [RFC3035] und [RFC3034].

  2. Wenn der LSR am Rand einer Cloud von LSRs liegt, die keine TTL-Dekrementierung durchführen, und er die Label Mapping-Nachricht vorgelagert in die Cloud weiterleitet, setzt er die Hop-Zahl auf 1, damit die Hop-Zahl über die Cloud korrekt berechnet wird. Dies stellt ein ordnungsgemäßes TTL-Management für Pakete sicher, die über den Teil der LSP weitergeleitet werden, der die Cloud durchläuft.

  3. Für die Hop-Zahl-Arithmetik gilt: unbekannt + 1 = unbekannt.