Aller au contenu principal

5. Extension RSVP pour la prise en charge de Diff-Serv

L'architecture MPLS n'assume pas un protocole unique de distribution d'étiquettes. [RSVP_MPLS_TE] définit l'extension à RSVP pour établir des LSP dans les réseaux MPLS. Cette section spécifie les extensions à RSVP, au-delà de celles définies dans [RSVP_MPLS_TE], pour établir des LSP prenant en charge les services différenciés dans les réseaux MPLS.

5.1. Format des messages RSVP liés à Diff-Serv​

Un nouvel objet RSVP est défini dans ce document : l'objet DIFFSERV. Une description détaillée de cet objet est fournie ci-dessous. Ce nouvel objet est applicable aux messages Path. Cette spécification ne définit l'utilisation de l'objet DIFFSERV que dans les messages Path utilisés pour établir des tunnels LSP conformément à [RSVP_MPLS_TE] et contenant donc un objet Session avec un C-Type égal à LSP_TUNNEL_IPv4 et contenant un objet LABEL_REQUEST.

Les restrictions définies dans [RSVP_MPLS_TE] pour la prise en charge de l'établissement de tunnels LSP via RSVP sont également applicables à l'établissement de tunnels LSP prenant en charge Diff-Serv : par exemple, seuls les LSP unicast sont pris en charge et les LSP multicast sont réservés à une étude future.

Ce nouvel objet DIFFSERV est optionnel par rapport à RSVP de sorte que les implémentations RSVP générales non concernées par l'établissement de LSP MPLS n'ont pas à prendre en charge cet objet.

L'objet DIFFSERV est optionnel pour la prise en charge des tunnels LSP tels que définis dans [RSVP_MPLS_TE]. Un LSR capable Diff-Serv prenant en charge les E-LSP utilisant le mappage EXP<-->PHB' préconfiguré en conformité avec cette spécification MAY prendre en charge l'objet DIFFSERV. Un LSR capable Diff-Serv prenant en charge les E-LSP utilisant un mappage EXP<-->PHB' signalé en conformité avec cette spécification MUST prendre en charge l'objet DIFFSERV. Un LSR capable Diff-Serv prenant en charge les L-LSP en conformité avec cette spécification MUST prendre en charge l'objet DIFFSERV.

5.1.1. Format du message Path​

Le format du message Path est le suivant :

      <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. Objet DIFFSERV​

Les formats de l'objet DIFFSERV sont présentés ci-dessous. Il existe actuellement deux C_Types possibles. Le type 1 est un objet DIFFSERV pour un E-LSP. Le type 2 est un objet DIFFSERV pour un L-LSP.

5.2.1. Objet DIFFSERV pour 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): Ce champ est réservé. Il doit être mis à zéro à la transmission et doit être ignoré à la réception.

  • MAPnb (4 bits): Indique le nombre d'entrées MAP incluses dans l'objet DIFFSERV. Cela peut être mis à n'importe quelle valeur de 0 à 8.

  • MAP (32 bits): Chaque entrée MAP définit le mappage entre une valeur de champ EXP et un PHB. L'entrée MAP a le format suivant :

    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): Ce champ est réservé. Il doit être mis à zéro à la transmission et doit être ignoré à la réception.

  • EXP (3 bits): Ce champ contient la valeur du champ EXP pour le mappage `EXP<-->PHB' défini dans cette entrée MAP.

  • PHBID (16 bits): Ce champ contient le PHBID du PHB pour le mappage `EXP<-->PHB' défini dans cette entrée MAP. Le PHBID est codé comme spécifié dans [PHBID].

5.2.2. Objet DIFFSERV pour 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): Ce champ est réservé. Il doit être mis à zéro à la transmission et doit être ignoré à la réception.

  • PSC (16 bits): Le PSC indique une classe d'ordonnancement PHB (PHB Scheduling Class) à prendre en charge par le LSP. Le PSC est codé comme spécifié dans [PHBID].

5.3. Traitement de l'objet DIFFSERV​

Pour établir un tunnel LSP avec RSVP, l'expéditeur crée un message Path avec un type de session de LSP_Tunnel_IPv4 et avec un objet LABEL_REQUEST conformément à [RSVP_MPLS_TE].

Pour établir un tunnel E-LSP avec RSVP, qui utilise le mappage `EXP<-->PHB' préconfiguré, l'expéditeur crée un message Path :

  • avec un type de session de LSP_Tunnel_IPv4,

  • avec l'objet LABEL_REQUEST, et

  • sans l'objet DIFFSERV.

Pour établir un tunnel E-LSP avec RSVP, qui utilise le mappage `EXP<-->PHB' préconfiguré, l'expéditeur MAY alternativement créer un message Path :

  • avec un type de session de LSP_Tunnel_IPv4,

  • avec l'objet LABEL_REQUEST, et

  • avec l'objet DIFFSERV pour un E-LSP ne contenant aucune entrée MAP.

Pour établir un tunnel E-LSP avec RSVP, qui utilise un mappage `EXP<-->PHB' signalé, l'expéditeur crée un message Path :

  • avec un type de session de LSP_Tunnel_IPv4,

  • avec l'objet LABEL_REQUEST,

  • avec l'objet DIFFSERV pour un E-LSP contenant une entrée MAP pour chaque valeur EXP à prendre en charge sur cet E-LSP.

Pour établir avec RSVP un tunnel L-LSP, l'expéditeur crée un message Path :

  • avec un type de session de LSP_Tunnel_IPv4,

  • avec l'objet LABEL_REQUEST,

  • avec l'objet DIFFSERV pour un L-LSP contenant la classe d'ordonnancement PHB (PSC) prise en charge sur ce L-LSP.

Si un message path contient plusieurs objets DIFFSERV, seul le premier est significatif ; le(s) objet(s) DIFFSERV suivant(s) doit/doivent être ignoré(s) et non transmis(s).

Chaque LSR le long du chemin enregistre l'objet DIFFSERV, lorsqu'il est présent, dans son bloc d'état de chemin (path state block).

Si un objet DIFFSERV n'est pas présent dans le message Path, le LSR SHOULD interpréter cela comme une demande pour un E-LSP utilisant le mappage `EXP<-->PHB' préconfiguré. Cependant, à des fins de compatibilité ascendante, avec d'autres options de qualité de service non Diff-Serv autorisées par [RSVP_MPLS_TE] telles que Integrated Services Controlled Load ou Guaranteed Services, le LSR MAY prendre en charge une « option de contournement » configurable. Lorsque cette « option de contournement » est configurée, le LSR interprète un message path sans objet Diff-Serv comme une demande pour un LSP avec une telle qualité de service non Diff-Serv.

Si un objet DIFFSERV pour un E-LSP ne contenant aucune entrée MAP est présent dans le message Path, le LSR MUST interpréter cela comme une demande pour un E-LSP utilisant le mappage EXP<-->PHB' préconfiguré. En particulier, cela permet à un LSR avec l'« option de contournement » configurée de prendre en charge des E-LSP avec mappage EXP<-->PHB' préconfiguré, simultanément avec des LSP avec qualité de service non Diff-Serv.

Si un objet DIFFSERV pour un E-LSP contenant au moins une entrée MAP est présent dans le message Path, le LSR MUST interpréter cela comme une demande pour un E-LSP avec mappage `EXP<-->PHB' signalé.

Si un objet DIFFSERV pour un L-LSP est présent dans le message Path, le LSR MUST interpréter cela comme une demande pour un L-LSP.

Le LSR de destination d'un E-LSP ou L-LSP répond au message Path contenant l'objet LABEL_REQUEST en envoyant un message Resv :

  • avec l'objet LABEL

  • sans objet DIFFSERV.

En supposant que la demande d'étiquette est acceptée et qu'une étiquette est allouée, les LSR Diff-Serv (expéditeur, destination, nœuds intermédiaires) doivent :

  • mettre à jour le contexte Diff-Serv associé aux LSP établis dans leur ILM/FTN comme spécifié dans les sections précédentes (étiquette entrante et sortante),

  • installer le traitement de transfert Diff-Serv requis (comportement d'ordonnancement et de rejet) pour cette NHLFE (étiquette sortante).

Un LSR qui reconnaît l'objet DIFFSERV et qui reçoit un message path qui contient l'objet DIFFSERV mais qui ne contient pas d'objet LABEL_REQUEST ou qui n'a pas un type de session de LSP_Tunnel_IPv4, envoie un PathErr vers l'expéditeur avec le code d'erreur Diff-Serv Error' et une valeur d'erreur de Unexpected DIFFSERV object'. Ceux-ci sont définis ci-dessous à la section 5.5.

Un LSR recevant un message Path avec l'objet DIFFSERV pour E-LSP, qui reconnaît l'objet DIFFSERV mais ne prend pas en charge le PHB particulier codé dans une ou plusieurs des entrées MAP, envoie un PathErr vers l'expéditeur avec le code d'erreur Diff-Serv Error' et une valeur d'erreur de Unsupported PHB'. Ceux-ci sont définis ci-dessous à la section 5.5.

Un LSR recevant un message Path avec l'objet DIFFSERV pour E-LSP, qui reconnaît l'objet DIFFSERV mais détermine que le mappage EXP<-->PHB' signalé est invalide, envoie un PathErr vers l'expéditeur avec le code d'erreur Diff-Serv Error' et une valeur d'erreur de Invalid EXP<-->PHB mapping'. Ceux-ci sont définis ci-dessous à la section 5.5. Le mappage EXP<-->PHB' signalé dans l'objet DIFFSERV pour un E-LSP est invalide lorsque :

  • le champ MAPnb n'est pas dans la plage 0 à 8 ou

  • une valeur EXP donnée apparaît dans plus d'une entrée MAP, ou

  • le codage PHBID est invalide.

Un LSR recevant un message Path avec l'objet DIFFSERV pour L-LSP, qui reconnaît l'objet DIFFSERV mais ne prend pas en charge le PSC particulier codé dans le champ PSC, envoie un PathErr vers l'expéditeur avec le code d'erreur Diff-Serv Error' et une valeur d'erreur de Unsupported PSC'. Ceux-ci sont définis ci-dessous à la section 5.5.

Un LSR recevant un message Path avec l'objet DIFFSERV, qui reconnaît l'objet DIFFSERV mais qui est incapable d'allouer le contexte Diff-Serv par LSP requis envoie un PathErr avec le code d'erreur "Diff-Serv Error" et la valeur d'erreur "Per-LSP context allocation failure". Ceux-ci sont définis ci-dessous à la section 5.5.

Un LSR Diff-Serv MUST gérer les situations où la demande d'étiquette ne peut pas être acceptée pour des raisons autres que celles déjà discutées dans cette section, conformément à [RSVP_MPLS_TE] (par exemple, réservation rejetée par le contrôle d'admission, une étiquette ne peut pas être associée).

5.4. Non-prise en charge de l'objet DIFFSERV​

Un LSR qui ne reconnaît pas le Class-Num de l'objet DIFFSERV MUST se comporter conformément aux procédures spécifiées dans [RSVP] pour un Class-Num inconnu dont le format est 0bbbbbbb c'est-à-dire qu'il doit envoyer un PathErr avec le code d'erreur `Unknown object class' vers l'expéditeur.

Un LSR qui reconnaît le Class-Num de l'objet DIFFSERV mais ne reconnaît pas le C-Type de l'objet DIFFSERV, doit se comporter conformément aux procédures spécifiées dans [RSVP] pour un C-type inconnu c'est-à-dire qu'il doit envoyer un PathErr avec le code d'erreur `Unknown object C-Type' vers l'expéditeur.

Dans les deux situations, cela provoque l'échec de l'établissement du chemin. L'expéditeur devrait notifier la gestion qu'un L-LSP ne peut pas être établi et devrait éventuellement prendre des mesures pour réessayer l'établissement du LSP sans l'objet DIFFSERV (par exemple, tenter d'utiliser des E-LSP avec mappage `EXP<-->PHB' préconfiguré comme stratégie de repli).

5.5. Codes d'erreur pour Diff-Serv​

Dans les procédures décrites ci-dessus, certaines erreurs doivent être signalées comme une Diff-Serv Error'. La valeur du code d'erreur Diff-Serv Error' est 27.

Ce qui suit définit les valeurs d'erreur pour la 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. Type de service Intserv​

Les E-LSP et les L-LSP peuvent tous deux être établis avec ou sans réservation de bande passante.

Comme spécifié dans [RSVP_MPLS_TE], pour établir un E-LSP ou un L-LSP avec réservation de bande passante, le service Controlled Load d'Int-Serv (ou éventuellement Guaranteed Service) est utilisé et la bande passante est signalée dans le SENDER_TSPEC (respectivement FLOWSPEC) du message path (respectivement Resv).

Comme spécifié dans [RSVP_MPLS_TE], pour établir un E-LSP ou un L-LSP sans réservation de bande passante, le Null Service spécifié dans [NULL] est utilisé.

Notez que cette spécification définit l'utilisation des E-LSP et L-LSP pour la prise en charge du service Diff-Serv uniquement. Indépendamment du service Intserv (Controlled Load, Null Service, Guaranteed Service,...) et indépendamment du fait que la réservation soit avec ou sans réservation de bande passante, les E-LSP et L-LSP sont définis ici pour la prise en charge des services Diff-Serv. La prise en charge des services Int-Serv sur un backbone MPLS Diff-Serv est hors du champ d'application de cette spécification.

Notez également que cette spécification ne s'intéresse pas à l'objet DCLASS défini dans [DCLASS], car cet objet transporte des informations sur les valeurs DSCP, qui ne sont pas pertinentes à l'intérieur du réseau MPLS.