Un brin de réseau


Tel un cahier de notes, ce blog propose des articles sur les technologies réseaux et leur utilisation pratique, le tout illustré avec des maquettes et des captures.

Python freeradius-api Python diffplus

MPLS VPN Partie 1

Le MPLS VPN est sans doute l'un des termes le plus recherché, le plus abordé et donc le plus mal mené.

J'ai mal à mon MPLS. Le but de cet article est de préciser ce qu'est entendu par ce terme et montrer étape par étape son implémentation classique sur un réseau opérateur miniature.

Kècécè ?

Précisons que par MPLS VPN est couramment entendu L3VPN IP sur MPLS. Plus simplement, nous parlons de MPLS L3VPN et c'est le sujet même de cet article. Il s'agit de transporter des paquets IP de façon cloisonnée sur un réseau MPLS mutualisé. Le MPLS L2VPN existe également mais pour (à l'évidence) transporter des trames Ethernet. Par conséquent, le seul terme de MPLS VPN ne suffit pas : il faut préciser L2 ou L3. Théoriquement, il faudrait aussi préciser la nature du protocole transporté (IP, Ethernet, Frame Relay, etc.)—oui, le L2VPN Frame Relay sur MPLS existe bien, même si jamais vu en vrai (trop jeune…). L'article L2VPN vs L3VPN avait déjà abordé la question de la terminologie.

Dans la pratique, personne ne vous en voudra de parler uniquement de MPLS L3VPN (implicitement IP) ou MPLS L2VPN (implicitement Ethernet). C'est un raccourci acceptable. Cependant, beaucoup de raccourcis sont faits dans le monde réseau et force est de constater que c'est souvent source d'ambiguïté. Ainsi, un responsable peut allouer une ressource humaine à un problème qui n'en est pas un, ce dernier ayant été mal formulé dès le départ.

Enfin, avant d'entrer dans le vif du sujet, voici le nom d'un produit que j'ai croisé sur le bon de commande d'un commercial : « VPN MPLS IP de niveau 2 ». L'intention était bonne : en inscrivant tous les termes possibles, cela ne pouvait qu'être correct. C'est dommage toutefois, il manquait le terme principal : Ethernet. Je me demande encore ce que le client a pensé de ceci. Bref.

Plan de l'article

Sur tout réseau opérateur, la mise en place d'un MPLS L3VPN suit généralement les étapes suivantes :

L'article a été découpé en deux parties pour aborder progressivement les concepts et éviter d'avoir une seule et même page trop chargée. La deuxième partie sera la plus dense. Mais avant d'entrer dans ces étapes, faisons un court aparté sur l'origine des MPLS L3VPN ainsi que sur la maquette utilisée.

Origine

Le MPLS L3VPN a été initialement spécifié dans la RFC 2547 sous le nom de « BGP/MPLS VPNs », le protocole BGP constituant le plan de contrôle. Ce travail a eu lieu quasiment en parallèle de la spécification de l'architecture MPLS, spécifiée dans la RFC 3031, comme nous pouvons le voir via les trackers respectifs :

rfc2547-rfc3031
La standardisation de MPLS a débuté en mars 1998. La standardisation de MPLS L3VPN a débuté en novembre 1998. Elle a été publiée avant celle de MPLS.

Ce n'est donc pas un hasard si le MPLS L3VPN fonctionne bien puisque cela a aussi été fait « pour que ça marche » (ce sera néanmoins quelques cinq années plus tard pour le MPLS L2VPN). La RFC 4364 est la version actuellement en vigueur et a renommé, avec raison, la technologie en « BGP/MPLS IP VPNs ».

La maquette utilisée

Notre maquette se veut être un réseau opérateur miniature aligné sur l'architecture de référence MPLS L3VPN :


      Each VPN site must contain one or more Customer Edge (CE) devices.
      Each CE device is attached, via some sort of attachment circuit, to
      one or more Provider Edge (PE) routers.

      Routers in the SP's network that do not attach to CE devices are
      known as "P routers".
    

Soit en image :

mpls-l3vpn-backbone
Nous retrouvons l'architecture de référence avec les notions de CE, PE, P et d'attachment circuit. Noter que ce schéma n'est pas une vulgaire simplification des réseaux opérateurs. Les backbones IP/MPLS sont ainsi faits. Certes, il y a davantage de PE et P. Certes, ils sont double-attachés pour des besoins de résilience. Néanmoins, le schéma reste valide.

En tant qu'opérateur français, nous imaginons que le RIPE—qui n'est autre que le RIR (Regional Internet Registry) européen en charge de l'attribution des numéros d'AS et des adresses IP—nous attribue l'AS100 et le réseau public 1.0.0.0/24 (qui sont en réalité déjà pris).

Quelle différence entre PE et P ? Les routeurs PE et P sont tous deux appelés LSR dans la terminologie MPLS. Mais le rôle des PE est bien plus complexe que celui des P. Ils doivent implémenter les mécanismes MPLS L3VPN tels que : appartenance du client à son VPN ou attachment circuit, segmentation des VPN, plan de contrôle des VPN via MP-BGP, etc. Les P, eux, se limitent au label switching classique du MPLS. Pour cette raison, les PE sont souvent plus onéreux que les P et les prix peuvent atteindre plusieurs dizaines de milliers d'euros selon la marque, les performances et les fonctionnalités. Enfin, les P sont souvent appelés core routers, ces derniers constituant le réseau de cœur de l'opérateur (les PE sont, eux, border routers).

À qui appartiennent les CE ? Les routeurs CE sont en général la propriété de l'opérateur, ce qui lui permet de maîtriser de bout-en-bout le VPN fourni. Les clients raccordent en général aux CE leur routeur ou firewall—ceci nécessite une certaine coordination client-opérateur : à quel port du CE se raccorder ? quels sont les subnets souhaités par le client ? etc. J'ai vu des cas où les CE sont propriétés des clients, ce qui complexifie la coordination client-opérateur à mon sens—si un problème réseau survient, l'opérateur n'ayant pas la main sur les CE, il est plus difficile d'identifier la cause et plus facile de se renvoyer la balle. Enfin, le rôle des CE se limitant au routage IP (sans notion de MPLS ni de VPN), ils sont moins onéreux que les PE ou P (quelques centaines d'euros).

Étape 1 : un backbone IP

La première étape consiste à avoir un routage cohérent dans l'AS avec un IGP. Par routage cohérent est entendu : chaque routeur doit pouvoir joindre en IP tout un autre routeur de l'AS, ce qui permettra, lorsque MPLS sera activé à l'étape 2, d'établir les LSP nécessaires qui seront empruntés par les services sus-jacents (L3VPN ici mais aussi L2VPN dans un autre contexte). Dans les réseaux opérateurs, les IGP les plus courants sont OSPF (choisi ici) et IS-IS.

Adressage privé ou public pour le backbone IP ? Les deux cas sont possibles. L'adressage privé (RFC 1918) a pour avantage évident l'économie d'adresses publiques et cela a été mon mode d'adressage favoris pendant plusieurs années. Dans nombre d'architectures opérateurs, l'IGP ne sert qu'à établir le MPLS (underlay) qui porte les services VPN (overlay)—ceux des clients et voire de l'opérateur lui-même qui peut se considérer comme client de son propre réseau. En ceci, un adressage privé est adapté car non visible à l'extérieur du réseau. Cependant, suite à une fusion de réseaux opérateurs à laquelle j'ai participé, ma préférence est plutôt à l'adressage public. Il permet en effet d'éviter les recouvrements d'adresses (qu'il faut corriger en réadressant ou contourner avec du NAT…) et facilite ainsi la fusion. Noter que la RFC 6752 va plutôt dans ce sens également (bien qu'elle aborde un aspect davantage Internet que backbone).

Des liens d'interco en /30 ou /31 ? Bien souvent, les liens d'interco entre PE et P sont point-à-point (et Ethernet), c'est-à-dire qu'il n'y a qu'un routeur de part et d'autre de chaque lien—contrairement à un LAN Ethernet où plusieurs équipements sont raccordés à un même switch. Un /30 réserve quatre IPs et, dans le cas de liens point-à-point, deux IPs sont inutiles et gaspillées (les adresses réseau et broadcast). Si c'est acceptable pour un adressage privé, cela ne l'est pas pour un adressage public car les adresses publiques se font rares. Aussi, depuis la RFC 3021, il est possible d'utiliser un adressage en /31 pour les liens point-à-point, ce qui va favorise l'adressage public à l'intérieur des backbones.

PE1 P1

  PE1#show running-config

  ! OSPF configuration
  router ospf 1
   router-id 1.0.0.10

  ! Router ID
  interface Loopback0
   ip address 1.0.0.10 255.255.255.255
   ip ospf 1 area 0

  ! Point-to-point links (/31)
  interface FastEthernet0/0
   ip address 1.0.0.0 255.255.255.254
   ip ospf 1 area 0
   ip ospf network point-to-point





  ! Show the OSPF neighbors
  PE1#show ip ospf neighbor

  Neighbor ID     Pri   State      Dead Time   Address   Interface
  1.0.0.11          0   FULL/  -   00:00:39    1.0.0.1   FastEthernet0/0


  ! Show the IP Routing Information Base (RIB)
  PE1#show ip route
  Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
         D - EIGRP, EX - EIGRP external, O - OSPF, (…)

       1.0.0.0/8 is variably subnetted, 7 subnets, 2 masks
  C       1.0.0.0/31 is directly connected, FastEthernet0/0
  O       1.0.0.2/31 [110/20] via 1.0.0.1, 00:03:58, FastEthernet0/0
  O       1.0.0.4/31 [110/30] via 1.0.0.1, 00:03:58, FastEthernet0/0
  O       1.0.0.11/32 [110/11] via 1.0.0.1, 00:03:58, FastEthernet0/0
  C       1.0.0.10/32 is directly connected, Loopback0
  O       1.0.0.13/32 [110/31] via 1.0.0.1, 00:03:58, FastEthernet0/0
  O       1.0.0.12/32 [110/21] via 1.0.0.1, 00:03:58, FastEthernet0/0
              

  P1#show running-config

  ! OSPF configuration
  router ospf 1
   router-id 1.0.0.11

  ! Router ID
  interface Loopback0
   ip address 1.0.0.11 255.255.255.255
   ip ospf 1 area 0

  ! Point-to-point links (/31)
  interface FastEthernet0/0
   ip address 1.0.0.1 255.255.255.254
   ip ospf 1 area 0
   ip ospf network point-to-point
  interface FastEthernet0/1
   ip address 1.0.0.2 255.255.255.254
   ip ospf 1 area 0
   ip ospf network point-to-point

  ! Show the OSPF neighbors
  P1#show ip ospf neighbor

  Neighbor ID     Pri   State      Dead Time   Address   Interface
  1.0.0.12          0   FULL/  -   00:00:37    1.0.0.3   FastEthernet0/1
  1.0.0.10          0   FULL/  -   00:00:38    1.0.0.0   FastEthernet0/0

  ! Show the IP Routing Information Base (RIB)
  P1#show ip route
  Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
         D - EIGRP, EX - EIGRP external, O - OSPF, (…)

       1.0.0.0/8 is variably subnetted, 7 subnets, 2 masks
  C       1.0.0.0/31 is directly connected, FastEthernet0/0
  C       1.0.0.2/31 is directly connected, FastEthernet0/1
  O       1.0.0.4/31 [110/20] via 1.0.0.3, 00:08:10, FastEthernet0/1
  C       1.0.0.11/32 is directly connected, Loopback0
  O       1.0.0.10/32 [110/11] via 1.0.0.0, 00:08:10, FastEthernet0/0
  O       1.0.0.13/32 [110/21] via 1.0.0.3, 00:08:10, FastEthernet0/1
  O       1.0.0.12/32 [110/11] via 1.0.0.3, 00:08:10, FastEthernet0/1
              
P2 PE2

  P2#show running-config

  ! OSPF configuration
  router ospf 1
   router-id 1.0.0.12

  ! Router ID
  interface Loopback0
   ip address 1.0.0.12 255.255.255.255
   ip ospf 1 area 0

  ! Point-to-point links (/31)
  interface FastEthernet0/0
   ip address 1.0.0.3 255.255.255.254
   ip ospf 1 area 0
   ip ospf network point-to-point
  interface FastEthernet0/1
   ip address 1.0.0.4 255.255.255.254
   ip ospf 1 area 0
   ip ospf network point-to-point

  ! Show the OSPF neighbors
  P2#show ip ospf neighbor

  Neighbor ID     Pri   State      Dead Time   Address   Interface
  1.0.0.13          0   FULL/  -   00:00:30    1.0.0.5   FastEthernet0/1
  1.0.0.11          0   FULL/  -   00:00:32    1.0.0.2   FastEthernet0/0

  ! Show the IP Routing Information Base (RIB)
  P2#show ip route
  Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
         D - EIGRP, EX - EIGRP external, O - OSPF, (…)

       1.0.0.0/8 is variably subnetted, 7 subnets, 2 masks
  O       1.0.0.0/31 [110/20] via 1.0.0.2, 00:14:37, FastEthernet0/0
  C       1.0.0.2/31 is directly connected, FastEthernet0/0
  C       1.0.0.4/31 is directly connected, FastEthernet0/1
  O       1.0.0.11/32 [110/11] via 1.0.0.2, 00:14:37, FastEthernet0/0
  O       1.0.0.10/32 [110/21] via 1.0.0.2, 00:14:37, FastEthernet0/0
  O       1.0.0.13/32 [110/11] via 1.0.0.5, 00:14:37, FastEthernet0/1
  C       1.0.0.12/32 is directly connected, Loopback0
              

  PE2#show running-config

  ! OSPF configuration
  router ospf 1
   router-id 1.0.0.13

  ! Router ID
  interface Loopback0
   ip address 1.0.0.13 255.255.255.255
   ip ospf 1 area 0

  ! Point-to-point links (/31)
  interface FastEthernet0/0
   ip address 1.0.0.5 255.255.255.254
   ip ospf 1 area 0
   ip ospf network point-to-point





  ! Show the OSPF neighbors
  PE2#show ip ospf neighbor

  Neighbor ID     Pri   State      Dead Time   Address   Interface
  1.0.0.12          0   FULL/  -   00:00:31    1.0.0.4   FastEthernet0/0


  ! Show the IP Routing Information Base (RIB)
  PE2#show ip route
  Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
         D - EIGRP, EX - EIGRP external, O - OSPF, (…)

       1.0.0.0/8 is variably subnetted, 7 subnets, 2 masks
  O       1.0.0.0/31 [110/30] via 1.0.0.4, 00:16:45, FastEthernet0/0
  O       1.0.0.2/31 [110/20] via 1.0.0.4, 00:16:45, FastEthernet0/0
  C       1.0.0.4/31 is directly connected, FastEthernet0/0
  O       1.0.0.11/32 [110/21] via 1.0.0.4, 00:16:45, FastEthernet0/0
  O       1.0.0.10/32 [110/31] via 1.0.0.4, 00:16:45, FastEthernet0/0
  C       1.0.0.13/32 is directly connected, Loopback0
  O       1.0.0.12/32 [110/11] via 1.0.0.4, 00:16:45, FastEthernet0/0
              

Étape 2 : un backbone IP/MPLS

La deuxième étape consiste à activer MPLS (et LDP) sur le backbone IP qui devient alors backbone IP/MPLS. L'article MPLS LDP a déjà abordé ceci en détail sur une architecture similaire.

PE1 P1

  PE1#show running-config

  ! Enable both MPLS and LDP
  interface FastEthernet0/0
   mpls ip



  ! Show the LDP neighbors
  PE1#show mpls ldp neighbor | include Peer LDP
      Peer LDP Ident: 1.0.0.11:0; Local LDP Ident 1.0.0.10:0


  ! Show the Label Forwarding Information Base (LFIB)
  PE1#show mpls forwarding-table
  Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop
  tag    tag or VC   or Tunnel Id      switched   interface
  16     Pop tag     1.0.0.2/31        0          Fa0/0      1.0.0.1
  17     26          1.0.0.4/31        0          Fa0/0      1.0.0.1
  18     Pop tag     1.0.0.11/32       0          Fa0/0      1.0.0.1
  19     28          1.0.0.12/32       0          Fa0/0      1.0.0.1
  20     29          1.0.0.13/32       0          Fa0/0      1.0.0.1
              

  P1#show running-config

  ! Enable both MPLS and LDP
  interface FastEthernet0/0
   mpls ip
  interface FastEthernet0/1
   mpls ip

  ! Show the LDP neighbors
  P1#show mpls ldp neighbor | include Peer LDP
      Peer LDP Ident: 1.0.0.10:0; Local LDP Ident 1.0.0.11:0
      Peer LDP Ident: 1.0.0.12:0; Local LDP Ident 1.0.0.11:0

  ! Show the Label Forwarding Information Base (LFIB)
  P1#show mpls forwarding-table
  Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop
  tag    tag or VC   or Tunnel Id      switched   interface
  26     Pop tag     1.0.0.4/31        0          Fa0/1      1.0.0.3
  27     Pop tag     1.0.0.10/32       0          Fa0/0      1.0.0.0
  28     Pop tag     1.0.0.12/32       0          Fa0/1      1.0.0.3
  29     21          1.0.0.13/32       0          Fa0/1      1.0.0.3

              
P2 PE2

  P2#show running-config

  ! Enable both MPLS and LDP
  interface FastEthernet0/0
   mpls ip
  interface FastEthernet0/1
   mpls ip

  ! Show the LDP neighbors
  P2#show mpls ldp neighbor | include Peer LDP
      Peer LDP Ident: 1.0.0.11:0; Local LDP Ident 1.0.0.12:0
      Peer LDP Ident: 1.0.0.13:0; Local LDP Ident 1.0.0.12:0

  ! Show the Label Forwarding Information Base (LFIB)
  P2#show mpls forwarding-table
  Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop
  tag    tag or VC   or Tunnel Id      switched   interface
  18     Pop tag     1.0.0.0/31        0          Fa0/0      1.0.0.2
  19     27          1.0.0.10/32       0          Fa0/0      1.0.0.2
  20     Pop tag     1.0.0.11/32       0          Fa0/0      1.0.0.2
  21     Pop tag     1.0.0.13/32       0          Fa0/1      1.0.0.5

              

  PE2#show running-config

  ! Enable both MPLS and LDP
  interface FastEthernet0/0
   mpls ip



  ! Show the LDP neighbors
  PE2#show mpls ldp neighbor | include Peer LDP
      Peer LDP Ident: 1.0.0.12:0; Local LDP Ident 1.0.0.13:0


  ! Show the Label Forwarding Information Base (LFIB)
  PE2#show mpls forwarding-table
  Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop
  tag    tag or VC   or Tunnel Id      switched   interface
  38     18          1.0.0.0/31        0          Fa0/0      1.0.0.4
  39     Pop tag     1.0.0.2/31        0          Fa0/0      1.0.0.4
  40     19          1.0.0.10/32       0          Fa0/0      1.0.0.4
  41     20          1.0.0.11/32       0          Fa0/0      1.0.0.4
  42     Pop tag     1.0.0.12/32       0          Fa0/0      1.0.0.4
              

Étape 3 : configuration d'un MPLS L3VPN

Dans cette troisième étape, nous allons configurer un VPN. Cela fait intervenir trois éléments principaux : VRF (VPN Routing and Forwarding), RD (Route Distinguisher) et RT (Route Target).

Soit en image :

mpls-l3vpn-vrf
Cas 1 — Une VRF par site.

Dans le schéma ci-dessus, deux VRF ont été créées : une par site. Le format de RD le plus courant est <AS Number>:<Assigned Number>Assigned Number peut avoir plusieurs sémantiques : l'ID du client dans le SI de l'opérateur, l'ID du site, le nombre de VRF créé, etc. La signification est fonction des besoins et processus de l'opérateur. Ici, j'ai simplement incrémenté de 1. Même raisonnement pour les RT. Noter bien, c'est car les RT sont exportés-importés de part et d'autre que le VPN est formé ! Les RT s'apparentent ainsi à des connecteurs de VRF. En outre, nous pourrions aussi avoir ce schéma :

mpls-l3vpn-vrf-bis
Cas 2 — Une seule VRF pour tout le VPN.

Cette fois-ci, une seule VRF a été créée pour les deux sites. Le même RD a été utilisé ainsi que le même RT. Cela simplifie l'allocation des numéros. En fait, ces choix d'implémentation—qui relèvent aussi de la conception car il s'agit d'une politique de nommage—dépendent vraiment de l'opérateur. Dans mon expérience, j'ai vu les deux cas, chacun ayant ses avantages et ses inconvénients. En réalité, utiliser des RT différents permet surtout de créer des VPN hub-and-spoke et non full-mesh (le plus fréquent)—voir le §4.3.5. Pour la suite de l'article, j'ai choisi le cas 1 afin de bien distinguer les notions de RD et RT.

PE1 PE2

  PE1#show running-config

  ! VRF configuration
  ip vrf VPN-A1
   rd 100:0
   route-target export 100:2
   route-target import 100:3

  ! Attachment circuit to CE (see below)
  interface FastEthernet0/1
   ip vrf forwarding VPN-A1
   ip address 172.16.0.1 255.255.255.252

  ! Show the VRF IP Routing Information Base (RIB)
  PE1#show ip route vrf VPN-A1

  Routing Table: VPN-A1
  Codes: C - connected, S - static, (…)
       172.16.0.0/30 is subnetted, 1 subnets
  C       172.16.0.0 is directly connected, FastEthernet0/1
              

  PE2#show running-config

  ! VRF configuration
  ip vrf VPN-A2
   rd 100:1
   route-target export 100:3
   route-target import 100:2

  ! Attachment circuit to CE (see below)
  interface FastEthernet0/1
   ip vrf forwarding VPN-A2
   ip address 172.16.0.5 255.255.255.252

  ! Show the VRF IP Routing Information Base (RIB)
  PE2#show ip route vrf VPN-A2

  Routing Table: VPN-A2
  Codes: C - connected, S - static, (…)
       172.16.0.0/30 is subnetted, 1 subnets
  C       172.16.0.4 is directly connected, FastEthernet0/1
              

Lien CE-PE ou attachment circuit

Faisons un zoom sur les CE, côté WAN (vers leur PE de rattachement) et côté LAN (vers leur réseau interne) :

mpls-l3vpn-ac
Les attachment circuits (172.16.0.0/30 et 172.16.0.4/30) et les LAN client (192.168.1.0/24 et 192.168.2.0/24) sont représentés.

Comment le CE est-il raccordé au PE ? Ceci ramène à la notion d'attachment circuit, c'est-à-dire à l'association d'un CE à sa VRF. Dans cette maquette, il s'agit simplement d'interfaces physiques liées aux VRF. Autrement dit, les CE sont raccordés physiquement aux PE en FastEthernet (100M) via des liens cuivre. C'est un fonctionnement tout à fait valide et réel à la différence que le raccordement se fait plutôt en GigabitEthernet (1G) à l'ère des liens fibre. Noter que les attachment circuits peuvent aussi se traduire par différents liens logiques sur un même lien physique—par exemple, le VLAN 10 est associé à la VRF VPN-A1, le VLAN 20 à la VRF VPN-B1, etc.


      Routers can be attached to each other, or to end systems, in a
      variety of different ways: PPP connections, ATM Virtual Circuits
      (VCs), Frame Relay VCs, ethernet interfaces, Virtual Local Area
      Networks (VLANs) on ethernet interfaces, GRE tunnels, Layer 2
      Tunneling Protocol (L2TP) tunnels, IPsec tunnels, etc.  We will use
      the term "attachment circuit" to refer generally to some such means
      of attaching to a router.  An attachment circuit may be the sort of
      connection that is usually thought of as a "data link", or it may be
      a tunnel of some sort; what matters is that it be possible for two
      devices to be network layer peers over the attachment circuit.
    

Comment sont adressés les attachment circuits ? Un adressage privé en /30 est tout à fait adapté (inutile d'économiser des adresses privées sachant que le /31 n'est pas forcément supporté par tous les CE). Une coordination préalable client-opérateur est nécessaire car le réseau d'interco choisi ne peut être utilisé par le client sur son LAN. Une autre solution, plus maligne, est de fonctionner en adressage public mais sans redistribuer le réseau d'interco public choisi—il reste local au lien—de sorte à ne pas gaspiller d'adresses publiques. Cela a pour avantage de ne pas nécessiter de coordination client-opérateur car le client n'utilise (normalement) pas, de lui-même, des adresses publiques appartenant à l'opérateur. Ici, pour rester simple, des interco privées ont été choisies.

Comment sont routés les LAN client ? Si les attachment circuits permettent l'attachement des CE à leur VPN, ils ne constituent pas les LAN client pour autant. Ce qui importe surtout, c'est que les LAN client (192.168.1.0/24 et 192.168.2.0/24 ici) soient routés de bout-en-bout du VPN. Plusieurs options pour ceci : soit des routes statiques sont configurées sur les PE dans les VRF adéquates, soit le CE annonce dynamiquement au PE les routes avec RIP (acceptable pour un échange de routes sur un hop), OSPF ou BGP. Dans la deuxième partie de l'article, nous verrons un tel échange en action avec BGP.

Le calme avant la tempête

Avant d'aborder la deuxième partie de l'article, la plus dense, voici finalement ce que perçoit réellement le client du service fourni par l'opérateur :

mpls-l3vpn-service
Le client ne perçoit pas le réseau de l'opérateur ni la technologie sous-jacente employée (MPLS)—notion de réseau d'underlay. Le L3VPN fourni est vu comme un grand routeur virtuel qui routes les LAN entre eux. Concrètement, le client voit les CE qui sont généralement déployés sur site, comme les particuliers voient la box de leur FAI.

À ce stade, les VRF sont configurées sur les PE mais ces derniers n'échangent encore rien pour former le VPN proprement dit. Ceci appartient au plan de contrôle qui est l'objet de l'étape 4 dans la deuxième partie de l'article.