Multi Protocol Label Switching
Architecture MPLS
Généralités
Comme nous l'avons évoqué en introduction, le routage IP présente quelques inconvénients qui sont à l'origine de l'élaboration du MPLS. En règle générale on parle d'architecture MPLS. En effet, MPLS décrit une manière d'encapsuler différents protocoles de niveau 2 et niveau 3 pour en améliorer le fonctionnement. On parle alors de protocole de niveau 2.5 pour faire référence à sa position entre la couche liaison et routage. Ce mécanisme est normalisé par l'IETF sous la norme RFC 3031.
Le principe de base de MPLS va être de reprendre les avantages du routage IP et d'y adjoindre les avantages de la commutation de paquets mis en oeuvre, par exemple, dans les réseaux ATM. Le fondement de cette technique repose sur l'utilisation de paquets de données de petite taille (53 octets dont 48 de données brutes) appelés cellules. Globalement, lorsqu'une cellule arrive sur un commutateur ATM, ce dernier va utiliser l'entête de la cellule comme point d'entrée de sa table de commutation et en déduire automatiquement l'interface de sortie. Le commutateur ne fait pas d'autres opérations ce qui rend la transmission très rapide et efficace. En plus de cet aspect, ATM fournit un support de la qualité de service, permettant ainsi de prioriser des flux selon leur type (voix, données, etc...).
Comme le suggère l'acronyme MPLS, l'architecture supporte plusieurs protocoles. Cela signifie que le mécanisme n'est pas lié à une couche de niveau 2 ou de niveau 3 particulière. En effet, son utilisation est prévue pour un ensemble de protocoles que nous verrons lors de la description d'un label. Par conséquent, cette technologie devient intéressante pour de nombreuses entreprises désireuses de changer leur réseau d'information sans avoir à modifier considérablement l'existant.
L'architecture logique MPLS est définie comme suit :

On distingue deux parties logiques bien distinctes. Tout d'abord, le plan de contrôle qui va être chargé de gérer et maintenir les labels contenus dans chaque routeur du réseau MPLS. Ce plan de contrôle utilise des protocoles de routages classiques, tels que OSPF ou RIP afin de créer la topologie des noeuds du réseau MPLS, ainsi que des protocoles spécialement développés pour le MPLS comme Label Distribution Protocol que nous étudierons par la suite.
La seconde partie, est le plan de données. Celui-ci contient le mécanisme de transmission des données et est complètement indépendant de la partie signalisation. Ce découpage est par exemple à la base des migrations ATM vers MPLS, car elle permet de conserver le matériel ATM utilisé en coeur de réseau. Grâce au simple changement logiciel du plan de contrôle, le commutateur ATM pourra être transformé en routeur MPLS.
La commutation de labels
De cette réunion du routage IP classique et de la commutation de paquets est né un nouveau système appelé commutation de labels. Un label est un petit paquet de données dont nous détaillerons le contenu ultérieurement qui va, dans l'architecture de base, s'intercaler entre l'entête de niveau 2 et l'entête de niveau 3. Le schéma suivant illustre le mécanisme :

Nous admettons dans ce schéma que les labels sont déjà enregistrés dans chacun des routeurs. Nous aborderons le mécanisme qui conduit à cette topologie dans la suite.
Soit un paquet IP arrivant à destination de l'adresse réseau 192.168.1.0/24. Le routeur d'entrée va utiliser l'adresse de destination pour retrouver le label à associer au paquet. Il voit par exemple ici que cette adresse de destination est associée au label #5 et qu'il doit être recopié sur l'interface 1. Ce routeur va donc ajouter le label après l'entête de niveau 3. Ce label sera conservé tout au long de la traversée du réseau à commutation de labels. A chaque intermédiaire, le label va être échangé par les routeurs intermédiaires. C'est ce que l'on appele le Label Swapping. Pour le deuxiême routeur, celui-ci va utiliser le label entrant comme index dans la table de commutation, et modifier le label par celui de sortie spécifié dans sa table.Lors de l'arrivée du paquet au dernier routeur, celui-ci va retirer le label et transmettre le paquet à sa couche de niveau 3 qui va se charger du routage "classique" du paquet. Ces opérations d'ajout et suppression des labels sont primordiales, car elles vont conditionner l'interopérabilité des réseaux à commutation de labels avec les autres types de réseaux basés sur IP.
Terminologie
Reprenons le schéma présentant la commutation de labels et explicitons le pour le MPLS :

Il existe principalement deux types de routeurs au sein d'un réseau MPLS : les Label Edge Router et les Label Switch Router. Le Label Edge Router est un routeur de bordure chargé d'ajouter les labels sur un paquet entrant dans le réseau MPLS ; il sera alors appelé Ingress Node. Par opposition, le LER de sortie sera Egress Node. Les noeuds constituants le coeur de réseau sont les Label Switch Router. Ils se contentent d'appliquer les règles définies dans le plan de données.
Le deuxième routeur de coeur LSR est appelé routeur downstream pour le premier et ce dernier est appelé routeur upstream par rapport à ce deuxième routeur. Lorsqu'un chemin s'établit pour traverser le réseau MPLS, on parle de Label Switched Path. Ce chemin est virtuel, et tous les paquets d'un même flux suivront le même LSP.
Une subtilité a été ajoutée sur ce schéma et concerne la suppression du label par l'avant dernier routeur du réseau. Cette action s'appele Penultimate Hop Popping et part du constat que le dernier noeud n'a pas besoin de consulter le label car son rôle est de le supprimer et de faire une décision de routage classique. Par conséquent, le dernier noeud du réseau va informer le routeur upstream qu'il a une interface non taggée et qu'il n'a donc pas besoin de recevoir des paquets "labelisés". Ainsi, l'avant dernier routeur aura dans sa table le label implicit null qui spécifie que le routeur doit retirer le label du paquet IP.
Format d'un label

Nous allons maintenant voir le format du label ajouté par les ingress LER. Les 20 premiers bits sont constitués de la valeur numérique du label. Les 3 bits EXP servent pour la qualité de service (afin de coder le numéro de classe de service). Le bit stack sert à spécifier si le label est le dernier de la liste. En effet, il est possible d'empiler les labels au sein d'un même paquet. Par conséquent, il faut indiquer au routeur s'il y a d'autres labels à lire. Dans le cas courant d'un seul label, le bit sera positionné à 1. Enfin, les 8 bits du TTL sont utilisés pour l'interopérabilité avec les réseaux IP classiques. A l'entrée du paquet dans le nuage MPLS, le TTL du datagramme IP va être recopié dans le TTL du label. Ceci permet d'éviter aux routeurs de coeur d'aller lire dans le datagramme IP la valeur du TTL et la décrémenter. Ensuite, lors de la transition du paquet dans le coeur de réseau MPLS, le TTL sera décrémenté normalement comme dans un réseau IP. A la sortie du nuage, le routage de bordure va recopier le TTL du label directement dans l'entête IP. De cette manière, la traversée du réseau MPLS est rendue totalement transparente aux yeux des réseaux interconnectés.
La valeur numérique du label correspond aux Forwarding Equivalence Classes. Ces classes sont définies selon plusieurs critères tels qu'une adresse de réseau, une adresse unicast, une adresse multicast ... Le numéro du label sera donc toujours identique pour les paquets d'une même FEC, ce qui a pour incidence que chaque paquet à destination d'une unique destination suivra le même chemin. Dans le routage IPv4, la FEC est une opération effectuée à chaque saut. Pour MPLS, cette classification est réalisée uniquement en entrée de réseau, ce qui constitue un gain de temps. Plusieurs mappings peuvent être en concurrence pour une même FEC. C'est dans ce cas qu'intervient l'IGP qui, par défaut (pour OSPF par exemple) choisira le chemin le plus court en nombre de sauts.

Le schéma ci-dessus montre l'implémentation des labels avec différents protocoles de niveau 2. Pour ATM, le label n'est pas inséré entre l'entête de niveau 2 et de niveau 3 mais directement dans les champs VPI/VCI de la cellule ATM. En effet, le rôle d'un label est exactement le même que celui des identificateurs de circuits virtuels mis en oeuvre en ATM. Ceci est également repris pour le Frame Relay, où le label est directement inséré dans dans le champ DLCI de l'entête FR. Enfin, pour d'autres protocoles comme Ethernet, HDLC ou PPP l'entête sera ajoutée exactement entre l'entête de niveau 2 et 3 et s'appele Shim Header.
Distribution des labels
La distribution de labels fait partie du plan de contrôle et plus particulièrement de la signalisation. A l'origine, Cisco Systems développa son propre protocole appelé Tag Distribution Protocol. A l'heure actuelle, ce protocole est très peu utilisé. Le protocole Resource Reservation Protocol peut aussi être utilisé pour distribuer les labels. Cependant, celui-ci étant à l'origine prévu pour la l'établissement d'un chemin avec des critèrs comme la bande passante minimum, une extension lui a été adjointe afin de transmettre les labels en même temps; on parle alors de RSVP-TE. Enfin, deux protocoles ont étés spécialement développés pour MPLS, il s'agit de Label Distribution Protocol et Constraint Routing LDP. Ce second protocole repose sur le premier en lui ajoutant des extensions pour effectuer du Traffic Engineering dont nous parlerons ensuite. LDP est très largement répandu dans les réseaux MPLS.
Il existe deux modes de distribution de labels : le mode downstream on demand et le mode unsolicited downstream. Dans le premier mode, lorsqu'un routeur upstream va découvrir une nouvelle FEC il va établir une connexion avec un routeur downstream et lui demander un label pour la FEC découverte. En revanche, dans le second mode, dès lors qu'un routeur va découvrir une nouvelle FEC et mettre à jour ses labels, il va en informer le routeur upstream pour que ce dernier mettre à jour sa table de commutation.
Enfin, deux politiques peuvent être utilisées pour la rétention des labels. La première, dite "conservative", garde uniquement les labels pour un prochain saut valide. Si le prochain saut vient à changer, le LSR doit effectuer une Label Request pour demander le nouveau label. L'avantage de cette méthode est l'espace mémoire minimal occupé par la taille de la table de labels. La seconde politique, dite "libérale", conserve tous les labels qui sont envoyés par les routeurs downstream. Par opposition à la première méthode, cette politique requiert beaucoup plus d'espace mémoire. En revanche, elle est particulièrement utile pour effectuer ce qu'on appele du "Fast Reroute". En effet, si le prochain saut d'une FEC change, le LSR pourra directement utilisé le label qu'il aura conservé sans effectuer la requête à son routeur downstream. Les temps de coupure de service sont donc considérablement réduits et permettent une certaine continuité de service.
Voici un exemple de mode downstream on demand avec le protocole LDP :

Le principe de connexion est simple : deux routeurs adjacents vont s'échanger des messages UDP de type "HELLO" pour s'informer mutuellement de leur présence. Ensuite, une connexion TCP va s'établir entre les deux routeurs. Enfin, comme défini par le mode downstream on demand, le routeur upstream va effectuer une demande de label pour une FEC particulière au routeur downstream qui va le lui retourner. Une fois le mapping reçu, le routeur choisit de le conserver ou non selon la politique de rétention adoptée par l'administrateur réseau.
Label Switched Paths
La construction des chemins, dits LSP, peut se faire selon deux manières : le routage saut par saut identique à celui mis en oeuvre dans IPv4, et le routage explicite. Dans le routage saut par saut, ou "implicit routing", le chemin va être calculé en fonction de l'IGP qui a été choisi. C'est exactement le mécanisme utilisé dans les réseaux IPv4 classiques. Le routage explicite, ou "source routing", consiste à établir le chemin à partir de la source. Cette technique est sollicitée en ingénierie de trafic afin de garantir un chemin avec une bande passante minimale ou un temps d'acheminement maximum. Pour mettre en oeuvre l'explicit routing, il faut utiliser un protocole comme RSVP-TE, qui va permettre de collecter la liste des LSR à suivre au fur et à mesure que les noeuds traversés acquittent. La norme ne spécifie pas l'utilisation exclusive de RSVP, et laisse le choix à l'administrateur avec CR-LDP.
Un LSP est unidirectionnel, ce qui signifie que le chemin aller emprunté par des paquets est différent du chemin retour. L'avantage offert par cette propriété des LSP est qu'un chemin qui sera par exemple surchargé dans un sens ne sera pas obligatoirement repris pour le retour des données.