Définition d’un réseau VPN BGP / MPLS et des entités collaboratrices
Dans un réseau VPN de type BGP / MPLS, nous avons deux entités qui collaborent contractuellement pour établir des liens logiques inter-sites. Ces deux entités sont :
- D’une part la société (Société A dans les exemples) qui a besoin d’une connectivité vers ses sites distants ou vers des partenaires en gardant confidentiel son réseau et donc la connectivité entre ses sites.
- D’autre part l’opérateur qui possède un backbone IP routé en MPLS pur. Par exemple, notre société A est constitué de 6 sites distants.
Attention : ces sites sont différents au niveau topologie, mais peuvent être géographiquement constitués de plusieurs sites, avec par exemple un routage interne OSPF sur une ligne louée.
Ces 6 sites possèdent chacun des réseaux locaux (identifiés par des adresses IPv4 privées au sens de la RFC 1918 ou éventuellement publiques), qui sont terminés par un ou plusieurs routeurs CE (Customer Edge). Ces routeurs CE connaissent donc les routes IPv4 privées.
L’opérateur fournit alors un routeur PE (Provider Edge) qui va permettre une connectivité au réseau public IPv4 pour transmettre les paquets d’un PE à un autre PE en passant par les routeurs du backbone opérateur P (Provider), qui ne connaissent pas les routes privées de la société A.
Pour pouvoir communiquer entre eux, les PE ont besoin de connaître les routes privées. Les routes privées IPv4 du CE apprises par le PE vont être transmises aux autres routeurs PE du VPN grâce à BGP et son extension multi protocole VPN-IPv4.
Ces routes, une fois apprises par BGP, peupleront les tables de transfert du routeur PE afin que celui-ci sache comment contacter un autre routeur PE du VPN.
Remarque : un VPN contient au moins deux routeurs PE. Il peut cependant en contenir plus que deux et ainsi permettre de créer un ou plusieurs VPN pour une même entité.
CE, PE et circuit d’attachement
Les routeurs peuvent être reliés les uns aux autres ou à des systèmes terminaux dans une grande diversité de possibilités : connexions PPP, VCs ATM, interfaces Ethernet, VLANs sur des interfaces Ethernet, tunnels GRE, tunnels L2TP, tunnels IPsec, etc. On utilisera le terme "circuit d’attachement" pour signifier un tel attachement à un routeur. Un circuit d’attachement peut être une connexion de niveau 2 ou un tunnel quelconque. Ce qui compte est de permettre aux équipements d’être reliés par ce circuit d’attachement.
Chaque site VPN doit contenir un ou plus équipements CE. Chaque équipement CE est relié par un circuit d’attachement, à un ou plusieurs routeurs PE.
Le circuit d’attachement à travers duquel les paquets circulent quand ils vont du CE au PE est connu sous le nom de circuit d’attachement de pénétration (ingress) des paquets et le PE sous le nom de PE de pénétration des paquets. Le circuit d’attachement à travers duquel les paquets circulent quand ils vont du PE au CE est connu sous le nom de circuit d’attachement d’évacuation (egress) des paquets et le PE sous le nom de PE d’évacuation des paquets.
On dira que le routeur PE est attaché à un VPN particulier s’il est attaché à un équipement CE qui est dans un site de ce VPN. De façon similaire, on dira qu’un routeur PE est attaché à un site particulier s’il est attaché à un équipement CE qui se trouve dans ce site.
VRFs : Des tables de transfère multiples dans les PEs
Chaque routeur PE maintient un certain nombre de tables de transfère séparées. Une de ces table de transfère est celle par défaut. Les autres sont les les "Tables de routage et de transfère du VPN" (ou VPN Routing and Forwarding tables, VRFs).
Les VRFs et les circuits d’attachement
Chaque circuit d’attachement PE/CE est associé, par configuration avec une ou plusieurs VRFs. Un circuit d’attachement qui est associé avec une VRF est appelé un "circuit d’attachement VRF".
Dans le cas le plus simple et la majorité des cas typiques, un circuit d’attachement PE/CE est associé avec exactement une VRF. Quand un paquet IP est reçu sur un circuit d’attachement particulier son adresse de destination IP est recherchée dans la VRF associée. Le résultat de cette recherche détermine comment router le paquet. La VRF utilisée par le PE de pénétration du paquet pour router un paquet particulier est appelée la VRF de pénétration du paquet (Il existe également la notion de VRF d’évacuation, située au PE d’évacuation du paquet).
Si un paquet IP arrive sur un circuit d’attachement qui n’est associé à aucune VRF, l’adresse de destination du paquet est recherchée dans la table de transfère par défaut et le paquet est routé en fonction.
Intuitivement, on peut penser que la table de transfère par défaut contient les routes publics et que les VRFs contiennent les routes privées. On peut penser de manière similaire que les circuits d’attachement VRF sont privés et que les circuits d’attachement non-VFR sont publics.
Associer des paquets IP avec des VRFs
Quand un routeur PE reçoit un paquet venant d’un équipement CE, il doit déterminer le circuit d’attachement par lequel le paquet est arrivé, étant donné que cela détermine la VRF (ou le groupe de VRFs) qui peut être utilisée pour transférer le paquet. En général, pour déterminer le circuit d’attachement par lequel un paquet est arrivé, un routeur PE regarde l’interface physique par laquelle le paquet est arrivé et éventuellement certaines caractéristiques de l’en-tête de niveau 2 (Le PE contrôle que le client n’a pas modifié frauduleusement les données des paquets qu’il envoie).
Dans certains cas, un site particulier peut être divisé par le client en plusieurs sites virtuels. Le FA peut attribuer un ensemble de VRFs à utiliser pour router les paquets provenant de ce site et peut autoriser le client à positionner lui-même certaines caractéristiques du paquet, qui sont ensuite utilisées pour choisir une VRF particulière dans cet ensemble. Par exemple, chaque site virtuel peut être un VLAN.
Remplir les VRFs
Avec quel ensemble de routes les VRFs sont elles peuplées ?
Comme exemple, prenons PE1, PE2 et PE3, trois routeurs PE et CE1, CE2 et CE3, trois routeurs CE. Supposons que PE1 apprend de CE1 les routes accessibles sur le site de CE1. Si PE2 et PE3 sont attachés respectivement à CE2 et CE3, et qu’il y a un VPN V contenant CE1, CE2 et CE3, alors PE1 utilise BGP pour distribuer à PE2 et PE3 les routes qu’il a apprises de CE1. PE2 et PE3 utilisent ces routes pour peupler les VRFs qu’ils associent respectivement avec les sites de CE2 et CE3. Les routes des sites qui ne sont pas dans le VPN V n’apparaissent pas dans ces VRFs, ce qui signifie que les paquets de CE2 ou CE3 ne peuvent pas être envoyés à des sites qui ne sont pas dans le VPN V.
Quand nous parlons d’un PE qui "apprend" les routes d’un CE, nous ne supposons aucune technique particulière d’apprentissage. Le PE peut apprendre les routes en utilisant un algorithme de routage dynamique, mais il peut aussi les "apprendre" en configurant ces routes (routage statique). Les routeurs PE ont également besoin d’apprendre des autres PE les routes qui appartiennent à un VPN donné.
S’il y a plusieurs circuits d’attachement menant à un routeur PE d’un site particulier, ils peuvent tous être associés à la même VRF. Mais si les politiques l’imposent, elles peuvent être associées à différentes VRFs. Par exemple, la politique pourrait être qu’un circuit d’attachement particulier pour un site est utilisé uniquement pour le trafic intranet, alors qu’un autre circuit d’attachement de ce site sera utilisé pour le trafic extranet (peut-être que le CE sur ce circuit d’attachement est un firewall alors que le CE attaché au circuit d’attachement de l’intranet ne l’est pas). Dans ce cas, les deux circuits d’attachement seront utilisés avec des VRFs différentes.
Structure des adresses VPN-IPv4
L’extension Multi Protocole de BGP (MP-BGP) permet à BGP de supporter des routes de différentes familles. Ainsi, pour les VPN BGP MPLS, une nouvelle famille d’adresse a été créée : VPN-IPv4. Une adresse IPv4 est codée sur 12 octets, commencant par un identifiant unique de route, le RD (Route Distinguisher) sur 8 octets et se terminant par une adresse IPv4 sur 4 octets.
Adresse VPN-IPv4 (12octets) | |
Route Distinguisher (8octets) | Adresse IPv4 (4octets) |
Ainsi si plusieurs VPN utilisent la même classe d’adresse IPv4, BGP connaîtra une route unique pour chaque réseau VPN-IPv4.
Le RD est juste un nombre qui ne contient jamais d’informations inhérentes à l’adresse IPv4, il n’identifie pas l’origine de la route ou l’ensemble des VPN auxquels la route est distribuée. Le RD permet uniquement de créer une route distincte vers un préfixe IPv4 commun.
Le RD est structuré de telle sorte que l’opérateur peut administrer celui-ci. Il est constitué de plusieurs champs, dont le champ type de 2 octets ainsi qu’un champ pour l’administrateur et un champ pour le numéro assigné.
Adresse VPN-IPv4 (12octets) | |||
Route Distinguisher (8octets) | Adresse IPv4 (4octets) | ||
Type (2octets) | Admin(Xoctets) | N° Assigné (Xoctets) | Adresse IPv4 (4octets) |
En fonction des types de RD, la répartition des 6 octets restants sera partagé entre le champ administrateur et celui pour le numéro assigné.
Structure des RD
Comme précisé dans le paragraphe précédent, l’encodage et la structure des RD dépendra du type utilisé.
Ainsi pour le type 0, nous aurons une structure de RD suivant :
Route Distinguisher (8octets) | ||
Type (2octets) | Admin (2octets) | N° Assigné (4octets) |
0 | ASN public | ASN attribué |
Le champ administrateur de 2 octets permettra d’affecter un ASN public et le numéro assigné un ASN attribué.
Pour le type 1, nous aurons une structure de RD suivant :
Route Distinguisher (8octets) | ||
Type (2octets) | Admin (4octets) | N° Assigné (2octets) |
1 | Adresse IP publique | Adressage privé attribué |
Le champ administrateur de 4 octets permettra d’affecter une adresse IP publique et le numéro assigné un numéro d’un espace d’adressage administré par l’entreprise mais attribué par une autorité.
Pour le type 2, nous aurons une structure de RD suivant :
Route Distinguisher (8octets) | ||
Type (2octets) | Admin (2octets) | N° Assigné (4octets) |
2 | ASN public | ASN attribué |
Le champ administrateur de 4 octets permettra d’affecter un ASN public et le numéro assigné un ASN attribué par une autorité et administré par l’entreprise.
Ainsi chaque route du VPN sera unique grâce à IPv4 et pourra être exporté vers BGP pour redistribuer les routes aux autres PE.
Exemple pratique
Dans l’exemple ci-dessous, on retrouve notre société A. Celle-ci utilise 3 réseaux privées RFC1918. Imaginons que la société veuille créer deux VPN différents :
- Les magasins ne connaissent que le VPN vers le siège social
- L’entrepôt et l’usine ne connaissent que le VPN vers le siège social
Ainsi, deux RD différents seront configurés au niveau du siège. Cela nous permettra d’avoir deux routes VPN-IPv4 différentes et uniques. Si le RD pour le VPN Siège-Magasin est 100:2 et le RD pour le VPN Siège – Entrepôt – Usine est 100:1, alors les deux routes VPN-IPv4 au niveau du siège seront :
- VPN Siège – Magasin : 100:2:172.16.0.0/16
- VPN Siège – Entrepôt – Usine : 100:1:172.16.0.0/16
Ainsi lorsque les routes VPN-IPv4 seront transmises à BGP, le PE du siège social saura à qui envoyer les deux routes uniques VPN-IPv4 vers 172.16.0.0/16.
Contrôle de la redistribution des routes
Nous allons maintenant nous intéresser à comment les routes VPN-IPv4 sont redistribuées.
Le PE apprend en effet les routes privées du CE. Les routes apprises dépendent du protocole de routage utilisé et du processus de décision de celui-ci. Ces routes sont ensuite converties comme vue précédemment en adresses unique VPN-IPv4 et exportées à BGP. Cette route est ensuite redistribuée par BGP à tous les PE qui ont besoin de la connaître.
L’attribut Route Cible
Toutes les VRFs sont associées à au moins un attribut Route Cible (Route Target ou RT).
Quand une route VPN-IPv4 est créée, elle est associée à un ou plusieurs RT. Ils sont transportés par BGP comme attribut de la route.
Toutes les routes associées avec un RT 100:1 doivent être distribuées à tous les routeurs PE qui ont une VRF associée avec le RT 100:1.
Le RT peut donc être vu comme un identifiant d’un ensemble de sites (ou ensemble de VRFs). Associer l’attribut RT à une route VPN-IPv4 permet à cette route d’être placée dans les VRFs qui sont utilisés pour router le trafic qui est reçu de ce site.
Etant donné que les routes peuvent être soit envoyées par un PE, soit reçues d’un autre PE, on utilise la notion de « Import Targets » et de « Export Targets ».
- Import Target : le routeur PE attache un RT à une route reçue d’un site
- Export Target : le routeur PE utilise le RT pour vérifier que la route reçue d’un autre PE est valide et l’ajoute aux VRFs
Ces RT sont structurés de manière identique que le RD.
Remarque : une route peut avoir seulement un RD, mais peut avoir plusieurs RT. En effet, BGP est plus perfomant si la route a plusieurs attributs. On peut ne pas utiliser l’attribut RT en créant plus de routes VPN-IPv4 (donc plus de RD), mais la montée en charge sera moins favorable pour BGP et reviendrait à un VPN point-à-point, ce qui n’est pas l’objectif des VPN BGP / MPLS.
Exemple de redistribution en fonction du RT
Reprenons notre exemple de la société A, qui souhaite créer des VPN de topologie Hub’n’spoke (Chaque site ne doit voir que les routes du siège et le siège connaît toutes les routes).
Si le RT associés aux routes privées du siège est 500:1001 et le RT associé aux routes privées des autres sites est 500:1000, alors :
- Pour le siège, on importera les routes des autres sites (Import 500:1000) et on exportera les routes privées locales (Export 500:1001)
- Pour les autres sites, le PE importera les routes du siège (Import 500:1001) et on exportera les routes privées locales au PE du siège (Export 500:1000).
Remarque : Dans le cas d’une topologie Hub’n’spoke, on ne peut recouvrir les plans d’adressage IP, en conséquence, chaque site devra avoir sa propre classe d’adresse IP.
Si en plus de cette configuration, on souhaite établir une liaison VPN entre l’entrepôt et l’usine par exemple, alors on ajoutera les imports / exports suivants :
- Pour l’usine, on associera Import 500:1003 aux routes de l’entrepôt et on communiquera les routes locales avec Export 500:1002.
- Pour l’entrepôt, on associera Import 500:1002 aux routes de l’usine et on communiquera les routes locales avec Export 500:1003.
Redistribution des routes avec BGP
Dans notre exemple, l’entreprise A possède deux sites : le siège social et l’usine. Le partenaire B possède un site, et il doit accéder au serveur situé au siège social de A. Le backbone opérateur comporte également une entreprise C.
Les routeurs CE des différents sites vont tout d’abord maintenir une liste à jour des routes vers les réseaux auxquels ils sont connectés. Cette liste de routes IPv4 va être enseignée aux routeurs PE correspondants soit par un protocole de routage dynamique comme OSPF soit par du routage statique (configuration manuelle des tables de routage).
Le routeur PE va alors placer les routes IPv4 qu’il vient d’apprendre du CE dans la VRF du circuit d’attachement sur lequel est connecté le CE. Il va ensuite transformer les routes IPv4 en routes VPN-IPv4. Ces routes VPN-IPv4 vont alors être distribuées par BGP aux autres routeurs PE qui sont concernés par les routes du VPN en question.
Ainsi dans notre exemple :
- Les PE des deux sites A vont s’échanger leurs routes et les placer dans les VRFs correspondantes,
- Le PE du siège social de A va avertir ses routes au PE du site de l’entreprise B, qui va en faire de même envers son interlocuteur. Les routes échangées vont de même être placées dans les VRFs par le processus de décision BGP.
- Les PE qui ont reçu des routes d’autres PE vont ensuite transmettre ces routes aux CE attachés par le mécanisme de synchronisation des routes utilisé (le plus souvent un protocole de routage dynamique comme OSPF).
Notons que : le PE de l’entreprise B ne va pas échanger ses routes avec l’usine de A, puisque les partenaires n’ont pas à communiquer avec l’usine, seulement avec le serveur situé dans le siège social.
Le PE de l’entreprise C ne communique ses routes à aucun site, puisque C n’a pas de lien avec les autres sites.
Cette solution de VPN BGP-MPLS permet donc de maximiser les ressources du réseau et d’augmenter sensiblement la montée en charge : un PE n’a jamais à connaître l’ensemble des routes du réseau, il ne connaît que les routes des VPN qu’il peut joindre.
Transport des paquets dans le VPN
Lorsqu’un paquet de donnée arrive sur un routeur CE, celui-ci regarde la route IPv4 correspondant à l’adresse du site distant, et transmet ce paquet au routeur PE correspondant (sachant qu’un CE peut être attaché à plusieurs PE). Le PE va ensuite router ce paquet vers le PE du site de destination en l’envoyant sur l’interface correspondante. Un label MPLS va alors être apposé au paquet correspondant au chemin de l’interface de sortie selon du routeur PE selon les correspondances établies dans la table de FEC. Le paquet va alors transiter sur le backbone du FA : il va être commuté par les routeurs P. Ceux-ci vont utiliser leur tables FIB pour « swapper » les labels MPLS correspondants à leurs interfaces, jusqu’à arriver au routeur PE de destination. Ce routeur va décapsuler le dernier label MPLS présent, puis transmettre le paquet au CE correspondant (ils peuvent être plusieurs à être connectés au PE). Le CE va ensuite transmettre ce paquet à la destination finale.