Multiprotocol Label Switching

protocole réseau

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

  • 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

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

Commutation de labels modifier

Labels modifier

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

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

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

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

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

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

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

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

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

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

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

  • entre les routeurs MPLS adjacents et servant à commuter les paquets d'un routeur à un autre sont des labels de transit[22] ;
  • entre des routeurs MPLS PE servant à identifier des services MPLS (des VPN de niveau 2 ou 3 par exemple) sont des labels de service[23].

On pourra trouver par exemple, dans le cadre d'un VPNv4 (VPRN) un paquet IPv4 avec un label de service identifiant le VPN (positionné par le PE d'entrée suivant une valeur reçue depuis le PE de sortie, par exemple en MP-BGP), et un label de transit changé entre chaque routeur.

Dans certains cas, on peut avoir encore plus de labels sur un même paquet (labels liés au raccordement entre deux nuages MPLS[24], ou transport tunnelisé en MPLS de paquet eux-mêmes MPLS dans le cadre de service « Carrier over Carrier »[25]).

Déploiement modifier

MPLS est actuellement utilisé dans de grands réseaux. En pratique, MPLS est principalement utilisé pour transporter des datagrammes IP et du trafic Ethernet.

Services MPLS modifier

MPLS peut notamment être utilisé pour mettre en œuvre des services (notamment de type VPN) dans le nuage MPLS :

  • VPN de niveau 3 (L3VPN / VPRF), permettant de créer des réseaux IPv4[21] et/ou IPv6 (technologie 6VPE)[26] étanches entre-eux sur le même réseau MPLS (et donc les mêmes routeurs), en permettant l'extension et la propagation de VRF (Virtual routing and forwarding – tables de routage virtuelles) sur l'ensemble du réseau MPLS
  • VPN de niveau 2 (L2VPN), permettant de fournir des liens privés virtuels point à point (Pseudo-wires[27],[28]) ou des LAN virtuels (VPLS[29],[30], EVPN[31]...) transportant des trames de niveau 2 (par exemple Ethernet)
  • Transport de paquets IPv6 à travers un nuage MPLS IPv4 (technologie 6PE)[32]
  • Gestion de qualité de service (QoS)[33],[34] dans le nuage MPLS, indépendamment[35] du marquage QoS des paquets ou trames des clients. La valeur de classe de service est transportée par un champ Traffic Class de 3 bits (anciennement EXPerimental) dans le ou les labels MPLS. Dans ce contexte, l'utilisation de l'Ultimate Hop Popping (UHP) est nécessaire.

Note : on oppose[36] parfois les VPN MPLS qui permettent de garantir un niveau de qualité de service et les VPN via Internet qui assurent confidentialité et intégrité des données transportées par un mécanisme de chiffrement :

  • MPLS est une technique de commutation sur un réseau donné : il peut assurer l'étanchéité des VPN sur le nuage MPLS, et la qualité de service peut être garantie car l'opérateur du réseau MPLS le maîtrise de bout en bout.
  • Le VPN sur Internet est une technique de tunnel IP. Aucune QoS ni confidentialité ne peuvent être garanties sur Internet ; toutefois le chiffrement rend ces données indéchiffrables par un observateur et garantit leur intégrité, et ce VPN n'est pas limité à un nuage MPLS donné.

Techniques complémentaires (applications réseaux opérateurs & grandes entreprises) modifier

La majorité des grands opérateurs utilise aujourd’hui MPLS dans la partie centrale de leur réseau pour assurer l’ingénierie de trafic et la qualité de service. En revanche, l’extension de MPLS à l’accès et dans la partie métropolitaine du réseau est moins avancée. Cette solution, si elle est techniquement viable, introduit dans de nombreux cas un ensemble de difficultés liées à la gestion et à l'évolutivité du réseau, qui en fin de compte augmentent le coût et la complexité d'exploitation mais dégradent aussi la fiabilité. Plusieurs solutions alternatives ont été proposées parmi lesquelles :

Pour éviter des redites, voir les articles détaillés correspondants.

Concurrents modifier

Dans le cadre des VPN, L2TPv3 et Provider Backbone Bridge apparaissent en tant que technologies concurrentes à MPLS, particulièrement dans les réseaux IP.

On peut aussi noter l'existence de la technologie IEEE 1355 qui est également de la commutation de label mais de façon matérielle.

Articles connexes modifier

Notes et références modifier

  1. François Spies, « MPLS – Multi-Protocol Label Switching », sur Université de Franche-Comté – I.U.T. Belfort-Montbéliard, (consulté le )
  2. (en) « Multiprotocol Label Switching Architecture », Request for comments no 3031,
  3. (en) P. Newman, W. L. Edwards, R. Hinden, E. Hoffman,F. Ching Liaw, T. Lyon, G. Minshall, « Ipsilon Flow Management Protocol Specification for IPv4 Version 1.0 », Request for comments no 1953,
  4. (en) « IETF - Tag Distribution Protocol (draft-doolan-tdp-spec-00) », sur IETF,
  5. (en) Akyol, Bora et Agarwal, Puneet, « Time to Live (TTL) Processing in MPLS Networks (Updates RFC 3032) », sur tools.ietf.org (consulté le )
  6. (en) Request for comments no 3032
  7. (en) Request for comments no 7274
  8. (en) « Multiprotocol Label Switching (MPLS) on Cisco Routers », sur Cisco (consulté le )
  9. (en-GB) « RIB, FIB, LFIB, LIB etc », Darren's Blog,‎ (lire en ligne, consulté le )
  10. (en) Jeff Doyle, « Understanding MPLS Explicit and Implicit Null Labels », sur Network World, (consulté le )
  11. (en) « 6PE FAQ: Why Does 6PE Use Two MPLS Labels in the Data Plane? », sur Cisco (consulté le )
  12. Schudel, Gregg., Router security strategies : securing IP network traffic planes, Cisco Press, (ISBN 1587053365, OCLC 297576680, lire en ligne)
  13. « Configuring Ultimate-Hop Popping for LSPs - Technical Documentation - Support - Juniper Networks », sur www.juniper.net (consulté le )
  14. (en) Minei, Ina et Andersson, Loa, « LDP Specification », sur tools.ietf.org (consulté le )
  15. (en) « MPLS Traffic Engineering », sur Cisco (consulté le )
  16. (en) Berger, Lou et Srinivasan, Vijay, « RSVP-TE: Extensions to RSVP for LSP Tunnels », sur tools.ietf.org (consulté le )
  17. (en) Kompella, Kireeti et Katz, Dave, « Traffic Engineering (TE) Extensions to OSPF Version 2 », sur tools.ietf.org (consulté le )
  18. (en) Smit, Henk et Li, Tony, « IS-IS Extensions for Traffic Engineering », sur tools.ietf.org (consulté le )
  19. (en) Rekhter, Yakov et Rosen, Eric, « Carrying Label Information in BGP-4 », sur tools.ietf.org (consulté le )
  20. (en) Dave Katz <dkatz@juniper.com>, « Multiprotocol Extensions for BGP-4 », sur tools.ietf.org (consulté le )
  21. a et b (en) Rosen, Eric C. et Rekhter, Yakov, « BGP/MPLS IP Virtual Private Networks (VPNs) », sur tools.ietf.org (consulté le )
  22. (en) « MPLS EXP-based QoS and QoS Groups », sur brbccie.blogspot.fr (consulté le )
  23. (en) « Unified MPLS Functionality, Features, and Configuration Example », sur Cisco (consulté le )
  24. (en) Hares, Susan et Weiguo, Hao, « Inter-AS Option C between NVO3 and BGP/MPLS IP VPN network », sur tools.ietf.org (consulté le )
  25. Alwayn, Vivek., Advanced MPLS design and implementation, Cisco Press, (ISBN 158705020X, OCLC 48243384, lire en ligne)
  26. (en) Carugi, Marco et Clercq, Jeremy De, « BGP-MPLS IP Virtual Private Network (VPN) Extension for IPv6 VPN », sur tools.ietf.org (consulté le )
  27. (en) Heron, Giles et Martini, Luca, « Pseudowire Setup and Maintenance Using the Label Distribution Protocol (LDP) », sur tools.ietf.org (consulté le )
  28. (en) Kompella, Kireeti et Cherukuri, Rao, « Layer 2 Virtual Private Networks Using BGP for Auto-Discovery and Signaling », sur tools.ietf.org (consulté le )
  29. (en) Kompella, Kireeti et Rekhter, Yakov, « Virtual Private LAN Service (VPLS) Using BGP for Auto-Discovery and Signaling », sur tools.ietf.org (consulté le )
  30. (en) Kompella, Vach et Lasserre, Marc, « Virtual Private LAN Service (VPLS) Using Label Distribution Protocol (LDP) Signaling », sur tools.ietf.org (consulté le )
  31. (en) Isaac, Aldrin et Bitar, Nabil, « BGP MPLS-Based Ethernet VPN », sur tools.ietf.org (consulté le )
  32. (en) Faucheur, Francois Le et Prevost, Stuart, « Connecting IPv6 Islands over IPv4 MPLS Using IPv6 Provider Edge Routers (6PE) », sur tools.ietf.org (consulté le )
  33. (en) Cheval, Pierrick et Krishnan, Ram, « Shahram Davari PMC-Sierra Inc. », sur tools.ietf.org (consulté le )
  34. (en) Loa Andersson <loa@pi.nu>, « "EXP field" renamed to "CoS Field" », sur tools.ietf.org (consulté le )
  35. (en) « DiffServ Tunneling Modes for MPLS Networks », sur Cisco (consulté le )
  36. (en-US) « IP VPN vs MPLS: Top 5 Factors to Consider », RCR Wireless News,‎ (lire en ligne, consulté le )

Liens externes modifier