6. Estensioni LDP per il supporto Diff-Serv
L'architettura MPLS non assume un singolo protocollo di distribuzione delle etichette. [LDP] definisce il Label Distribution Protocol e il suo uso per l'establishment di label switched path (LSP) nelle reti MPLS. Questa sezione specifica le estensioni a LDP per stabilire LSP che supportano i Differentiated Services nelle reti MPLS.
In questo documento è definito un nuovo LDP TLV:
- il Diff-Serv TLV
La descrizione dettagliata di questo TLV è fornita più avanti.
Il nuovo Diff-Serv TLV è opzionale rispetto a LDP. Un LSR capace di Diff-Serv che supporta E-LSP che usano il mapping EXP<-->PHB' preconfigurato in conformità con questa specifica MAY supportare il Diff-Serv TLV. Un LSR capace di Diff-Serv che supporta E-LSP che usano il mapping EXP<-->PHB' segnalato in conformità con questa specifica MUST supportare il Diff-Serv TLV. Un LSR capace di Diff-Serv che supporta L-LSP in conformità con questa specifica MUST supportare il Diff-Serv TLV.
6.1. Diff-Serv TLV
Il Diff-Serv TLV ha i seguenti formati:
Diff-Serv TLV per un 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): Tipo di LSP. Questo è impostato a 0 per un E-LSP
-
Reserved (27 bits): Questo campo è riservato. Deve essere impostato a zero in trasmissione e deve essere ignorato in ricezione.
-
MAPnb (4 bits): Indica il numero di voci MAP incluse nell'oggetto DIFFSERV. Questo può essere impostato a qualsiasi valore da 1 a 8.
-
MAP (32 bits): Ciascuna voce MAP definisce il mapping tra un valore del campo EXP e un PHB. La voce MAP ha il seguente formato:
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): Questo campo è riservato. Deve essere impostato a zero in trasmissione e deve essere ignorato in ricezione.
-
EXP (3 bits): Questo campo contiene il valore del campo EXP per il mapping `EXP<-->PHB' definito in questa voce MAP.
-
PHBID (16 bits): Questo campo contiene il PHBID del PHB per il mapping `EXP<-->PHB' definito in questa voce MAP. Il PHBID è codificato come specificato in [PHBID].
Diff-Serv TLV per un 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): Tipo di LSP. Questo è impostato a 1 per un L-LSP
-
Reserved (15 bits): Questo campo è riservato. Deve essere impostato a zero in trasmissione e deve essere ignorato in ricezione.
-
PSC (16 bits): Il PSC indica una PHB Scheduling Class da supportare dall'LSP. Il PSC è codificato come specificato in [PHBID].
6.2. Valori del Status Code Diff-Serv
I seguenti valori sono definiti per il campo Status Code del Status TLV:
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. Messaggi LDP correlati a Diff-Serv
6.3.1. Messaggio Label Request
Il formato del messaggio Label Request è esteso come segue, per includere opzionalmente il Diff-Serv TLV:
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. Messaggio Label Mapping
Il formato del messaggio Label Mapping è esteso come segue, per includere opzionalmente il Diff-Serv TLV:
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. Messaggio Label Release
Il formato del messaggio Label Release è esteso come segue, per includere opzionalmente lo Status TLV:
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. Messaggio Notification
Il formato del messaggio Notification è esteso come segue, per includere opzionalmente il Diff-Serv TLV:
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. Gestione del Diff-Serv TLV
6.4.1. Gestione del Diff-Serv TLV in modalità Downstream Unsolicited
Questa sezione descrive le operazioni quando si usa la modalità Downstream Unsolicited.
Quando si alloca un'etichetta per un E-LSP che deve usare il mapping `EXP<-->PHB' preconfigurato, un LSR Diff-Serv a valle emette un messaggio Label Mapping senza il Diff-Serv TLV.
Quando si alloca un'etichetta per un E-LSP che deve usare un mapping `EXP<-->PHB' segnalato, un LSR Diff-Serv a valle emette un messaggio Label Mapping con il Diff-Serv TLV per un E-LSP che contiene una voce MAP per ciascun valore EXP da supportare su questo E-LSP.
Quando si alloca un'etichetta per un L-LSP, un LSR Diff-Serv a valle emette un messaggio Label Mapping con il Diff-Serv TLV per un L-LSP che contiene la PHB Scheduling Class (PSC) da supportare su questo L-LSP.
Assumendo che il set-up dell'etichetta abbia successo, gli LSR a valle e a monte devono:
-
aggiornare il Diff-Serv Context associato agli LSP stabiliti nel loro ILM/FTN come specificato nelle sezioni precedenti (etichetta in ingresso e in uscita),
-
installare il trattamento di inoltro Diff-Serv richiesto (comportamento di scheduling e di dropping) per questa NHLFE (etichetta in uscita).
Un LSR Diff-Serv a monte che riceve un messaggio Label Mapping con più Diff-Serv TLV considera solo il primo come significativo. L'LSR deve ignorare e non inoltrare i successivi Diff-Serv TLV.
Un LSR Diff-Serv a monte che riceve un messaggio Label Mapping, con il Diff-Serv TLV per un E-LSP e non supporta il particolare PHB codificato in una o più delle voci MAP, deve rifiutare il mapping inviando un messaggio Label Release che include il Label TLV e lo Status TLV con uno Status Code di `Unsupported PHB'.
Un LSR Diff-Serv a monte che riceve un messaggio Label Mapping con il Diff-Serv TLV per un E-LSP e determina che il mapping EXP<-->PHB' segnalato non è valido, deve rifiutare il mapping inviando un messaggio Label Release che include il Label TLV e lo Status TLV con uno Status Code di Invalid EXP<-->PHB mapping'. Il mapping `EXP<-->PHB' segnalato nell'oggetto DIFFSERV per un E-LSP non è valido quando:
-
il campo MAPnb non è nell'intervallo da 1 a 8, oppure
-
un dato valore EXP compare in più di una voce MAP, oppure
-
la codifica del PHBID non è valida
Un LSR Diff-Serv a monte che riceve un messaggio Label Mapping con il Diff-Serv TLV per un L-LSP contenente un valore PSC che non è supportato, deve rifiutare il mapping inviando un messaggio Label Release che include il Label TLV e lo Status TLV con uno Status Code di `Unsupported PSC'.
6.4.2. Gestione del Diff-Serv TLV in modalità Downstream on Demand
Questa sezione descrive le operazioni quando si usa la modalità Downstream on Demand.
Quando si richiede un'etichetta per un E-LSP che deve usare il mapping `EXP<-->PHB' preconfigurato, un LSR Diff-Serv a monte invia un messaggio Label Request senza il Diff-Serv TLV.
Quando si richiede un'etichetta per un E-LSP che deve usare un mapping `EXP<-->PHB' segnalato, un LSR Diff-Serv a monte invia un messaggio Label Request con il Diff-Serv TLV per un E-LSP che contiene una voce MAP per ciascun valore EXP da supportare su questo E-LSP.
Quando si richiede un'etichetta per un L-LSP, un LSR Diff-Serv a monte invia un messaggio Label Request con il Diff-Serv TLV per un L-LSP che contiene il PSC da supportare su questo L-LSP.
Un LSR Diff-Serv a valle che invia un messaggio Label Mapping in risposta a un messaggio Label Request per un E-LSP o un L-LSP non deve includere un Diff-Serv TLV in questo messaggio Label Mapping. Assumendo che il set-up dell'etichetta abbia successo, gli LSR a valle e a monte devono:
-
aggiornare il Diff-Serv Context associato agli LSP stabiliti nel loro ILM/FTN come specificato nelle sezioni precedenti (etichetta in ingresso e in uscita),
-
installare il trattamento di inoltro Diff-Serv richiesto (comportamento di scheduling e di dropping) per questa NHLFE (etichetta in uscita).
Un LSR Diff-Serv a monte che riceve un messaggio Label Mapping contenente un Diff-Serv TLV in risposta al suo messaggio Label Request, deve rifiutare il label mapping inviando un messaggio Label Release che include il Label TLV e lo Status TLV con uno Status Code di `Unexpected Diff-Serv TLV'.
Un LSR Diff-Serv a valle che riceve un messaggio Label Request con più Diff-Serv TLV considera solo il primo come significativo. L'LSR deve ignorare e non inoltrare i successivi Diff-Serv TLV.
Un LSR Diff-Serv a valle che riceve un messaggio Label Request con il Diff-Serv TLV per un E-LSP e non supporta il particolare PHB codificato in una (o più) delle voci MAP, deve rifiutare la richiesta inviando un messaggio Notification che include lo Status TLV con uno Status Code di `Unsupported PHB'.
Un LSR Diff-Serv a valle che riceve un messaggio Label Request con il Diff-Serv TLV per un E-LSP e determina che il mapping EXP<-->PHB' segnalato non è valido, deve rifiutare la richiesta inviando un messaggio Notification che include lo Status TLV con uno Status Code di Invalid EXP<-->PHB mapping'. Il mapping `EXP<-->PHB' segnalato nel DIFFSERV TLV per un E-LSP non è valido quando:
-
il campo MAPnb non è nell'intervallo da 1 a 8, oppure
-
un dato valore EXP compare in più di una voce MAP, oppure
-
la codifica del PHBID non è valida
Un LSR Diff-Serv a valle che riceve un messaggio Label Request con il Diff-Serv TLV per un L-LSP contenente un valore PSC che non è supportato, deve rifiutare la richiesta inviando un messaggio Notification che include lo Status TLV con uno Status Code di `Unsupported PSC'.
Un LSR Diff-Serv a valle che riconosce il Type del Diff-Serv TLV in un messaggio Label Request ma non è in grado di allocare le informazioni di contesto per-LSP richieste, deve rifiutare la richiesta inviando un messaggio Notification che include lo Status TLV con uno Status Code di `Per-LSP context allocation failure'.
Un LSR Diff-Serv a valle che riconosce il Type del Diff-Serv TLV in un messaggio Label Request e supporta il PSC richiesto ma non è in grado di soddisfare la label request per altre ragioni (ad es., nessuna etichetta disponibile), deve inviare un messaggio Notification in conformità con le procedure LDP esistenti [LDP] (ad es., con uno Status Code `No Label Resource'). Questo messaggio Notification deve includere il Diff-Serv TLV richiesto.
6.5. Non-gestione del Diff-Serv TLV
Un LSR che non riconosce il Type del Diff-Serv TLV, alla ricezione di un messaggio Label Request o di un messaggio Label Mapping contenente il Diff-Serv TLV, deve comportarsi in conformità con le procedure specificate in [LDP] per un TLV sconosciuto i cui bit U e F sono impostati a 0, cioè deve ignorare il messaggio e restituire un messaggio Notification con Status `Unknown TLV'.
6.6. Informazioni di banda
Le informazioni di banda possono anche essere segnalate al momento dell'establishment di E-LSP e L-LSP, ad esempio a scopo di Traffic Engineering, usando il Traffic Parameters TLV come descritto in [MPLS CR LDP].