3. VRFs - Multiple Forwarding Tables in PEs
3. VRFs : plusieurs tables de transit dans les PE (VRFs: Multiple Forwarding Tables in PEs)
Chaque routeur PE maintient un certain nombre de tables de transit (forwarding table) séparées. L'une de ces tables est la « table de transit par défaut » (default forwarding table) ; les autres sont des « tables de routage et de transit VPN » (VPN Routing and Forwarding table), ou « VRF ».
3.1. VRF et circuits de raccordement (VRFs and Attachment Circuits)
Chaque circuit de raccordement PE/CE est associé, par configuration, à un ou plusieurs VRF. Un circuit de raccordement associé à un VRF est appelé un « circuit de raccordement VRF » (VRF attachment circuit).
Dans le cas le plus simple et le plus typique, un circuit de raccordement PE/CE est associé à exactement un VRF. Lorsqu'un paquet (packet) IP est reçu sur un circuit de raccordement particulier, son adresse de destination IP est recherchée (lookup) dans le VRF associé. Le résultat de cette recherche détermine comment router le paquet. Le VRF utilisé par le PE d'entrée d'un paquet pour router ce paquet est appelé le « VRF d'entrée » (ingress VRF) de ce paquet. (Il existe aussi la notion de « VRF de sortie » (egress VRF), situé sur le PE de sortie du paquet ; cela est discuté à la section 5.)
Si un paquet IP arrive sur un circuit de raccordement non associé à un VRF, l'adresse de destination du paquet est recherchée dans la table de transit par défaut, et le paquet est routé en conséquence. Les paquets acheminés selon la table de transit par défaut incluent les paquets provenant des routeurs P ou PE voisins, ainsi que les paquets provenant de circuits de raccordement orientés client non associés à des VRF.
Intuitivement, on peut considérer que la table de transit par défaut contient des « routes publiques » (public route), et que les VRF contiennent des « routes privées » (private route). On peut de même considérer les circuits de raccordement VRF comme « privés » et les circuits de raccordement non VRF comme « publics ».
Si un circuit de raccordement VRF particulier relie le site S à un routeur PE, alors la connectivité depuis S (via ce circuit) peut être restreinte en contrôlant l'ensemble des routes saisies dans le VRF correspondant. L'ensemble des routes de ce VRF doit être limité à l'ensemble des routes menant vers les sites ayant au moins un VPN en commun avec S. Ainsi, un paquet envoyé depuis S via un circuit de raccordement VRF ne peut être routé par le PE vers un autre site S' que si S' appartient à l'un des mêmes VPN que S. Autrement dit, toute communication (via les routeurs PE) entre deux sites VPN n'ayant aucun VPN en commun est empêchée. La communication entre sites VPN et sites non VPN est empêchée en gardant les routes vers les sites VPN hors de la table de transit par défaut.
S'il existe plusieurs circuits de raccordement menant de S à un ou plusieurs routeurs PE, il peut y avoir plusieurs VRF utilisables pour router le trafic (traffic) depuis S. Pour restreindre correctement la connectivité de S, le même ensemble de routes devrait exister dans tous les VRF. Alternativement, on peut imposer différentes restrictions de connectivité sur différents circuits de raccordement depuis S. Dans ce cas, certains des VRF associés aux circuits de raccordement de S contiendraient des ensembles de routes différents de certains autres.
Nous autorisons le cas où un seul circuit de raccordement est associé à un ensemble de VRF plutôt qu'à un seul VRF. Cela peut être utile si l'on souhaite diviser un seul VPN en plusieurs « sous-VPN » (sub-VPN), chacun avec différentes restrictions de connectivité, où une caractéristique des paquets du client est utilisée pour choisir parmi les sous-VPN. Pour simplicité, nous parlerons généralement d'un circuit de raccordement comme associé à un seul VRF.
3.2. Associer les paquets IP aux VRF (Associating IP Packets with VRFs)
Lorsqu'un routeur PE reçoit un paquet d'un équipement CE, il doit déterminer le circuit de raccordement par lequel le paquet est arrivé, car cela détermine à son tour le VRF (ou l'ensemble de VRF) pouvant être utilisé pour transmettre ce paquet. En général, pour déterminer le circuit de raccordement par lequel un paquet est arrivé, un routeur PE prend note de l'interface (interface) physique par laquelle le paquet est arrivé, et éventuellement d'un aspect de l'en-tête de couche 2 (layer 2 header) du paquet. Par exemple, si le circuit de raccordement d'entrée d'un paquet est un VC relais de trames, l'identité du circuit de raccordement peut être déterminée à partir de l'interface physique de relais de trames par laquelle le paquet est arrivé, ainsi que du champ DLCI (Data Link Connection Identifier) dans l'en-tête de relais de trames du paquet.
Bien que la conclusion du PE selon laquelle un paquet particulier est arrivé sur un circuit de raccordement particulier puisse être partiellement déterminée par l'en-tête de couche 2 du paquet, il doit être impossible pour un client, en écrivant les champs d'en-tête, de tromper le SP en lui faisant croire qu'un paquet reçu sur un circuit de raccordement est en réalité arrivé sur un autre. Dans l'exemple ci-dessus, bien que le circuit de raccordement soit déterminé en partie par l'inspection du champ DLCI de l'en-tête de relais de trames, ce champ ne peut pas être fixé librement par le client ; il doit plutôt être fixé à une valeur spécifiée par le SP, sinon le paquet ne peut pas atteindre le routeur PE.
Dans certains cas, un site particulier peut être divisé par le client en plusieurs « sites virtuels » (virtual site). Le SP peut désigner un ensemble particulier de VRF à utiliser pour router les paquets de ce site et peut autoriser le client à fixer une caractéristique du paquet, qui est alors utilisée pour choisir un VRF particulier dans l'ensemble.
Par exemple, chaque site virtuel peut être réalisé comme un VLAN. Le SP et le client peuvent convenir que sur les paquets arrivant d'un CE particulier, certaines valeurs VLAN identifieront certains VRF. Bien sûr, les paquets de ce CE seraient ignorés (discard) par le PE s'ils portent des valeurs de balise (tag) VLAN non incluses dans l'ensemble convenu. Une autre façon d'y parvenir est d'utiliser les adresses source IP. Dans ce cas, le PE utilise l'adresse source IP dans un paquet reçu du CE, ainsi que l'interface par laquelle le paquet est reçu, pour assigner le paquet à un VRF particulier. Là encore, le client ne pourrait sélectionner que parmi l'ensemble particulier de VRF qu'il est autorisé à utiliser.
Si l'on souhaite qu'un hôte (host) particulier appartienne à plusieurs sites virtuels, cet hôte doit déterminer, pour chaque paquet, le site virtuel auquel le paquet est associé. Il peut le faire, par exemple, en envoyant des paquets de différents sites virtuels sur différents VLAN, ou via différentes interfaces réseau.
3.3. Remplissage des VRF (Populating the VRFs)
Avec quel ensemble de routes les VRF sont-ils remplis ?
Par exemple, soit PE1, PE2 et PE3 trois routeurs PE, et CE1, CE2 et CE3 trois routeurs CE. Supposons que PE1 apprenne (learn), depuis CE1, les routes joignables sur le site de CE1. Si PE2 et PE3 sont respectivement raccordés à CE2 et CE3, et s'il existe un VPN V contenant CE1, CE2 et CE3, alors PE1 utilise BGP pour distribuer à PE2 et PE3 les routes qu'il a apprises depuis CE1. PE2 et PE3 utilisent ces routes pour remplir les VRF qu'ils associent respectivement aux sites de CE2 et CE3. Les routes des sites qui ne sont pas dans le VPN V n'apparaissent pas dans ces VRF, ce qui signifie que les paquets de CE2 ou CE3 ne peuvent pas être envoyés vers des sites hors du VPN V.
Lorsque nous disons qu'un PE « apprend » des routes depuis un CE, nous ne présupposons aucune technique d'apprentissage particulière. Le PE peut apprendre des routes au moyen d'un algorithme de routage dynamique, mais il peut aussi « apprendre » des routes en les configurant (c'est-à-dire un routage statique, static routing). (Dans ce cas, dire que le PE a « appris » les routes depuis le CE relève peut-être d'une certaine licence poétique.)
Les PE doivent également apprendre, depuis d'autres PE, les routes appartenant à un VPN donné. Les procédures permettant de remplir les VRF avec les bons ensembles de routes sont spécifiées à la section 4.
S'il existe plusieurs circuits de raccordement menant d'un routeur PE particulier à un site particulier, ils peuvent tous être mappés vers la même table de transit. Mais si la politique l'exige, ils peuvent être mappés vers différentes tables de transit. Par exemple, la politique peut stipuler qu'un circuit de raccordement particulier depuis un site est utilisé uniquement pour le trafic d'intranet, tandis qu'un autre circuit depuis ce site est utilisé uniquement pour le trafic d'extranet. (Par exemple, le CE raccordé au circuit d'extranet est un pare-feu, alors que le CE raccordé au circuit d'intranet ne l'est pas.) Dans ce cas, les deux circuits de raccordement seraient associés à différents VRF.
Notez que si deux circuits de raccordement sont associés au même VRF, alors les paquets que le PE reçoit sur l'un d'eux pourront atteindre exactement le même ensemble de destinations que les paquets reçus sur l'autre. Deux circuits de raccordement ne peuvent donc pas être associés au même VRF, à moins que chaque CE n'appartienne exactement au même ensemble de VPN que l'autre.
Si un circuit de raccordement mène à un site qui est dans plusieurs VPN, le circuit de raccordement peut toujours être associé à un seul VRF, auquel cas le VRF contiendra les routes de l'ensemble complet des VPN dont le site est membre.