5. RSVP-Erweiterung zur Diff-Serv-Unterstützung
Die MPLS-Architektur setzt kein einzelnes Label-Verteilungsprotokoll voraus. [RSVP_MPLS_TE] definiert die Erweiterung zu RSVP zur Einrichtung von LSPs in MPLS-Netzwerken. Dieser Abschnitt spezifiziert die Erweiterungen zu RSVP, über die in [RSVP_MPLS_TE] definierten hinaus, um LSPs einzurichten, die Differentiated Services in MPLS-Netzwerken unterstützen.
5.1. Diff-Serv-bezogene RSVP-Nachrichtenformate
In diesem Dokument wird ein neues RSVP-Objekt definiert: das DIFFSERV-Objekt. Eine detaillierte Beschreibung dieses Objekts wird unten bereitgestellt. Dieses neue Objekt ist auf Path-Nachrichten anwendbar. Diese Spezifikation definiert nur die Verwendung des DIFFSERV-Objekts in Path-Nachrichten, die verwendet werden, um LSP-Tunnel in Übereinstimmung mit [RSVP_MPLS_TE] einzurichten, und die somit ein Session-Objekt mit einem C-Type gleich LSP_TUNNEL_IPv4 und ein LABEL_REQUEST-Objekt enthalten.
In [RSVP_MPLS_TE] definierte Einschränkungen für die Unterstützung der Einrichtung von LSP-Tunneln via RSVP sind auch auf die Einrichtung von Diff-Serv unterstützenden LSP-Tunneln anwendbar: beispielsweise werden nur Unicast-LSPs unterstützt und Multicast-LSPs bleiben weiterer Untersuchung vorbehalten.
Dieses neue DIFFSERV-Objekt ist in Bezug auf RSVP optional, sodass allgemeine RSVP-Implementierungen, die sich nicht mit dem MPLS-LSP-Setup befassen, dieses Objekt nicht unterstützen müssen.
Das DIFFSERV-Objekt ist für die Unterstützung von LSP-Tunneln wie in [RSVP_MPLS_TE] definiert optional. Ein Diff-Serv-fähiger LSR, der E-LSPs mit der vorkonfigurierten EXP<-->PHB mapping' in Übereinstimmung mit dieser Spezifikation unterstützt, MAY das DIFFSERV-Objekt unterstützen. Ein Diff-Serv-fähiger LSR, der E-LSPs mit einer signalisierten EXP<-->PHB mapping' in Übereinstimmung mit dieser Spezifikation unterstützt, MUST das DIFFSERV-Objekt unterstützen. Ein Diff-Serv-fähiger LSR, der L-LSPs in Übereinstimmung mit dieser Spezifikation unterstützt, MUST das DIFFSERV-Objekt unterstützen.
5.1.1. Path-Nachrichtenformat
Das Format der Path-Nachricht ist wie folgt:
<Path Message> ::= <Common Header> [ <INTEGRITY> ]
<SESSION> <RSVP_HOP>
<TIME_VALUES>
[ <EXPLICIT_ROUTE> ]
<LABEL_REQUEST>
[ <SESSION_ATTRIBUTE> ]
[ <DIFFSERV> ]
[ <POLICY_DATA> ... ]
[ <sender descriptor> ]
<sender descriptor> ::= <SENDER_TEMPLATE> <SENDER_TSPEC>
[ <ADSPEC> ]
[ <RECORD_ROUTE> ]
5.2. DIFFSERV-Objekt
Die DIFFSERV-Objektformate sind unten gezeigt. Derzeit gibt es zwei mögliche C_Types. Typ 1 ist ein DIFFSERV-Objekt für einen E-LSP. Typ 2 ist ein DIFFSERV-Objekt für einen L-LSP.
5.2.1. DIFFSERV-Objekt für einen E-LSP:
class = 65, C_Type = 1
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 | MAPnb |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MAP (1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
// ... //
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MAP (MAPnb) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
Reserved (28 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 0 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.
5.2.2. DIFFSERV-Objekt für einen L-LSP:
class = 65, C_Type = 2
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 | PSC |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
Reserved (16 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.
5.3. Behandlung des DIFFSERV-Objekts
Um einen LSP-Tunnel mit RSVP einzurichten, erstellt der Sender eine Path-Nachricht mit einem Session-Typ von LSP_Tunnel_IPv4 und mit einem LABEL_REQUEST-Objekt gemäß [RSVP_MPLS_TE].
Um einen E-LSP-Tunnel mit RSVP einzurichten, der die vorkonfigurierte `EXP<-->PHB mapping' verwendet, erstellt der Sender eine Path-Nachricht:
-
mit einem Session-Typ von LSP_Tunnel_IPv4,
-
mit dem LABEL_REQUEST-Objekt, und
-
ohne das DIFFSERV-Objekt.
Um einen E-LSP-Tunnel mit RSVP einzurichten, der die vorkonfigurierte `EXP<-->PHB mapping' verwendet, MAY der Sender alternativ eine Path-Nachricht erstellen:
-
mit einem Session-Typ von LSP_Tunnel_IPv4,
-
mit dem LABEL_REQUEST-Objekt, und
-
mit dem DIFFSERV-Objekt für einen E-LSP, das keine MAP-Einträge enthält.
Um einen E-LSP-Tunnel mit RSVP einzurichten, der eine signalisierte `EXP<-->PHB mapping' verwendet, erstellt der Sender eine Path-Nachricht:
-
mit einem Session-Typ von LSP_Tunnel_IPv4,
-
mit dem LABEL_REQUEST-Objekt,
-
mit dem DIFFSERV-Objekt für einen E-LSP, das einen MAP-Eintrag für jeden auf diesem E-LSP zu unterstützenden EXP-Wert enthält.
Um mit RSVP einen L-LSP-Tunnel einzurichten, erstellt der Sender eine Path-Nachricht:
-
mit einem Session-Typ von LSP_Tunnel_IPv4,
-
mit dem LABEL_REQUEST-Objekt,
-
mit dem DIFFSERV-Objekt für einen L-LSP, das die PHB Scheduling Class (PSC) enthält, die auf diesem L-LSP unterstützt wird.
Wenn eine Path-Nachricht mehrere DIFFSERV-Objekte enthält, ist nur das erste bedeutsam; nachfolgende DIFFSERV-Objekt(e) müssen ignoriert und nicht weitergeleitet werden.
Jeder LSR entlang des Pfades zeichnet das DIFFSERV-Objekt, wenn vorhanden, in seinem Path-State-Block auf.
Wenn in der Path-Nachricht kein DIFFSERV-Objekt vorhanden ist, SHOULD der LSR dies als Anforderung für einen E-LSP interpretieren, der die vorkonfigurierte `EXP<-->PHB mapping' verwendet. Aus Gründen der Rückwärtskompatibilität mit anderen nicht-Diff-Serv-Quality-of-Service-Optionen, die von [RSVP_MPLS_TE] erlaubt werden, wie Integrated Services Controlled Load oder Guaranteed Services, MAY der LSR jedoch eine konfigurierbare „Override-Option“ unterstützen. Wenn diese „Override-Option“ konfiguriert ist, interpretiert der LSR eine Path-Nachricht ohne Diff-Serv-Objekt als Anforderung für einen LSP mit solcher nicht-Diff-Serv Quality of Service.
Wenn ein DIFFSERV-Objekt für einen E-LSP, das keinen MAP-Eintrag enthält, in der Path-Nachricht vorhanden ist, MUST der LSR dies als Anforderung für einen E-LSP interpretieren, der die vorkonfigurierte EXP<-->PHB mapping' verwendet. Insbesondere erlaubt dies einem LSR mit konfigurierter „Override-Option“, E-LSPs mit vorkonfigurierter EXP<-->PHB mapping' gleichzeitig mit LSPs mit nicht-Diff-Serv Quality of Service zu unterstützen.
Wenn ein DIFFSERV-Objekt für einen E-LSP, das mindestens einen MAP-Eintrag enthält, in der Path-Nachricht vorhanden ist, MUST der LSR dies als Anforderung für einen E-LSP mit signalisierter `EXP<-->PHB mapping' interpretieren.
Wenn ein DIFFSERV-Objekt für einen L-LSP in der Path-Nachricht vorhanden ist, MUST der LSR dies als Anforderung für einen L-LSP interpretieren.
Der Ziel-LSR eines E-LSP oder L-LSP antwortet auf die Path-Nachricht, die das LABEL_REQUEST-Objekt enthält, indem er eine Resv-Nachricht sendet:
-
mit dem LABEL-Objekt
-
ohne ein DIFFSERV-Objekt.
Unter der Annahme, dass die Label-Anforderung akzeptiert und ein Label zugewiesen wird, müssen die Diff-Serv-LSRs (Sender, Ziel, Zwischenknoten):
-
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 LSR, der das DIFFSERV-Objekt erkennt und der eine Path-Nachricht empfängt, die das DIFFSERV-Objekt enthält, aber kein LABEL_REQUEST-Objekt enthält oder die keinen Session-Typ von LSP_Tunnel_IPv4 hat, sendet ein PathErr zum Sender mit dem Fehlercode Diff-Serv Error' und einem Fehlerwert von Unexpected DIFFSERV object'. Diese sind unten in Abschnitt 5.5 definiert.
Ein LSR, der eine Path-Nachricht mit dem DIFFSERV-Objekt für E-LSP empfängt, der das DIFFSERV-Objekt erkennt, aber das besondere in einem oder mehreren der MAP-Einträge kodierte PHB nicht unterstützt, sendet ein PathErr zum Sender mit dem Fehlercode Diff-Serv Error' und einem Fehlerwert von Unsupported PHB'. Diese sind unten in Abschnitt 5.5 definiert.
Ein LSR, der eine Path-Nachricht mit dem DIFFSERV-Objekt für E-LSP empfängt, der das DIFFSERV-Objekt erkennt, aber bestimmt, dass die signalisierte EXP<-->PHB mapping' ungültig ist, sendet ein PathErr zum Sender mit dem Fehlercode Diff-Serv Error' und einem Fehlerwert von Invalid EXP<-->PHB mapping'. Diese sind unten in Abschnitt 5.5 definiert. Die im DIFFSERV-Objekt für einen E-LSP signalisierte EXP<-->PHB mapping' ist ungültig, wenn:
-
das MAPnb-Feld nicht im Bereich 0 bis 8 liegt, oder
-
ein gegebener EXP-Wert in mehr als einem MAP-Eintrag erscheint, oder
-
die PHBID-Kodierung ungültig ist.
Ein LSR, der eine Path-Nachricht mit dem DIFFSERV-Objekt für L-LSP empfängt, der das DIFFSERV-Objekt erkennt, aber die besondere im PSC-Feld kodierte PSC nicht unterstützt, sendet ein PathErr zum Sender mit dem Fehlercode Diff-Serv Error' und einem Fehlerwert von Unsupported PSC'. Diese sind unten in Abschnitt 5.5 definiert.
Ein LSR, der eine Path-Nachricht mit dem DIFFSERV-Objekt empfängt, der das DIFFSERV-Objekt erkennt, aber den erforderlichen pro-LSP-Diff-Serv-Kontext nicht zuweisen kann, sendet ein PathErr mit dem Fehlercode "Diff-Serv Error" und dem Fehlerwert "Per-LSP context allocation failure". Diese sind unten in Abschnitt 5.5 definiert.
Ein Diff-Serv-LSR MUST die Situationen behandeln, in denen die Label-Anforderung aus anderen als den in diesem Abschnitt bereits erörterten Gründen nicht akzeptiert werden kann, in Übereinstimmung mit [RSVP_MPLS_TE] (z. B. Reservierung durch Zulassungskontrolle abgelehnt, ein Label kann nicht assoziiert werden).
5.4. Nicht-Unterstützung des DIFFSERV-Objekts
Ein LSR, der die DIFFSERV-Objekt-Class-Num nicht erkennt, MUST sich in Übereinstimmung mit den in [RSVP] spezifizierten Verfahren für eine unbekannte Class-Num verhalten, deren Format 0bbbbbbb ist, d. h. er muss ein PathErr mit dem Fehlercode `Unknown object class' zum Sender senden.
Ein LSR, der die DIFFSERV-Objekt-Class-Num erkennt, aber den DIFFSERV-Objekt-C-Type nicht erkennt, muss sich in Übereinstimmung mit den in [RSVP] spezifizierten Verfahren für einen unbekannten C-Type verhalten, d. h. er muss ein PathErr mit dem Fehlercode `Unknown object C-Type' zum Sender senden.
In beiden Situationen führt dies dazu, dass der Pfad-Setup fehlschlägt. Der Sender sollte das Management benachrichtigen, dass ein L-LSP nicht eingerichtet werden kann, und sollte möglicherweise Maßnahmen ergreifen, um die LSP-Einrichtung ohne das DIFFSERV-Objekt erneut zu versuchen (z. B. Versuch, E-LSPs mit vorkonfigurierter `EXP<-->PHB mapping' als Fallback-Strategie zu verwenden).
5.5. Fehlercodes für Diff-Serv
In den oben beschriebenen Verfahren müssen bestimmte Fehler als Diff-Serv Error' gemeldet werden. Der Wert des Fehlercodes Diff-Serv Error' ist 27.
Das Folgende definiert Fehlerwerte für den Diff-Serv-Fehler:
Value Error
1 Unexpected DIFFSERV object
2 Unsupported PHB
3 Invalid `EXP<-->PHB mapping'
4 Unsupported PSC
5 Per-LSP context allocation failure
5.6. Intserv-Diensttyp
Sowohl E-LSPs als auch L-LSPs können mit oder ohne Bandbreitenreservierung eingerichtet werden.
Wie in [RSVP_MPLS_TE] spezifiziert, wird zur Einrichtung eines E-LSP oder eines L-LSP mit Bandbreitenreservierung der Controlled-Load-Dienst von Int-Serv (oder möglicherweise Guaranteed Service) verwendet, und die Bandbreite wird im SENDER_TSPEC (bzw. FLOWSPEC) der Path- (bzw. Resv-)Nachricht signalisiert.
Wie in [RSVP_MPLS_TE] spezifiziert, wird zur Einrichtung eines E-LSP oder eines L-LSP ohne Bandbreitenreservierung der in [NULL] spezifizierte Null Service verwendet.
Man beachte, dass diese Spezifikation die Verwendung von E-LSPs und L-LSPs nur zur Unterstützung des Diff-Serv-Dienstes definiert. Unabhängig vom Intserv-Dienst (Controlled Load, Null Service, Guaranteed Service, ...) und unabhängig davon, ob die Reservierung mit oder ohne Bandbreitenreservierung erfolgt, sind E-LSPs und L-LSPs hier zur Unterstützung von Diff-Serv-Diensten definiert. Die Unterstützung von Int-Serv-Diensten über ein MPLS-Diff-Serv-Backbone liegt außerhalb des Geltungsbereichs dieser Spezifikation.
Man beachte auch, dass diese Spezifikation sich nicht mit dem in [DCLASS] definierten DCLASS-Objekt befasst, da dieses Objekt Informationen über DSCP-Werte übermittelt, die innerhalb des MPLS-Netzwerks nicht relevant sind.