5. Estensione RSVP per il supporto Diff-Serv
L'architettura MPLS non assume un singolo protocollo di distribuzione delle etichette. [RSVP_MPLS_TE] definisce l'estensione a RSVP per stabilire LSP nelle reti MPLS. Questa sezione specifica le estensioni a RSVP, oltre a quelle definite in [RSVP_MPLS_TE], per stabilire LSP che supportano i Differentiated Services nelle reti MPLS.
5.1. Formato dei messaggi RSVP correlati a Diff-Serv
In questo documento è definito un nuovo oggetto RSVP: l'oggetto DIFFSERV. La descrizione dettagliata di questo oggetto è fornita più avanti. Questo nuovo oggetto è applicabile ai messaggi Path. Questa specifica definisce solo l'uso dell'oggetto DIFFSERV nei messaggi Path usati per stabilire LSP Tunnel in conformità con [RSVP_MPLS_TE] e che quindi contengono un oggetto Session con un C-Type uguale a LSP_TUNNEL_IPv4 e contengono un oggetto LABEL_REQUEST.
Le restrizioni definite in [RSVP_MPLS_TE] per il supporto dell'establishment di LSP Tunnel via RSVP sono anche applicabili all'establishment di LSP Tunnel che supportano Diff-Serv: ad esempio, sono supportati solo LSP unicast e gli LSP multicast sono per studio futuro.
Questo nuovo oggetto DIFFSERV è opzionale rispetto a RSVP così che le implementazioni RSVP generali non interessate al set-up di LSP MPLS non devono supportare questo oggetto.
L'oggetto DIFFSERV è opzionale per il supporto degli LSP Tunnel come definiti in [RSVP_MPLS_TE]. Un LSR capace di Diff-Serv che supporta E-LSP che usano il mapping EXP<-->PHB' preconfigurato in conformità con questa specifica MAY supportare l'oggetto DIFFSERV. Un LSR capace di Diff-Serv che supporta E-LSP che usano un mapping EXP<-->PHB' segnalato in conformità con questa specifica MUST supportare l'oggetto DIFFSERV. Un LSR capace di Diff-Serv che supporta L-LSP in conformità con questa specifica MUST supportare l'oggetto DIFFSERV.
5.1.1. Formato del messaggio Path
Il formato del messaggio Path è il seguente:
<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. Oggetto DIFFSERV
I formati dell'oggetto DIFFSERV sono mostrati di seguito. Attualmente ci sono due possibili C_Type. Il Type 1 è un oggetto DIFFSERV per un E-LSP. Il Type 2 è un oggetto DIFFSERV per un L-LSP.
5.2.1. Oggetto DIFFSERV per un 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): 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 0 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].
5.2.2. Oggetto DIFFSERV per un 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): 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].
5.3. Gestione dell'oggetto DIFFSERV
Per stabilire un tunnel LSP con RSVP, il mittente crea un messaggio Path con un tipo di sessione di LSP_Tunnel_IPv4 e con un oggetto LABEL_REQUEST come da [RSVP_MPLS_TE].
Per stabilire un tunnel E-LSP con RSVP che usa il mapping `EXP<-->PHB' preconfigurato, il mittente crea un messaggio Path:
-
con un tipo di sessione di LSP_Tunnel_IPv4,
-
con l'oggetto LABEL_REQUEST, e
-
senza l'oggetto DIFFSERV.
Per stabilire un tunnel E-LSP con RSVP che usa il mapping `EXP<-->PHB' preconfigurato, il mittente MAY in alternativa creare un messaggio Path:
-
con un tipo di sessione di LSP_Tunnel_IPv4,
-
con l'oggetto LABEL_REQUEST, e
-
con l'oggetto DIFFSERV per un E-LSP che non contiene voci MAP.
Per stabilire un tunnel E-LSP con RSVP che usa un mapping `EXP<-->PHB' segnalato, il mittente crea un messaggio Path:
-
con un tipo di sessione di LSP_Tunnel_IPv4,
-
con l'oggetto LABEL_REQUEST,
-
con l'oggetto DIFFSERV per un E-LSP che contiene una voce MAP per ciascun valore EXP da supportare su questo E-LSP.
Per stabilire con RSVP un tunnel L-LSP, il mittente crea un messaggio Path:
-
con un tipo di sessione di LSP_Tunnel_IPv4,
-
con l'oggetto LABEL_REQUEST,
-
con l'oggetto DIFFSERV per un L-LSP che contiene la PHB Scheduling Class (PSC) supportata su questo L-LSP.
Se un messaggio path contiene più oggetti DIFFSERV, solo il primo è significativo; i successivi oggetti DIFFSERV devono essere ignorati e non inoltrati.
Ciascun LSR lungo il percorso registra l'oggetto DIFFSERV, quando presente, nel suo path state block.
Se un oggetto DIFFSERV non è presente nel messaggio Path, l'LSR SHOULD interpretare ciò come una richiesta di un E-LSP che usa il mapping `EXP<-->PHB' preconfigurato. Tuttavia, a fini di retrocompatibilità con altre opzioni di Quality of Service non Diff-Serv consentite da [RSVP_MPLS_TE] come Integrated Services Controlled Load o Guaranteed Services, l'LSR MAY supportare un'opzione di "override" configurabile. Quando questa "opzione di override" è configurata, l'LSR interpreta un messaggio path senza un oggetto Diff-Serv come una richiesta di un LSP con tale Quality of Service non Diff-Serv.
Se un oggetto DIFFSERV per un E-LSP che non contiene voci MAP è presente nel messaggio Path, l'LSR MUST interpretare ciò come una richiesta di un E-LSP che usa il mapping EXP<-->PHB' preconfigurato. In particolare, ciò consente a un LSR con l'"opzione di override" configurata di supportare E-LSP con mapping EXP<-->PHB' preconfigurato, contemporaneamente a LSP con Quality of Service non Diff-Serv.
Se un oggetto DIFFSERV per un E-LSP che contiene almeno una voce MAP è presente nel messaggio Path, l'LSR MUST interpretare ciò come una richiesta di un E-LSP con mapping `EXP<-->PHB' segnalato.
Se un oggetto DIFFSERV per un L-LSP è presente nel messaggio Path, l'LSR MUST interpretare ciò come una richiesta di un L-LSP.
L'LSR di destinazione di un E-LSP o di un L-LSP risponde al messaggio Path contenente l'oggetto LABEL_REQUEST inviando un messaggio Resv:
-
con l'oggetto LABEL
-
senza un oggetto DIFFSERV.
Assumendo che la label request sia accettata e che un'etichetta sia allocata, gli LSR Diff-Serv (mittente, destinazione, nodi intermedi) 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 che riconosce l'oggetto DIFFSERV e che riceve un messaggio path che contiene l'oggetto DIFFSERV ma che non contiene un oggetto LABEL_REQUEST oppure che non ha un tipo di sessione di LSP_Tunnel_IPv4, invia un PathErr verso il mittente con il codice di errore Diff-Serv Error' e un valore di errore di Unexpected DIFFSERV object'. Questi sono definiti più avanti nella sezione 5.5.
Un LSR che riceve un messaggio Path con l'oggetto DIFFSERV per E-LSP, che riconosce l'oggetto DIFFSERV ma non supporta il particolare PHB codificato in una o più delle voci MAP, invia un PathErr verso il mittente con il codice di errore Diff-Serv Error' e un valore di errore di Unsupported PHB'. Questi sono definiti più avanti nella sezione 5.5.
Un LSR che riceve un messaggio Path con l'oggetto DIFFSERV per E-LSP, che riconosce l'oggetto DIFFSERV ma determina che il mapping EXP<-->PHB' segnalato non è valido, invia un PathErr verso il mittente con il codice di errore Diff-Serv Error' e un valore di errore di Invalid EXP<-->PHB mapping'. Questi sono definiti più avanti nella sezione 5.5. Il mapping EXP<-->PHB' segnalato nell'oggetto DIFFSERV per un E-LSP non è valido quando:
-
il campo MAPnb non è nell'intervallo da 0 a 8 oppure
-
un dato valore EXP compare in più di una voce MAP, oppure
-
la codifica del PHBID non è valida.
Un LSR che riceve un messaggio Path con l'oggetto DIFFSERV per L-LSP, che riconosce l'oggetto DIFFSERV ma non supporta il particolare PSC codificato nel campo PSC, invia un PathErr verso il mittente con il codice di errore Diff-Serv Error' e un valore di errore di Unsupported PSC'. Questi sono definiti più avanti nella sezione 5.5.
Un LSR che riceve un messaggio Path con l'oggetto DIFFSERV, che riconosce l'oggetto DIFFSERV ma che non è in grado di allocare il contesto Diff-Serv per-LSP richiesto, invia un PathErr con il codice di errore "Diff-Serv Error" e il valore di errore "Per-LSP context allocation failure". Questi sono definiti più avanti nella sezione 5.5.
Un LSR Diff-Serv MUST gestire le situazioni in cui la label request non può essere accettata per ragioni diverse da quelle già discusse in questa sezione, in conformità con [RSVP_MPLS_TE] (ad es., prenotazione rifiutata dal controllo di ammissione, un'etichetta non può essere associata).
5.4. Non-supporto dell'oggetto DIFFSERV
Un LSR che non riconosce il Class-Num dell'oggetto DIFFSERV MUST comportarsi in conformità con le procedure specificate in [RSVP] per un Class-Num sconosciuto il cui formato è 0bbbbbbb, cioè deve inviare un PathErr con il codice di errore `Unknown object class' verso il mittente.
Un LSR che riconosce il Class-Num dell'oggetto DIFFSERV ma non riconosce il C-Type dell'oggetto DIFFSERV deve comportarsi in conformità con le procedure specificate in [RSVP] per un C-type sconosciuto, cioè deve inviare un PathErr con il codice di errore `Unknown object C-Type' verso il mittente.
In entrambe le situazioni, ciò fa fallire il set-up del percorso. Il mittente dovrebbe notificare alla gestione che un L-LSP non può essere stabilito e dovrebbe possibilmente prendere azioni per ritentare l'establishment dell'LSP senza l'oggetto DIFFSERV (ad es., tentare di usare E-LSP con mapping `EXP<-->PHB' preconfigurato come strategia di fall-back).
5.5. Codici di errore per Diff-Serv
Nelle procedure descritte sopra, certi errori devono essere segnalati come un Diff-Serv Error'. Il valore del codice di errore Diff-Serv Error' è 27.
Quanto segue definisce i valori di errore per il Diff-Serv Error:
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. Tipo di servizio Intserv
Sia gli E-LSP sia gli L-LSP possono essere stabiliti con o senza prenotazione di banda.
Come specificato in [RSVP_MPLS_TE], per stabilire un E-LSP o un L-LSP con prenotazione di banda, si usa il servizio Controlled Load di Int-Serv (o possibilmente Guaranteed Service) e la banda è segnalata nel SENDER_TSPEC (rispettivamente FLOWSPEC) del messaggio path (rispettivamente Resv).
Come specificato in [RSVP_MPLS_TE], per stabilire un E-LSP o un L-LSP senza prenotazione di banda, si usa il Null Service specificato in [NULL].
Si noti che questa specifica definisce l'uso di E-LSP e L-LSP per il supporto del solo servizio Diff-Serv. Indipendentemente dal servizio Intserv (Controlled Load, Null Service, Guaranteed Service,...) e indipendentemente dal fatto che la prenotazione sia con o senza prenotazione di banda, gli E-LSP e gli L-LSP sono definiti qui per il supporto dei servizi Diff-Serv. Il supporto dei servizi Int-Serv su un backbone MPLS Diff-Serv è al di fuori dell'ambito di questa specifica.
Si noti inoltre che questa specifica non si interessa dell'oggetto DCLASS definito in [DCLASS], poiché questo oggetto trasmette informazioni sui valori DSCP, che non sono rilevanti all'interno della rete MPLS.