Route Distinguisher (RD) vs Route Target (RT)
Route Distinguisher (RD)
Le Route Distinguisher est un champ de 8 octets (64 bits) qui est ajouté au début d'un préfixe IPv4 (ou IPv6) pour créer un préfixe VPNv4 (ou VPNv6) unique. En d'autres termes, il transforme un préfixe IPv4 de 32 bits en un préfixe VPNv4 de 96 bits (RD + préfixe IPv4).
Dans un environnement MPLS L3 VPN, plusieurs clients peuvent avoir les mêmes adresses IP privées. Si ces préfixes étaient annoncés directement dans BGP, il y aurait des conflits d'adresses au niveau des PEs (Provider Edges) et ces derniers ne sauraient pas à quel VPN les préfixes appartiennent. Le RD résout ce problème.
Chaque VRF (Virtual Routing and Forwarding) instance sur un routeur PE est configurée avec un RD unique. Lorsqu'un routeur PE reçoit un préfixe IP d'un client (via un protocole de routage comme OSPF, statique,…) et qu'il le place dans une VRF, il ajoute le RD de cette VRF au préfixe. Ce nouveau préfixe VPNv4 est ensuite annoncé via BGP Multi-Protocol (MP-BGP) à d'autres routeurs PE.
Le but alors d’utiliser un RD dans une déclaration de VRF, c’est de rendre les préfixes IPv4 uniques dans la table globale commune du BGP. Déclaré localement dans la config de définition de VRF, le RD identifie tout simplement à quel VPN un network X appartient.
Prenons un exemple très simple :
- Client A annonce un réseau 10.0.0.0/24. Son VRF sur le PE est configuré avec RD 65800:1.
- Client B annonce aussi le même réseau 10.0.0.0/24. Son VRF sur le même PE est configuré avec RD 65800:2.
- Pas de conflit grâce au RD, identifiant local de chaque VRF sur le PE.
- Lorsque le PE envoie ces préfixes via MP-BGP :
• Le préfixe du Client A devient 65800:1:10.0.0.0/24.
• Le préfixe du Client B devient 65800:2:10.0.0.0/24.
Ces deux préfixes sont alors uniques et peuvent coexister dans la table BGP globale du fournisseur de services sans conflit.
Comme le montre la figure, c’est la combinaison du RD et du préfixe IPv4 (le préfixe VPNv4 résultant) qui est propagée par MP-BGP.
Les routeurs PE destinataires ne "filtrent" pas sur le RD, ils utilisent le RT pour cela (voir paragraphe suivant).
Pour être plus précis, on pourrait dire que le RD est "localement significatif" pour la création d'un préfixe VPNv4 unique
et "globalement transporté" comme partie intégrante de ce préfixe VPNv4.
Mais sa "fonctionnalité" principale est bien d'opérer au niveau local de la VRF sur le routeur PE pour lequel il a été configuré.
Il est à noter que cette valeur (RD) suit souvent le modèle suivant, qui reste un choix très répandu dans le métier IT : « AS Number : Site ID ».
Exemple : « 65220:130 » avec 65220 l’AS Global du BGP dans le nuage MPLS, et 130 l’Identifiant d’un site client connecté au PE.
La configuration ainsi que la vérification sont les suivantes :
PE-02(config)# ip vrf ClientA PE-02(config-vrf)# rd 65220:133
PE-02# sh ip vrf Name Default RD Interfaces ClientA 65220:133
Remarque : Il y a aussi les commandes suivantes pour certains OS :
Config : “vrf ClientA” Show : “show vrf” ou “show vrf all”
Pour conclure : Le Route Distinguisher (RD) permet -couramment au niveau d’un PE- l’unicité d’une adresse ou d’un Network X arrivant à travers le nuage MPLS. C’est l’identifiant unique d’une VRF dans un PE.
Route Target (RT) :
Le Route Target (RT), même format que le RD, est un « BGP Extended Communities Attribute » qui définit quels préfixes/VRFs à exporter/importer au niveau des PEs. C’est l’identifiant unique de la VRF à travers le nuage MPLS exporté ou importé vers/depuis une autre VRF.
Son rôle principal alors est de contrôler l'importation et l'exportation des routes entre les VRFs. Une fois que les préfixes VPNv4 uniques sont créés avec les RDs, il faut un mécanisme pour décider quel routeur PE doit recevoir quelles routes et dans quelle VRF. C’est le rôle de RT.
Comme les RDs, les RTs sont également des valeurs de 8 octets (64 bits) qui sont utilisées pour marquer comme des "étiquettes" les préfixes VPNv4 lorsqu'ils sont exportés d'une VRF X et pour filtrer les préfixes VPNv4 lorsqu'ils sont importés dans une VRF Y.
Comment ça fonctionne, techniquement les Exports et les Imports ?
- Export : Quand un routeur PE exporte un préfixe VPNv4 depuis une VRF, il y attache un ou plusieurs RTs définis pour cette VRF. Ces RTs sont transportés avec le préfixe dans les mises à jour MP-BGP.
- Import : Quand un routeur PE reçoit un préfixe VPNv4 via MP-BGP, il examine les RTs attachés à ce préfixe. Il compare ces RTs avec la liste des RTs "en Import" configurés pour chaque VRF locale. Si un RT du préfixe correspond à un RT d'importation d'une VRF, alors ce préfixe est importé dans la table de routage de cette VRF.
On va prendre un exemple simple pour explication :
Un Network Client X arrive sur le PE provenant à travers l’OSPF d’un CE. Plus précisément, ce Network arrive sur une interface PE mappée à la VRF du ClientX. Ce Network va être exporté vers les autres PEs du nuage IP-MPLS à travers le MP-BGP (même vrf). Comment l’identifier surtout en sachant que la notion de VRF est locale ?
C’est avec le RT en Export (configuré sous la VRF ClientX).
Sous les VRFs des autres PEs du nuage MPLS, si on veut que cette route soit apprise, on configure un RT en import avec la même valeur de RT déjà exporté par le PE initial :)
La conclusion est donc la suivante : Au niveau d’un PE, le RT gère la distribution des routes VPNv4 vers les VRFs appropriées sur les routeurs PE, permettant la création de topologies VPN complexes (full mesh…).
Il est à noter que le Route Distinguisher (RD) n'est pas retiré lors de l'exportation d'un préfixe VPNv4 depuis une VRF sur un routeur PE. Au contraire, il fait partie intégrante du préfixe VPNv4 qui est exporté et transporté via MP-BGP.
J’explique avec le cas ou la figure suivante :
Deux VRFs Client-A et Client-B sont propagées à travers les 3 PEs. On remarque bien l’unicité du RD pour chaque VRF sur le PE-01 contenant les deux VRFs.
PE-01 contient les deux VRFs, il « Importe » et « Exporte » les routes de la VRF Client-A avec un identifiant unique (RT) égal à 65180 :170. Pareil pour les routes de la VRF Client-B avec un RT égal à 65180 :180. Ces deux RTs sont uniques dans le nuage MPLS quel que soit le PE, ils identifient les Networks propagés/reçus de deux clients A et B.
PE-02 contient uniquement la VRF Client-A avec un RT en Import pour recevoir toutes les routes avec un RT 65180 :170, et un RT en export qui propage les routes avec un RT 65180 :170 vers l’extérieur (autres PEs). Il va communiquer donc avec les networks de la VRF Client-A du PE-01 en Import et en Export.
PE-03 contient uniquement la VRF Client-B avec un RT en Import pour recevoir toutes les routes avec un RT 65180 :180, et un RT en export qui propage les routes avec un RT 65180 :180 vers l’extérieur (autres PEs). Il va communiquer donc avec les networks de la VRF Client-B du PE-01 en Import et en Export.
Pour expliquer plus simplement, plus techniquement, le Récap du Process est le suivant :
• VRF Client-A sur PE1 a : RD 65180:171, RT export 65180:170, RT import 65180:170.
• VRF Client-A sur PE2 a : RD 65180:172, RT export 65180:170, RT import 65180:170.
• VRF Client-B sur PE1 a : RD 65180:181, RT export 65180:180, RT import 65180:180.
• VRF Client-B sur PE3 a : RD 65180:183, RT export 65180:180, RT import 65180:180.
Lorsque PE1 exporte pour le Client-A « 65180:171:10.0.0.0/24 », il y attache (colle) un RT 65180:170.
PE2 reçoit le préfixe du Client-A « 65180:171:10.0.0.0/24 » avec RT 65180:170.
Comme RT 65180:170 correspond au RT import de la VRF Client-A sur PE2, le préfixe 10.0.0.0/24 (sans le RD bien sûr, car le RD est retiré après importation) est inséré dans la table de routage de la VRF B, avec un RD local 65180:172.
De cette manière, les routes du Client-A peuvent traverser le MPLS et transiter entre les sites des PE1 et PE2.
Pareil pour le Client-B (entre PE1 et PE3), même s’il possède des préfixes identiques à Client-A dans ses réseaux locaux, grâce à l’unicité des RDs au niveau de PE1 puis au fait que les RTs ont orchestré le partage des routes entre les différents PEs.
Remarque : Quelques docs sur le Web simplifient au maximum les notions de RD et RT : mêmes RDs et RTs en Import et Export partout pour une VRF X. Techniquement, ce n’est pas la même chose. Pratiquement, c’est plus simple …
Recap :
Le Route Distinguisher (RD) et le Route Target (RT) sont deux concepts différents utilisés dans un Backbone IP-MPLS.
Le RD, local au niveau de PE, garde l’unicité des préfixes dans la table globale commune du BGP (chaque préfixe appartient à sa VRF, même s’il existe des similarités).
Le RD est ajouté au préfixe IPv4 lorsqu'il quitte la VRF et est converti en préfixe VPNv4 pour être propagé par MP-BGP. Il est par suite retiré lorsque le préfixe VPNv4 est importé dans une VRF de destination, et seul le préfixe IPv4 est placé dans la table de routage de cette VRF, avec le nouveau RD local du routeur destination.
Le RT est global et définie les préfixes d’une VRF à importer et exporter depuis/vers les PEs. Il est propagé et utilisé pour identifier l’appartenance des préfixes à leurs VRFs à travers le nuage MPLS. Il sert donc au transfert des routes entre les VRFs/VPNs (import et export).
Ce contenu t’a plu ? T'as trouvé utile ?
Tu peux m’offrir alors un Super Café ☕☕:)
Ton soutien me permet de continuer à créer des ressources gratuites et utiles :)
✔ Soutien volontaire
✔ Aucun abonnement
✔ Paiement 100% sécurisé
🔒 Paiement sécurisé via Stripe
Ajouter un commentaire
Commentaires
<img src='https://picsum.photos/200/300' alt="thanks" />
thanks for everthing
Merci pour ces détails très claires et limpide. Ceci vient ôter la zone d'ombre qui m'empêchait de comprendre ce sujet capital qui est l'IP-MPLS.
merci pour cette explication
cdt
Nice. petit coup de pouce utile
hello,
Je viens de vous remercie pour ce magnifique partage. en fait j'aimerais bien rejoindre la community.
bien a vous,
Ibrahim
Merci pour cet article ! Bien expliqué !