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

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

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 :

Fonctionnement

Commutation de labels

Labels

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

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

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

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

Principes

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

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

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 :

Routeur PE de sortie

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

Intérêt initial

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

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

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 :

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

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

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

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

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

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 :

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

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

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

Notes et références

  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 )