C'est un protocole de commutation de paquet, créé à l'origine pour soulager la CPU des routeurs suite à la multiplication du nombre de réseaux à router ; mais depuis le développement de la puissance des puces spécialisées (ASICs) ainsi que le développement des techniques de commutation comme le CEF, l'atout majeur du MPLS réside dans ses fonctions d'ingénierie de trafic, de qualité de service ou de VPN.
Quand un paquet entre dans un nuage MPLS, le routeur d'entrée (iLSR) lui assigne un label, et chaque routeur intermédiaire (LSR) commute le paquet vers le routeur suivant en modifiant son label. Le chemin parcouru par le paquet est prédéfini (comme de la commutation de cellule en ATM) grâce au protocole LDP, et donc beaucoup plus rapide que du routage traditionnel. Par exemple quand un LSR R2 voit un paquet arriver du routeur R1 avec le label 4, il sait qu'il faut réacheminer ce paquet avec le label 8 vers le routeur R3. R3 voit le paquet arriver avec le label 8 depuis R2 ; il le renvoie vers R4 avec le label 3, et ainsi de suite (on appelle cela le label swapping) jusqu'au routeur de sortie (eLSR) qui va supprimer le label du paquet. Ces décisions se font sur la base d'une table d'association “source/label ⇒ destination/label” locale à chaque routeur, qui est mise à jour par le protocole LDP.
Voici un schéma de principe piqué sur l'excellent article de frameip 1) :
Il existe 2 modes de fonctionnement :
Pour ces raisons on dit que le MPLS est un protocole de niveau 2 ou 2,5.
Un label MPLS peut correspondre à une IP destination, de la QoS, une adresse source ou un circuit de niveau 2.
Soit 2 routeurs R1 et R2 : on active le CEF et le MPLS sur les interfaces qui vont bien ; on augmente la MTU des paquets MPLS (il faudra en tenir compte sur les éventuels équipements intermédiaires) :
Sur R1 :
ip cef int fa0/1 description vers R2 ip address 10.0.0.1 255.255.255.0 mpls ip mpls label protocol ldp mpls mtu 1512
Sur R2 :
ip cef int fa0/1 description vers R1 ip address 10.0.0.2 255.255.255.0 mpls ip mpls label protocol ldp mpls mtu 1512
La MTU doit être augmentée sur les interfaces WAN à cause du header MPLS :
MP-BGP (MultiProtocol BGP) permet d'échanger des routes Multicast et des routes VPNv4.
Un RD (Route Distinguisher) est un identifiant de 64 bits accolé à chaque subnet d'un VRF (Virtual Router Forwarding) ; il permet de ne pas mélanger les réseaux de différents clients/VPN qui pourraient se recouvrir. Il s'écrit sous la forme ASN:nn, par exemple 100:1 ; quand on ajoute une annonce de réseau (un préfixe avec son masque) cela donne une adresse VPNv4, par exemple 100:1:192.168.0.0/24. Ces adresses VPNv4 sont échangées entre les PE routers en MPBGP.
RT (Route Target) est une sorte de communauté qui permet d'échanger les annonces VPNv4 entre tous les PE qui y appartiennent. Les RT permettent donc de définir l'appartenance à un ou plus VPN. Il y a les import et les export.
Le BGP VPNv4 n'est utilisé qu'entre PE routers ; les P routers n'utilise que du BGP IPv4 pour que la solution soit scalable.
Pour faire communiquer 2 PE ensemble il faut définir un VRF comme cela :
Sur R1 :
ip vrf RED rd 100:20 route-target export 500:1 route-target import 500:2
Sur R2 :
ip vrf RED rd 100:20 route-target export 500:2 route-target import 500:1
show mpls interfaces show mpls ldp discovery show mpls ldp neighbor show mpls ldp bindings