+++ to secure your transactions use the Bitcoin Mixer Service +++

 

Aller au contenu

Multiprotocol Label Switching

Un article de Wikipédia, l'encyclopédie libre.

Dans les réseaux informatiques et les télécommunications, Multiprotocol Label Switching (MPLS) est un mécanisme de transport de données basé sur la commutation de labels[1] (des « étiquettes »), qui sont insérés à l'entrée du réseau MPLS et retirés à sa sortie.

À l'origine, cette insertion s'opère entre la couche de liaison de données (niveau 2) et la couche réseau (niveau 3) afin de transporter des protocoles comme IP. C'est pourquoi MPLS est qualifié de protocole de couche « 2,5 » ou « 2 / 3 ».

Ce protocole a évolué pour fournir un service unifié de transport de données pour les clients en utilisant une technique de commutation de paquets. MPLS peut être utilisé pour transporter pratiquement tout type de trafic, par exemple la voix ou des paquets IPv4, IPv6 et même des trames Ethernet ou ATM. Ainsi, MPLS permet d'acheminer sur une unique infrastructure différents types de trafic tout en les isolant.

L'utilisation de labels dits de transport permet au routeur de départ, pour chaque paquet, de déterminer à la source le routeur de sortie du réseau, sans que les routeurs intermédiaires aient besoin de consulter une table de routage volumineuse lors de la transmission du paquet.

Le fonctionnement de MPLS est notamment défini dans la RFC 3031[2].

Historique[modifier | modifier le code]

  • 1994 : Toshiba présente des idées de routeur de commutation de cellules (Cell Switch Router) à l'IETF BOFF
  • 1996 : Ipsilon, Cisco et IBM annoncent leur plan de label switching
  • 1997 : Création du groupe de travail IETF MPLS
  • 1999 : Premiers déploiements MPLS VPN (L3VPN) et TE.
  • 2000 : Ingénierie du trafic MPLS
  • 2001 : Publication de la première demande de commentaires (Request for Comments) pour MPLS.
  • 2002 : AToM (L2VPN)
  • 2004 : GMPLS ; grande échelle L3VPN
  • 2006 : TE "Harsh" à grande échelle
  • 2007 : Grande échelle L2VPN
  • 2009 : Label Switching Multicast
  • 2011 : Profil de transport MPLS

L'idée de MPLS est apparue en 1996 d'un groupe d'ingénieurs de Ipsilon Networks[3]. À l'origine, la technologie n'était prévue pour fonctionner que sur ATM, ce qui limita sa place sur le marché. Cisco Systems proposa ensuite l'idée de ne pas limiter MPLS à l'ATM et créa le Tag Switching (et un protocole TDP[4] de distribution des tags [étiquettes]), qui sera ensuite renommé en Label Switching pour la standardisation par l'IETF en tant que MPLS (et son protocole de distribution des labels : LDP).

Introduction[modifier | modifier le code]

Deux groupes de travail ont été désignés par l'IETF pour combler les lacunes d'IP: un groupe consacré à la sécurité travaillant sur l'IPSec et l'autre consacré au routage travaillant sur MPLS. Comme son sigle (MPLS) l'indique, ses caractéristiques sont :

  • multiprotocol (multi-protocoles) : il est capable de supporter les différents protocoles de niveau inférieur, au sens OSI (ATM, Frame relay…)
  • label switching (commutation par label) : il se base sur un label ou identifiant pour la commutation des paquets. Ce label est attribué aux paquets par l'équipement PE (Provider Edge) lors de leur entrée dans l'infrastructure MPLS.

Fonctionnement[modifier | modifier le code]

Commutation de labels[modifier | modifier le code]

Labels[modifier | modifier le code]

Un en-tête MPLS est composé d'un ou plusieurs éléments de 4 octets chacun, les labels. Ce ou ces labels forment un empilement ou « pile » de labels, le Label Stack. Le nombre de labels dans le Stack dépendra des services MPLS utilisés.

Cet en-tête MPLS est inséré dans un paquet juste après l'en-tête de couche 2 (par exemple Ethernet, dont le champ Ethertype indiquera alors un contenu de type MPLS), et donc avant le protocole de couche 3 (au sens du modèle OSI) comme par exemple IP.

Format[modifier | modifier le code]

Un label comporte 32 bits (4 octets), divisés en :

  • valeur du label (20 bits)
  • Traffic Class (classe de trafic) pour la gestion de la QoS (qualité de service) (3 bits)
  • 1 bit S «Bottom of Stack», indiquant s'il s'agit du dernier label dans le paquet (sinon, ce label est lui-même suivi d'un autre label)
  • TTL (Time to Live)[5], valeur positionnée selon le champ TTL du paquet IP ou à une valeur par défaut par le routeur d'entrée du nuage MPLS, et décrémentée à chaque saut, permettant ainsi lorsque le TTL arrive à 0 de détruire les paquets qui seraient victimes d'une boucle de routage (8 bits)
MPLS Label
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Label TC: Traffic Class (QoS) S: Bottom-of-Stack TTL: Time-to-Live
Valeurs[modifier | modifier le code]

Les labels de 0 à 15 sont réservés à des usages spécifiques (RFC 3032[6] et RFC 7274[7]). On trouvera notamment :

  • 0: IPv4 Explicit Null Label : utilisé notamment dans le cadre de l'« Ultimate Hop Popping » (UHP) – voir plus bas
  • 2: IPv6 Explicit Null Label : utilisé notamment dans le cadre de l'« Ultimate Hop Popping » (UHP) – voir plus bas
  • 3: Implicit Null Label : utilisé dans le cadre de la signalisation du « Penultimate Hop Popping » (PHP) – mais jamais visible dans un label (ce label correspond en réalité à une absence de label) – voir plus bas

Principes[modifier | modifier le code]

MPLS fonctionne par commutation de labels. Des chemins entre PE (Provider Edge) sont établis de façon manuelle (action d'un administrateur dans le plan d'administration) ou automatique (via un protocole de signalisation comme LDP — Label Distribution Protocol — dans le plan de contrôle). Ces chemins sont appelés des LSP (Label Switched Paths).

Les routeurs MPLS sont les LSR (Label Switch Router), et sont de type PE (Provider Edge) ou P (Provider). Par extension, les routers CE (Customer Edge) sont les routeurs du client avant que son trafic ne pénètre dans le « nuage » MPLS du fournisseur par les routeurs PE.

Un chemin MPLS étant toujours unidirectionnel, on fait la différence en MPLS entre les routeurs d'entrée (PE ou iLSR — ingress Label Switch Router), de transit (P-router pour Provider router), et de sortie (PE ou eLSR — egress Label Switch Router).

Routeur PE d'entrée[modifier | modifier le code]

Le routeur PE d'entrée a pour rôle d'encapsuler le trafic reçu sur ses interfaces « clients ». Il applique (au moins) un label au paquet reçu (« imposition » de label, ou push) et l'envoie vers une de ses interfaces sortantes.

Pour créer le label, le routeur utilise les FEC (Forwarding Equivalence Class), qui sont des tables de correspondances dont les clefs sont un élément du paquet (adresse MAC, adresse IP, Class of Service, port TCP/UDP, etc.). Une FEC est donc un groupe de paquets transférés vers la même interface de sortie et avec les mêmes critères de transmission (donc un type de flux vers un LSP).

Routeurs P[modifier | modifier le code]

Le paquet atteint ensuite des commutateurs de transit (P-router) ou de sortie (PE-router). Ceux-ci possèdent une table de commutation (la Label Information Base[8],[9]) comportant quatre entrées :

  • Deux clefs :
    • label MPLS en entrée
    • bit S (Bottom of Stack) à 0 ou 1 (pour savoir dans quel contexte la valeur du label est applicable)
  • Deux valeurs :
    • label MPLS :
      • de sortie : dans ce cas le routeur remplace le label (swap), ou
      • retrait du label : dans ce cas le routeur retire le label (« disposition » du label, ou pop)
    • adjacence de sortie du paquet (interface, routeur suivant...)
Routeur PE de sortie[modifier | modifier le code]

Le dernier routeur PE reçoit (d'un P-router, ou du premier PE-routeur, selon la topologie du réseau MPLS) :

  • un paquet IPv4 ou IPv6 non labellisé (qui est dans ce cas simplement routé), ou
  • un paquet labellisé, qu'il décapsule pour la dernière fois conformément à sa Label Information Base.

Intérêt initial[modifier | modifier le code]

L'opération de commutation est donc extrêmement simple, puisqu'il suffit d'analyser le label MPLS qui se trouve directement après l'en-tête de la trame de niveau 2 (Ethernet), ou dans l'équivalent de la cellule/trame de niveau 2 (VPI/VCI de l'ATM, DLCI du Frame Relay, etc.). Il n'est donc pas nécessaire d'extraire le paquet IP et de parcourir l'ensemble de la table de routage. Toutefois, si cet argument était à l'origine de la création de MPLS, il a perdu beaucoup de poids, car l'augmentation de la puissance des routeurs et l'avènement de nouvelles puces dédiées permettent largement de parcourir la table de routage IP à chaque nouveau paquet. Ce sont donc les autres possibilités attribuées à MPLS qui en font une technique de plus en plus utilisée, et notamment les services qu'il peut apporter.

PHP / UHP[modifier | modifier le code]

Dans le cadre des spécifications initiales de MPLS, pour le transport d'IPv4 sans VPN, le principe de disposition du label à l'avant dernier saut « Penultimate Hop Popping » (PHP) a été retenu. Ainsi l'avant-dernier routeur est censé supprimer le label et envoyer le paquet « nu » au PE de sortie, afin d'économiser à celui-ci un examen non-seulement de l'adresse IP de destination (ce qu'il doit faire de toute façon), mais aussi de traitement du label. Dans ce mécanisme, la valeur de label annoncée entre les routeurs (mais non-utilisée réellement, car le label est en fait supprimé) est la valeur 3 « implicit-null ».

L'utilité de cette optimisation n'est plus vraiment d'actualité (de la même façon que les arguments initiaux pour MPLS – traitement facilité pour les routeurs). Certains services MPLS (notamment traitement de bout-en-bout de la QoS[10] et 6PE[11]) peuvent amener à décider le maintien d'un label y compris entre l'avant-dernier et le dernier routeur MPLS de sortie, dans le cadre d'un mécanisme de disposition du paquet au dernier saut « Ultimate Hop Popping » (UHP)[12],[13]. Certaines valeurs de labels ont notamment été réservées à cet effet (« explicit-null »).

Distribution des labels et protocoles[modifier | modifier le code]

Si la configuration manuelle des chemins MPLS (les LSP – Label Switched Path) est toujours possible, elle s'avère très fastidieuse pour l'administrateur, c'est pourquoi la plupart du temps un protocole de signalisation est utilisé pour établir ces LSP et distribuer les labels au sein du nuage MPLS entre les routeurs. On trouvera notamment les protocoles suivants :

  • Label Distribution Protocol (LDP)[14] est le protocole classiquement utilisé
  • Dans le cadre des services MPLS de traffic engineering[15] (création de tunnels virtuels entre routeurs MPLS, dont le parcours entre les routeurs est décidé à l'avance et/ou selon des critères autres que ceux du routage classique) :
  • Extensions au protocole de routage externe BGP[19] / MP-BGP[20],[21], notamment dans le cadre de la mise en œuvre de services de VPN MPLS.

Contrairement à la pile TCP/IP, MPLS n'est pas un protocole de bout en bout. Il définit seulement une façon d'encapsuler des protocoles de couche 3 (IPv4 comme IPv6), de couche 2 (Ethernet, PPP, ATM, Frame Relay entre autres), et même de couche 1 (PDH, SDH). Cette notion d'encapsulation explique qu'un même type de protocole (exemple : Ethernet) puisse à la fois être transporté sur MPLS (dans le cadre d'un VPN de niveau 2), et servir au transport de ce même MPLS.

Utilisation des labels[modifier | modifier le code]

Un paquet peut avoir un ou plusieurs labels à la fois. Les labels :