6. LDP-Erweiterungen zur Diff-Serv-Unterstützung
Die MPLS-Architektur setzt kein einzelnes Label-Verteilungsprotokoll voraus. [LDP] definiert das Label Distribution Protocol und seine Verwendung zur Einrichtung von Label Switched Paths (LSPs) in MPLS-Netzwerken. Dieser Abschnitt spezifiziert die Erweiterungen zu LDP, um LSPs einzurichten, die Differentiated Services in MPLS-Netzwerken unterstützen.
In diesem Dokument wird ein neues LDP-TLV definiert:
- das Diff-Serv-TLV
Eine detaillierte Beschreibung dieses TLV wird unten bereitgestellt.
Das neue Diff-Serv-TLV ist in Bezug auf LDP optional. Ein Diff-Serv- fähiger LSR, der E-LSPs unterstützt, die die vorkonfigurierte EXP<-->PHB mapping' in Übereinstimmung mit dieser Spezifikation verwenden, MAY das Diff-Serv-TLV unterstützen. Ein Diff-Serv- fähiger LSR, der E-LSPs unterstützt, die die signalisierte EXP<-->PHB mapping' in Übereinstimmung mit dieser Spezifikation verwenden, MUST das Diff-Serv-TLV unterstützen. Ein Diff-Serv- fähiger LSR, der L-LSPs in Übereinstimmung mit dieser Spezifikation unterstützt, MUST das Diff-Serv-TLV unterstützen.
6.1. Diff-Serv-TLV
Das Diff-Serv-TLV hat die folgenden Formate:
Diff-Serv TLV for an E-LSP:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|U|F| Diff-Serv (0x0901) | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|T| Reserved | MAPnb |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MAP (1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MAP (MAPnb) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
T (1 bit): LSP Type. Dies ist auf 0 für einen E-LSP gesetzt
-
Reserved (27 bits): Dieses Feld ist reserviert. Es muss bei der Übertragung auf null gesetzt und beim Empfang ignoriert werden.
-
MAPnb (4 bits): Zeigt die Anzahl der im DIFFSERV-Objekt enthaltenen MAP-Einträge an. Dies kann auf jeden Wert von 1 bis 8 gesetzt werden.
-
MAP (32 bits): Jeder MAP-Eintrag definiert die Abbildung zwischen einem EXP-Feldwert und einem PHB. Der MAP-Eintrag hat das folgende Format:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | EXP | PHBID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
Reserved (13 bits): Dieses Feld ist reserviert. Es muss bei der Übertragung auf null gesetzt und beim Empfang ignoriert werden.
-
EXP (3 bits): Dieses Feld enthält den Wert des EXP-Feldes für die in diesem MAP-Eintrag definierte `EXP<-->PHB mapping'.
-
PHBID (16 bits): Dieses Feld enthält die PHBID des PHB für die in diesem MAP-Eintrag definierte `EXP<-->PHB mapping'. Die PHBID wird wie in [PHBID] spezifiziert kodiert.
Diff-Serv TLV for an L-LSP:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|U|F| Type = PSC (0x0901) | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|T| Reserved | PSC |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
T (1 bit): LSP Type. Dies ist auf 1 für einen L-LSP gesetzt
-
Reserved (15 bits): Dieses Feld ist reserviert. Es muss bei der Übertragung auf null gesetzt und beim Empfang ignoriert werden.
-
PSC (16 bits): Die PSC zeigt eine PHB Scheduling Class an, die vom LSP unterstützt werden soll. Die PSC wird wie in [PHBID] spezifiziert kodiert.
6.2. Diff-Serv-Statuscodewerte
Die folgenden Werte sind für das Status-Code-Feld des Status-TLV definiert:
Status Code E Status Data
Unexpected Diff-Serv TLV 0 0x01000001
Unsupported PHB 0 0x01000002
Invalid `EXP<-->PHB mapping' 0 0x01000003
Unsupported PSC 0 0x01000004
Per-LSP context allocation failure 0 0x01000005
6.3. Diff-Serv-bezogene LDP-Nachrichten
6.3.1. Label Request Message
Das Format der Label-Request-Nachricht wird wie folgt erweitert, um optional das Diff-Serv-TLV einzuschließen:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0| Label Request (0x0401) | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| FEC TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Diff-Serv TLV (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
6.3.2. Label Mapping Message
Das Format der Label-Mapping-Nachricht wird wie folgt erweitert, um optional das Diff-Serv-TLV einzuschließen:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0| Label Mapping (0x0400) | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| FEC TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Diff-Serv TLV (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
6.3.3. Label Release Message
Das Format der Label-Release-Nachricht wird wie folgt erweitert, um optional das Status-TLV einzuschließen:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0| Label Release (0x0403) | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| FEC TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label TLV (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Status TLV (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
6.3.4. Notification Message
Das Format der Notification-Nachricht wird wie folgt erweitert, um optional das Diff-Serv-TLV einzuschließen:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0| Notification (0x0001) | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Status TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Optional Parameters |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Diff-Serv TLV (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
6.4. Behandlung der Diff-Serv-TLV
6.4.1. Behandlung der Diff-Serv-TLV im Downstream-Unsolicited-Modus
Dieser Abschnitt beschreibt Operationen, wenn der Downstream-Unsolicited-Modus verwendet wird.
Bei der Zuweisung eines Labels für einen E-LSP, der die vorkonfigurierte `EXP<-->PHB mapping' verwenden soll, gibt ein nachgelagerter Diff-Serv-LSR eine Label-Mapping-Nachricht ohne das Diff-Serv-TLV aus.
Bei der Zuweisung eines Labels für einen E-LSP, der eine signalisierte `EXP<-->PHB mapping' verwenden soll, gibt ein nachgelagerter Diff-Serv-LSR eine Label-Mapping-Nachricht mit dem Diff-Serv-TLV für einen E-LSP aus, das einen MAP-Eintrag für jeden auf diesem E-LSP zu unterstützenden EXP-Wert enthält.
Bei der Zuweisung eines Labels für einen L-LSP gibt ein nachgelagerter Diff-Serv-LSR eine Label-Mapping-Nachricht mit dem Diff-Serv-TLV für einen L-LSP aus, das die PHB Scheduling Class (PSC) enthält, die auf diesem L-LSP unterstützt werden soll.
Unter der Annahme, dass der Label-Setup erfolgreich ist, müssen die nachgelagerten und vorgelagerten LSRs:
-
den Diff-Serv-Kontext aktualisieren, der mit den eingerichteten LSPs in ihrer ILM/FTN assoziiert ist, wie in vorherigen Abschnitten spezifiziert (eingehendes und ausgehendes Label),
-
die erforderliche Diff-Serv-Weiterleitungsbehandlung (Scheduling- und Dropping-Verhalten) für diese NHLFE (ausgehendes Label) installieren.
Ein vorgelagerter Diff-Serv-LSR, der eine Label-Mapping-Nachricht mit mehreren Diff-Serv-TLVs empfängt, betrachtet nur das erste als bedeutsam. Der LSR muss die nachfolgenden Diff-Serv-TLV(s) ignorieren und nicht weiterleiten.
Ein vorgelagerter Diff-Serv-LSR, der eine Label-Mapping-Nachricht mit dem Diff-Serv-TLV für einen E-LSP empfängt und das besondere in einem oder mehreren der MAP-Einträge kodierte PHB nicht unterstützt, muss die Abbildung ablehnen, indem er eine Label-Release-Nachricht sendet, die das Label-TLV und das Status-TLV mit einem Status Code von `Unsupported PHB' enthält.
Ein vorgelagerter Diff-Serv-LSR, der eine Label-Mapping-Nachricht mit dem Diff-Serv-TLV für einen E-LSP empfängt und bestimmt, dass die signalisierte EXP<-->PHB mapping' ungültig ist, muss die Abbildung ablehnen, indem er eine Label-Release-Nachricht sendet, die das Label-TLV und das Status-TLV mit einem Status Code von Invalid EXP<-->PHB mapping' enthält. Die im DIFFSERV-Objekt für einen E-LSP signalisierte `EXP<-->PHB mapping' ist ungültig, wenn:
-
das MAPnb-Feld nicht im Bereich 1 bis 8 liegt, oder
-
ein gegebener EXP-Wert in mehr als einem MAP-Eintrag erscheint, oder
-
die PHBID-Kodierung ungültig ist
Ein vorgelagerter Diff-Serv-LSR, der eine Label-Mapping-Nachricht mit dem Diff-Serv-TLV für einen L-LSP empfängt, die einen nicht unterstützten PSC-Wert enthält, muss die Abbildung ablehnen, indem er eine Label-Release-Nachricht sendet, die das Label-TLV und das Status-TLV mit einem Status Code von `Unsupported PSC' enthält.
6.4.2. Behandlung der Diff-Serv-TLV im Downstream-on-Demand-Modus
Dieser Abschnitt beschreibt Operationen, wenn der Downstream-on-Demand-Modus verwendet wird.
Bei der Anforderung eines Labels für einen E-LSP, der die vorkonfigurierte `EXP<-->PHB mapping' verwenden soll, sendet ein vorgelagerter Diff-Serv-LSR eine Label-Request-Nachricht ohne das Diff-Serv-TLV.
Bei der Anforderung eines Labels für einen E-LSP, der eine signalisierte `EXP<-->PHB mapping' verwenden soll, sendet ein vorgelagerter Diff-Serv-LSR eine Label-Request-Nachricht mit dem Diff-Serv-TLV für einen E-LSP, das einen MAP-Eintrag für jeden auf diesem E-LSP zu unterstützenden EXP-Wert enthält.
Bei der Anforderung eines Labels für einen L-LSP sendet ein vorgelagerter Diff-Serv-LSR eine Label-Request-Nachricht mit dem Diff-Serv-TLV für einen L-LSP, das die auf diesem L-LSP zu unterstützende PSC enthält.
Ein nachgelagerter Diff-Serv-LSR, der eine Label-Mapping-Nachricht als Antwort auf eine Label-Request-Nachricht für einen E-LSP oder einen L-LSP sendet, darf kein Diff-Serv-TLV in dieser Label-Mapping-Nachricht einschließen. Unter der Annahme, dass der Label-Setup erfolgreich ist, müssen die nachgelagerten und vorgelagerten LSRs:
-
den Diff-Serv-Kontext aktualisieren, der mit den eingerichteten LSPs in ihrer ILM/FTN assoziiert ist, wie in vorherigen Abschnitten spezifiziert (eingehendes und ausgehendes Label),
-
die erforderliche Diff-Serv-Weiterleitungsbehandlung (Scheduling- und Dropping-Verhalten) für diese NHLFE (ausgehendes Label) installieren.
Ein vorgelagerter Diff-Serv-LSR, der eine Label-Mapping-Nachricht empfängt, die ein Diff-Serv-TLV als Antwort auf seine Label-Request-Nachricht enthält, muss die Label-Abbildung ablehnen, indem er eine Label-Release-Nachricht sendet, die das Label-TLV und das Status-TLV mit einem Status Code von `Unexpected Diff-Serv TLV' enthält.
Ein nachgelagerter Diff-Serv-LSR, der eine Label-Request-Nachricht mit mehreren Diff-Serv-TLVs empfängt, betrachtet nur das erste als bedeutsam. Der LSR muss die nachfolgenden Diff-Serv-TLV(s) ignorieren und nicht weiterleiten.
Ein nachgelagerter Diff-Serv-LSR, der eine Label-Request-Nachricht mit dem Diff-Serv-TLV für einen E-LSP empfängt und das besondere in einem (oder mehreren) der MAP-Einträge kodierte PHB nicht unterstützt, muss die Anforderung ablehnen, indem er eine Notification-Nachricht sendet, die das Status-TLV mit einem Status Code von `Unsupported PHB' enthält.
Ein nachgelagerter Diff-Serv-LSR, der eine Label-Request-Nachricht mit dem Diff-Serv-TLV für einen E-LSP empfängt und bestimmt, dass die signalisierte EXP<-->PHB mapping' ungültig ist, muss die Anforderung ablehnen, indem er eine Notification-Nachricht sendet, die das Status-TLV mit einem Status Code von Invalid EXP<-->PHB mapping' enthält. Die im DIFFSERV-TLV für einen E-LSP signalisierte `EXP<-->PHB mapping' ist ungültig, wenn:
-
das MAPnb-Feld nicht im Bereich 1 bis 8 liegt, oder
-
ein gegebener EXP-Wert in mehr als einem MAP-Eintrag erscheint, oder
-
die PHBID-Kodierung ungültig ist
Ein nachgelagerter Diff-Serv-LSR, der eine Label-Request-Nachricht mit dem Diff-Serv-TLV für einen L-LSP empfängt, die einen nicht unterstützten PSC-Wert enthält, muss die Anforderung ablehnen, indem er eine Notification-Nachricht sendet, die das Status-TLV mit einem Status Code von `Unsupported PSC' enthält.
Ein nachgelagerter Diff-Serv-LSR, der den Diff-Serv-TLV-Typ in einer Label-Request-Nachricht erkennt, aber die erforderlichen pro-LSP-Kontextinformationen nicht zuweisen kann, muss die Anforderung ablehnen und eine Notification-Nachricht senden, die das Status-TLV mit einem Status Code von `Per-LSP context allocation failure' enthält.
Ein nachgelagerter Diff-Serv-LSR, der den Diff-Serv-TLV-Typ in einer Label-Request-Nachricht erkennt und die angeforderte PSC unterstützt, aber die Label-Anforderung aus anderen Gründen nicht erfüllen kann (z. B. kein Label verfügbar), muss eine Notification-Nachricht in Übereinstimmung mit bestehenden LDP-Verfahren [LDP] senden (z. B. mit einem `No Label Resource' Status Code). Diese Notification-Nachricht muss das angeforderte Diff-Serv-TLV einschließen.
6.5. Nicht-Behandlung der Diff-Serv-TLV
Ein LSR, der den Diff-Serv-TLV-Typ nicht erkennt, muss sich beim Empfang einer Label-Request-Nachricht oder einer Label-Mapping-Nachricht, die das Diff-Serv-TLV enthält, in Übereinstimmung mit den in [LDP] spezifizierten Verfahren für ein unbekanntes TLV verhalten, dessen U-Bit und F-Bit auf 0 gesetzt sind, d. h. er muss die Nachricht ignorieren und eine Notification-Nachricht mit `Unknown TLV' Status zurückgeben.
6.6. Bandbreiteninformation
Bandbreiteninformationen können auch zur Einrichtungszeit von E-LSP und L-LSP signalisiert werden, beispielsweise zum Zweck des Traffic Engineering, unter Verwendung des Traffic Parameters TLV wie in [MPLS CR LDP] beschrieben.