MP BGP
MP BGP
MP BGP
Des sites appartenant à des VPN isolés ayant la possibilité d’utiliser des plans d’adressage
recouvrants, les routes échangées entre PE doivent être rendues uniques au niveau des updates
BGP. Pour cela, un identifiant appelé RD (Route Distinguisher), codé sur 64 bits, est accolé à
chaque subnet IPv4 d’une VRF donnée. Le RD s’écrit sous la forme « ASN:nn » ou « IP-Address:nn
». Dans les exemples de configuration fournis avec ce document, le paramètre ASN a été fixé
arbitrairement à 100, et « nn » choisi en fonction de la VRF, quel que soit le routeur. Il est
toutefois conseillé de choisir un RD unique par routeur et par VRF. Une route VPNv4, formé d’un RD
et d’un préfixe IPv4, s’écrit ainsi sous la forme RD:Subnet/Masque. Exemple :
100:1:100.10.5.5/32. Lors de la création d’une VRF sur un PE, un RD doit être configuré. Les
routes apprises soit localement (routes statiques, Loopback sur le PE), soit par les CE rattachés au
PE seront ainsi exportées dans les updates MP-BGP avec ce RD. Les RD affectés aux différentes
VRF existantes sur un PE peuvent être consultés au moyen de la commande Cisco « show ip vrf » :
L10-R4# sh ip vrf
Loopback3
On constate que les interfaces connectées aux VRF sont également listées par cette commande.
Le RD permet de garantir l’unicité des routes VPNv4 échangées entre PE, mais ne définit pas la
manière dont les routes vont être insérées dans les VRF des routeurs Cisco PE. L’import et l’export
de routes sont gérés grâce à une communauté étendue BGP (extended community) appelée RT
(Route Target). Les RT ne sont rien de plus que des sortes de filtres appliqués sur les routes
VPNv4. Chaque VRF définie sur un PE est configurée pour exporter ses routes suivant un certain
nombre de RT. Une route VPN exportée avec un RT donné sera ajoutée dans les VRF des autres PE
important ce RT. Par exemple, si la route VPN 2000:1:192.168.1.0/24 est exportée par un routeur
PE avec comme liste de RT 2000:500 et 2000:501, tous les autres routeurs PE ayant une ou
plusieurs VRF important au minimum un de ces deux RT ajouteront cette route dans leurs VRF
concernées.
Sur la figure ci-dessus, les 3 sites rouges appartiennent au même VPN. Pour échanger les routes
entre tous les sites, chaque PE importe et exporte le RT 500:1000.
Le schéma suivant indique la marche à suivre pour créer une topologie de type « hub and spoke »
:
Dans ce exemple, le site vert est un site central (par ex. pour l’administration des différents VPN).
Chacun des 3 sites, appartenant à un VPN différent (Rouge, Violet et Bleu) importe les routes du
site central (RT 500:1001). Réciproquement, le site central importe les routes de tous les sites
clients (RT 500:1000). Bien que le site central ait accès à tous les sites clients, ceux-ci ne peuvent
se voir entre eux. En effet, aucune relation de RT n’est définie entre les sites clients (aucun site
n’importe ou n’exporte de route vers un autre).
Naturellement, comme le site vert « voit » les 3 sites clients, le plan d’adressage de ces sites doit
être compatible (c’est-à-dire non recouvrant) au niveau des routes échangées pour garantir
l’unicité des routes vis-à-vis du site central.
Les VRF sont configurées sur les routeurs Cisco PE avec les paramètres suivants :
ip vrf TEST
rd 500:1000
En plus du RD et des RT, les updates MP-BGP contiennent d’autres informations, telles que le Site
d’Origine (SOO), l’adresse IP du PE annonçant la route (PE nexthop) et le label VPN affecté par ce
PE.
La configuration d’un routeur Cisco PE pour échanger des routes VPNv4 se présente sous la forme
suivante :
router bgp 10
no synchronization
bgp log-neighbor-changes
no auto-summary
address-family vpnv4
no auto-summary
exit-address-family
On remarque la présence d’une section supplémentaire par rapport à une configuration BGP
traditionnelle, introduite par la commande Cisco « address-family vpnv4 ». Cette partie de la
configuration BGP contient tous les voisins tournant MP-BGP. Pour pouvoir ajouter un voisin dans la
configuration VPNv4, ce voisin doit être préalablement déclaré dans la configuration globale de BGP
(commande Cisco « remote- s » et autres). Pour éviter qu’un voisin ne soit actif à la fois pour BGP
et MP-BGP, la ligne « no neighbor <neighbor> activate » doit être insérée globalement.
Naturellement, il est tout à fait possible pour un routeur d’être actif pour BGP et MP-BGP
simultanément. Par exemple, le BGP traditionnel servira à propager les routes Internet aux
routeurs PE, tandis que MP-BGP servira à la propagation des routes VPN.
Pour propager les Route-Target (RT), qui définissent l’appartenance aux VPN et qui sont des
communautés étendues BGP, la ligne « neighbor <neighbor> sendcommunity extended » doit être
utilisée.
Dans le réseau de démonstration MPLS/VPN, le routeur Cisco L10-R1 fait office de Route Reflector
BGP. Sa configuration Cisco est la suivante :
router bgp 10
no synchronization
bgp log-neighbor-changes
bgp cluster-id 10
address-family vpnv4
no auto-summary
exit-address-family
Afin de faciliter l’ajout de nouveaux voisins, la notion de « peer-group » a été utilisée. Un peer
group est défini par un nom, et il est possible de fixer certaines propriétés pour ce groupe : AS
distant (remote-as), interface source pour les updates (update-source), etc. Chaque voisin est
ensuite ajouté dans ce groupe avec un commande Cisco du type: « neighbor 10.10.5.5 peer-group
iBGP ». Dans cet exemple, toutes les commandes appliquées au groupe « iBGP » le seront pour le
voisin 10.10.5.5.
Plusieurs commandes existent pour s’assurer du bon fonctionnement de BGP sur les routeurs. Par
exemple, pour connaître toutes les routes apprises par MP-BGP sur un routeur Cisco donné, la
commande Cisco « show ip bgp vpnv4 all » peut être utilisée :
internal
Si l’on souhaite se restreindre à une VRF donnée, la commande Cisco « show ip bgp vpnv4 vrf
<vrf> » peut être employée :
internal
Les labels fournis dans les updates MP-BGP peuvent être affichés au moyen de la commande Cisco
« sh ip bgp vpnv4 [vrf <vrf> | all] tags » :
Les deux paragraphes suivants donnent des exemples de configuration avec eBGP et RIPv2. Dans
le réseau de démonstration, eBGP est utilisé entre L10-R5 et L10-R7, tandis que RIPv2 est utilisé
entre L10-R4 et L10-R6. Le routeur Cisco L10-R7 a été placé dans le VPN « RED », et le routeur
Cisco L10-R6 dans le VPN « GREEN ».
router bgp 10
[...]
redistribute connected
no auto-summary
no synchronization
exit-address-family
[...]
L’interface reliant L10-R5 et L10-R7 étant paramétrée comme suit (sur L10-R5) :
bandwidth 125
Chaque voisin devant être actif en eBGP dans une VRF donné doit donc être configuré dans la
section « address-family ipv4 vrf <vrf> » correspondante. A titre indicatif, la configuration BGP de
L10-R7 est fournie ci-dessous :
bgp log-neighbor-changes
On constate donc que la configuration du routeur CE est tout à fait classique, sans présence de VRF
ou de toute autre notion de VPN.
La configuration Cisco RIPv2 avec un routeur CE suit le même principe qu’une configuration eBGP,
mais les routes apprises par RIP doivent être réinjectées dans MP-BGP et réciproquement :
router rip
version 2
version 2
network 100.0.0.0
no auto-summary
exit-address-family
[...]
router bgp 10
[...]
redistribute connected
redistribute rip
no auto-summary
no synchronization
exit-address-family
[...]
L’interface reliant L10-R4 et L10-R6 est paramétrée de la manière suivante (sur L10-R4) :
interface Serial0/0
bandwidth 125
encapsulation ppp
no fair-queue
clockrate 125000
end
Le label utilisé pour atteindre L10-R5 est déterminé grâce à la table CEF globale du routeur :
0 packets, 0 bytes
local tag: 17
L10-R4 imposera donc le label 27 pour atteindre L10-R5, le prochain saut étant le routeur Cisco
L10-R2 (10.10.24.2). Le deuxième label (dit label VPN), servant à sélectionner l’interface de sortie
sur L10-R5, peut être déterminé grâce à la table CEF de la VRF « RED », indépendante de la table
CEF globale :
0 packets, 0 bytes
Le label VPN est donc 26. Pour joindre l’adresse IP 100.10.5.5 de la VRF « RED », le routeur Cisco
L10-R4 imposera donc la pile de label { 27 26 }. Sur le backbone MPLS, la commutation se fera
uniquement en fonction du premier label, comme le montre le résultat de la commande Cisco
traceroute :
On remarque que seul le premier label a été modifié, le label VPN ayant été conservé intact
pendant tout le cheminement sur le backbone. La copie d’écran suivante montre quel aurait été le
résultat de la commande Cisco traceroute pour atteindre l’adresse de Loopback 10.10.5.5 (adresse
globale) à partir de L10-R4 :
Il apparaît clairement que la présence du label VPN n’a pas d’effet sur les routeurs P du backbone :
ceux-ci switchent les paquets entre routeurs PE et n’ont aucune information sur les labels VPN.
Rappelons que les labels VPN, appris par MP-BGP, peuvent être affichés au moyen de la commande
Cisco « show ip bgp vpnv4 vrf <vrf> tags » :
On retrouve bien le label 26 pour atteindre le subnet 100.10.5.5/32 sur le routeur Cisco L10-R5. Si
l’on effectue un traceroute vers l’adresse 100.10.7.7, appartenant à L10-R7, on obtient le résultat
suivant :
On constate la présence du Penultimate Hop Popping, entre les routeurs L10-R3 (10.10.24.3) et
L10-R5. (100.10.57.5). En effet, L10-R3 a retiré le premier label 23, servant à atteindre L10-R5.
Ce fonctionnement est confirmé en consultant la table TFIB de L10-R3 :
29 Aggregate 100.10.3.3/32[V] 0
0 packets, 0 bytes
local tag: 23
Le schéma ci-dessous montre le trajet suivi par les paquets, de L10-R4 vers L10-R7 :
La première méthode (la plus ancienne) consiste à une utiliser une extension de la commande
Cisco « ip route » pour définir une route par défaut dans les VRF des routeurs PE, au moyen de la
commande Cisco :
où PE-Internet est l’adresse globale du PE fournissant l’accès à Internet. Pour que le retour des
paquets puisse être effectif vers le CE concerné, les routes VPN du CE doivent être déclarées
globalement sur son PE de rattachement, et propagées au PE-Internet (IGP, iBGP, etc.). Par
exemple, si un réseau 120.2.1.0/24 est connecté à un CE 120.1.1.1 appartenant au VPN « GREEN
», le PE doit contenir les deux lignes suivantes :
Lorsque le PE recevra un paquet sur la VRF « GREEN », il effectuera un lookup dans la table de
routage de cette VRF. Si aucune entrée n’est trouvée pour la destination IP, la route par défaut
injectée au moyen de la commande Cisco « ip route » sera utilisée. Il est à noter que la table de
routage globale du routeur est examinée pour atteindre PEInternet, et que les paquets traversent
le backbone MPLS sans label VPN (seul le label de PE-Internet est accolé par le PE).
Naturellement, ce type de routage n’est pas optimal, car si plusieurs PE disposent d’un accès
Internet, seul le PE déclaré dans la route par défaut sera employé. De plus, cette méthode « casse
» la notion de VRF avec la déclaration des routes VPN de manière globale sur les PE. Enfin, tous les
PE doivent être configurés de cette manière, avec pour chacun la route par défaut et la mise en
place dans la table de routage globale des routes VPN.
Une solution plus propre techniquement pour propager une route par défaut à tous les PE est
d’utiliser la notion de VPN avec une topologie « Hub and Spoke ». Sur le routeur PE-Internet, une
VRF particulière est configurée pour annoncer la route par défaut (apprise par un autre routeur,
généralement avec eBGP). Si l’on souhaite propager manuellement cette route à un certains sites
de différents VPN, il suffit d’employer la politique d’attribution des RT du schéma ci-dessous :
Chacun des sites clients reçoit la route par défaut provenant du site vert central grâce au RT
500:1001. Pour permettre le retour des paquets, chaque site doit exporter vers le site central ses
propres routes (RT 500:1000). Chaque PE doit donc être configuré avec ces RT pour permettre la
propagation de la route par défaut. Il est ainsi possible de ne propager la route par défaut qu’à
certains sites d’un même VPN (les VRF de ces sites devant traiter les RT du VPN « Internet »), en
configurant les PE adéquats et en ne changeant rien sur les autres :
Si l’on souhaite propager automatiquement la route par défaut à tous les sites d’un même VPN
sans avoir à modifier la configuration des différents PE, il suffit d’importer et d’exporter le RT de ce
VPN dans la VRF « Internet ». De cette manière, aucun changement dans la configuration des PE
rattachés à ces sites n’est nécessaire.
Internet