Protocole VPLS et application sur Juniper

VPLS – Virtual Private LAN Services

Voici quelques notes tirées de la RFC 4762, ainsi que des exemples appliqués à du matériel Juniper.

VPLS fournis de la connectivité entre deux clients géographiquement éloignés entre des MAN/WAN, comme s’ils étaient sur le même LAN.

Le but pour l’utilisateur final:
○ Connectivité entre les routeurs clients: routage LAN
○ Connectivité entre les switchs clients : commutation LAN

Le broadcast et le multicast sont disponibles.
Les sites qui font partis du même domaine de broadcast et qui sont connectés via MPLS peuvent utiliser le trafic broadcast, multicast et unicast sans problème.
Cela requiert l’apprentissage des adresses MAC, et la réplication des paquets multicast/broadcast..

Q-in-Q – 802.1ad – extension du 802.1q sur la partie provider
Qualified learning -mode d’apprentissage dans lequel chaque VLAN client est mappé à son instance VPLS.
Service delimiter – identificateur d’une instance client spécifique. Encodé dans le header des trames du client (ex:VLAN id)
Tagged Frame – Trame avec un tag 802.1q
Unqualified learning – Mode d’apprentissage ou tout les VLAN clients font partis d’une seule instance VPLS.
Untaged Frame – Trame sans tag 802.1q

Acronymes:
AC – Attachment Circuit
BPDU – Bridge Protocol Data Unit
CE – Customer Edge device
FEC – Forwarding Equivalence Class
FIB – Forwarding Information Base
GRE – Generic Routing Encapsulation
IPsec – IP security
L2TP – Layer Two Tunneling Protocol
LAN – Local Area Network
LDP – Label Distribution Protocol
MTU-s  – Multi-Tenant Unit switch
PE  – Provider Edge device
PW – Pseudowire
STP – Spanning Tree Protocol
VLAN – Virtual LAN
VLAN tag – VLAN Identifier

Modèle VPLS:

Une interface participant à VPLS doit être capable de flooder, transférer, et filtrer des trames Ethernet.
Les routeurs PE interconnectés via les pseudowires apparaissent comme un unique LAN émulé pour le client X.
Modèle topologique d’un VPLS pour le client X avec 3 sites géographiquement éloignés.

Ici nous allons voir des exemples utilisant du MPLS, mais ça marche aussi avec GRE, L2TP, IPsec.

L’accès à un site client peut être fait par:
• un port Ethernet physique
• un port Ethernet logique (taggé)
• un PVC ATM transportant des trames Ethernet..
• Un Pseudo-wire Ethernet

Le PE doit être capable de supporter le protocole LDP. Il doit aussi monter des tunnels de transports vers les autres PE.

Flooding & forwarding
Sur les services ethernet, les trames envoyés en broadcast sur une MAC inconnue sont floodées sur tous les ports.
L’ISP doit donc être capable de retransmettre ces trames aux autres PE participent à la même instance VPLS.

Pour transférer une trame, le PE doit être capable d’associer une MAC de destination à un PW. Les PE ne peuvent cependant pas retenir toute les associations de MAC possibles avec les PW..
mais ils doivent être capables d’apprendre les MAC dynamiquement et de retransmettre et répliquer les paquets au travers des AC et PW.

Address learning
Quand un paquet arrive sur le PW, si l’adresse MAC source est inconnue, il doit s’associer avec le PW, pour que les paquets sortants avec cette MAC soient associés au PW.
Pareil pour les AC.

Learning, filtering et forwarding requis quand un PW ou un AC change d’état.

Tunnel topology
les routeurs PE sont tous capables de monter des tunnels vers les autres PE.
Pour etre simple, la topologie VPLS est une full-mesh de PW..

Loop free VPLS
Si le VPLS n’est pas strictement Full-mesh, un PE devra probablement passer par un autre PE pour atteindre un PW, ce qui pourrait causer des boucles, il faudrait donc mettre en place un protocole anti boucle comme sTP.
Au lieu de ça, un full-mesh de PW est établi entre PE.

Discovery
Il est nécessaire de configurer les adresses des PE distants.
Ou alors d’utiliser la découverte automatique.

Fonctionnement du VPLS

Sur la figure suivante, nous pouvons voir un exemple de fonctionnement du VPLS.

Un VPLS à été établis entre PE1, PE2, et PE3.
Le VPLS interconnecte un client avec 4 sites aux labels A1, A2, A3, et A4 au travers de CE1, CE2, CE3, et CE4, respectivement.

Le VPLS est monté pour que PE1, PE2, et PE3 soit une full-mesh de PWs.
L’instance VPLS à un identificateur (AGI).
Ici PE1 signale le tag de PW 102 au PE2 et 103 au PE3,
et PE2 signale le tag de PW 201 à PE1 et 203 à PE3.

Si un paquet dans A1 est destiné à A2, quand il quitte CE1, avec une MAC source de M1 et une MAC destination M2.
Si PE1 ne connait pas la MAC M2, il va flooder le paquet et donc le transférer à PE2 et PE3.
Quand PE2 le reçoit, le paquet à un label 201, PE2 sait donc que la MAC M1 est derrière PE1.
Il peut donc associer la MAC M1 avec le label PW 102.

MAC address aging.

Les PE doivent avoir un mécanisme de limite d’âge pour supprimer les MAC non utilisée depuis trop longtemps.
Le compteur est reset à chaque fois qu’il reçoit un paquet avec la même MAC source.

Considérations de sécurité

  • Data plane
    • L’isolation du trafic entre les domaines VPLS est guarantis par l’usage des tables FIB unique à chaque VPLS L2 et l’usage des PW unique par VPLS.
    • Le trafic client (les trames ethernet) est transporté tel quel sur le VPLS.
    • Si une sécurité est requise, le client doit encrypter ses données avant d’entrer sur le réseau VPLS.
    • Prévenir les tempêtes de broadcast en utilisant des routeurs comme CPE ou limiter le taux de broadcast max. que le client peut envoyer.
  • Control plane
    • La sécurité LDP (authentication) doit être mise en place.
  • DOS Attacks
    • Limiter le nombre d’adresses MAC apprises (par domaine VPLS) pour les PE.

Application à Juniper

Voici un exemple illustré d’une topologie VPLS:

Plusieurs composants:
Domaines VPLS
Un domaine VPLS est associé à un LAN client.
Pour fournir la connectivité VPLS, BGP construit un réseau full-mesh (LSP) entre toute les instances VPLS sur chaque PE.

Sur l’image ci-dessus, il y à deux domaines VPLS, VPLS A et B. Le VPLS A connecte les bureaux du client A entre Boston et Chicago.
Le VPLS B interconnecte le client B pour ses bureaux entre boston et chicago.

Equipements CE (Customer Edge)
Sur l’image, il y à 4 CE. Chacun d’eux est localisé sur les sites clients et participe à un ou plusieurs domaines VPLS.
Ici, les CE1 et CE3 sont membres du domaine VPLS A.
CE2 et CE4 sont membres du domaine VPLS B.
Chaque CE est directement connecté à un edge VPLS (interface Ethernet) mais ne fait pas tourner VPLS. Pour le CE, tout le réseau apparait comme un simple switch L2.

Equipements VPLS Edge (VE)
Dans une configuration VPLS, les routeurs E-series fonctionnement en tant que VPLS Edge (VE) = PE comme pour BGP/VPN;
Sur l’image ci-dessus, VE1 (local) et VE2 (remote). Chaque VE à une instance VPLS configurée pour chaque domaine VPLS. La topologie à donc 4 instances VPLS.
VPLS A et B sur VE1
VPLS A et B sur VE2

Chaque VE à deux types d’interfaces (ports) associés avec chaque instance VPLS.
L’interface coté CE est de type Ethernet // L’interface coté coeur est une interface virtuelle VPLS, automatiquement générée par le routeur pour chaque instance VPLS.
Le VE encapsule les trames etheernet des CE dans un paquet MPLS et les transmet à l’ISP (routeur P) – Ethernet layer 2 services over MPLS.

VPLS et bridging transparent

Une instance VPLS est analogue à un groupe de switchs (bridging transparent), et fonctionne de la même façon.
Un groupe de switch est une collection de switchs stackés en L2 pour former un unique domaine de broadcast.

Chaque domaine VPLS maintiens sa table de forwarding et filtres (MACs).
Exemples des tables de MAC pour les VE de la figue ci-dessus.

Table 13: VPLS Forwarding Table on VE 1 for VPLS A

Interface MAC Address Outgoing Label Received Label
Fast Ethernet 3/1 1a1a.1a1a.1a1a
VPLS virtual core interface 3a3a.3a3a.3a3a 18 324

Table 14: VPLS Forwarding Table on VE 1 for VPLS B

Interface MAC Address Outgoing Label Received Label
Bridged Ethernet 2/0.12 2b2b.2b2b.2b2b
VPLS virtual core interface 4b4b.4b4b.4b4b 25 526

Table 15: VPLS Forwarding Table on VE 2 for VPLS A

Interface MAC Address Outgoing Label Received Label
Fast Ethernet 3/5 3a3a.3a3a.3a3a
VPLS virtual core interface 1a1a.1a1a.1a1a 42 107

Table 16: VPLS Forwarding Table on VE 2 for VPLS B

Interface MAC Address Outgoing Label Received Label
Bridged Ethernet 2/0.21 4b4b.4b4b.4b4b
VPLS virtual core interface 2b2b.2b2b.2b2b 63 872

Configuration VPLS Juniper
Pour configurer un VE et fournir du VPLS:
1. Configurer une instance VPLS sur le VE pour chaque domaine VPLS du routeur.
2. (Optional) Configurer les attributs de chaque instance VPLS.
3. Configurer les interfaces réseau pour connecter le VE à chaque équipements CE.
4. (Optional) Configurer les règles pour les interfaces VPLS.
5. Configurer les chemins MPLS label-switched paths (LSPs) pour connecter les VE locaux et distants.
6. Mettre en place un signaling BGP sur l’AS pour signaler le fait que l’instance VPLS est joignable.

1. instances VPLS

! Configurer une instance VPLS “customer1”.
! En mode de configuration globale:

host1(config)#bridge customer1 vpls transport-virtual-router vr1

!Sppécifier le nombre maximum de sites clients qui participent à l’instance VPLS (Par défaut, au moins 1).

host1(config)#bridge customer1 vpls site-range 15

!Spécifier le nom et l’id du client pour l’instance VPLS.

host1(config)#bridge customer1 vpls site-name westford site-id 1

! Spécifier le route distinguisher (RD) pour l’instance VPLS.

host1(config)#bridge customer1 vpls rd 100:11

! Créer ou ajouter une route target pour importer/exporter la liste des VPN pour l’instance MPLS.

host1(config)#bridge customer1 vpls route-target both 100:1

! Commandes complètes

host1(config)#bridge customer1 vpls transport-virtual-router vr1
host1(config)#bridge customer1 vpls site-range 15
host1(config)#bridge customer1 vpls site-name westford site-id 1
host1(config)#bridge customer1 vpls rd 100:11
host1(config)#bridge customer1 vpls route-target both 100:1

2. Attributs optionnels pour les instances VPLS

Attribute Command
Enable or disable the VPLS instance’s ability to acquire dynamically learned MAC addresses bridge acquire
Enable or disable the VPLS instance’s ability to filter (forward or discard) frames with a particular MAC source or destination address bridge address
Set the aging time of a dynamic (learned) entry in the VPLS instance’s forwarding table bridge aging-time
Set the maximum number of dynamic MAC addresses that a VPLS instance can learn bridge learn
Enable SNMP link status processing for the VPLS instance bridge snmp-trap link-status

3. Configurer les interfaces VPLS

! Configurer l’interface Gigabit Ethernet 3/0 et l’assigner à l’instance VPLS “customer1” comme une interface trunk

!Depuis le mode de configuration globale, selectionner l’interface que vous voulez assigner à l’instance VPLS.

host1(config)#interface gigabitEthernet 3/0

!Depuis le mode de configuration d’interface, tapez la commande “bridge-group” pour assigner l’interface à une instance VPLS.

host1(config-if)#bridge-group customer1

!(Optionel) Configurer les attributs optionnels pour l’interface réseau. Une commande par attribut.

host1(config-if)#bridge-group customer1 subscriber-trunk
host1(config-if)#bridge-group customer1 learn 100
host1(config-if)#bridge-group customer1 snmp-trap link-status

4. Configurer les règes pour les interfaces VPLS
… optionnel

5. MPLS LSP

Dans la configuration VPLS, vous devez créer des (LSPs) pour connecter le VE local au VE distant.

! Activer MPLS sur le VE.

host1(config)#mpls

! Configurer l’interface loopback et lui assigner une adresse IP.

host1(config)#interface loopback 0
host1(config-if)#ip address 10.3.3.3 255.255.255.255

! Activer MPLS sur l’interface loopback.

host1(config-if)#mpls

! Activer LDP et les topology-driven LSPs sur la loopback.

host1(config-if)#mpls ldp
host1(config-if)exit

6. BGP signaling
Pour configurer le signaling BGP pour VPLS sur le VE:

! Assigner le routeur ID.

host1(config)#ip router-id 10.3.3.3

! Activer BGP dans l’AS 100.

host1(config)#router bgp 100

! Configurer la session BGP VE-to-VE.

host1(config-router)#neighbor 10.4.4.4 remote-as 100
host1(config-router)#neighbor 10.4.4.4 update-source loopback 0
host1(config-router)#neighbor 10.4.4.4 next-hop-self

! Créer le L2VPN avec BGP signaling pour toutes les instances VPLS.

host1(config-router)#address-family l2vpn signaling

! Activer la session VE-to-VE dans la famille d’adresse L2VPN.

host1(config-router-af)#neighbor 10.4.4.4 activate
host1(config-router-af)#neighbor 10.4.4.4 next-hop-self
host1(config-router-af)#exit-address-family

! Créer le VPLS address family pour l’instance VPLS “customer1”.

host1(config-router)#address-family vpls customer1
host1(config-router-af)#exit-address-family

! Créer le VPLS address family pour l’instance VPLS “customer2”.

host1(config-router)#address-family vpls customer2
host1(config-router-af)#exit-address-family

! Exit

host1(config-router)#exit

Exemple de configuration sur une architecture réelle:

Topology Overview

La topologie inclus deux domaines VPLS, A et B.
Le VPLS A connecte le CE1, sur le site de boston du client A vers le CE3 sur le site de chicago.
Le VPLS B connecte le CE2, sur le site de boston du client B vers le CE4 sur le site de chicago.

Les routeurs E-series (VE1 et VE2) participent aux domaines VPLS A et B. Il y à 4 instances séparées, une pour chaque instance de VE. VPLSA et VPLSB.

Pour chaque instance, une interface Ethernet fournis une connexion au CE associé.
Chaque instance VPLS maintiens sa propre table de forwarding et de filtres pour apprendre la topologie, de façon identique à un LAN.. Comme discuté plus haut.

Vous devez configurer les MPLS LSPs pour connecter VE1 et VE2 au travers du provider (P). Et finalement vous devrez configurer BGP sur chacun des VE (1&2) pour fournir du signaling pour chaque domaine VPLS.

Après avoir configuré le bridging, MPLS, BGP, le routeur génère une interface VPLS virtuelle pour chaque instance. Elle représente les tunnels du VE local, au VE distant.

Configuration de VE 1 (VE local)

! Configure VPLS instance vplsA.

host1(config)#bridge vplsA vpls transport-virtual-router default
host1(config)#bridge vplsA vpls site-range 10
host1(config)#bridge vplsA vpls site-name boston site-id 1
host1(config)#bridge vplsA vpls rd 100:11
host1(config)#bridge vplsA vpls route-target both 100:1

! Configure VPLS instance vplsB.

host1(config)#bridge vplsB vpls transport-virtual-router default
host1(config)#bridge vplsB vpls site-range 20
host1(config)#bridge vplsB vpls site-name boston site-id 1
host1(config)#bridge vplsB vpls rd 100:12
host1(config)#bridge vplsB vpls route-target both 100:2

! Configure Fast Ethernet interface 3/0 between VE 1 and CE 1,
! and assign it to vplsA as a trunk interface.

host1(config)#interface fastEthernet 3/1
host1(config-if)#bridge-group vplsA subscriber-trunk
host1(config-if)#exit

! Configure bridged Ethernet interface 2/0.12 between VE 1 and CE 2,
! and assign it to vplsB as a trunk interface.

host1(config)#interface atm 2/0.12 point-to-point
host1(config-subif)#atm pvc 12 0 12 aal5snap 0 0 0
host1(config-subif)#encapsulation bridge1483 mac-address 0090.1a40.9991
host1(config-subif)#bridge-group vplsB subscriber-trunk
host1(config-if)#exit

! Enable MPLS on the default virtual router.

host1(config)#mpls

! Configure a loopback interface on VE 1 and assign it an IP address.

host1(config)#interface loopback 0
host1(config-if)#ip address 10.1.1.1 255.255.255.255

! Enable MPLS, LDP, and topology-driven LSPs on the loopback interface.

host1(config-if)#mpls
host1(config-if)#mpls ldp
host1(config-if)exit

! Configure BGP signaling.

host1(config)#ip router-id 10.1.1.1
host1(config)#router bgp 100
host1(config-router)#neighbor 10.2.2.2 remote-as 100
host1(config-router)#neighbor 10.2.2.2 update-source loopback 0
host1(config-router)#neighbor 10.2.2.2 next-hop-self
host1(config-router)#address-family l2vpn signaling
host1(config-router-af)#neighbor 10.2.2.2 activate
host1(config-router-af)#neighbor 10.2.2.2 next-hop-self
host1(config-router-af)#exit-address-family
host1(config-router)#address-family vpls vplsA
host1(config-router-af)#exit-address-family
host1(config-router)#address-family vpls vplsB
host1(config-router-af)#exit-address-family
host1(config-router)#exit

Configuration on VE 2 (Remote VE Router)

! Configurer l’instance VPLS vplsA. La route target (100:1)
! matches la route target configurée pour vplsA sur VE 1.

host2(config)#bridge vplsA vpls transport-virtual-router default
host2(config)#bridge vplsA vpls site-range 10
host2(config)#bridge vplsA vpls site-name chicago site-id 2
host2(config)#bridge vplsA vpls rd 100:21
host2(config)#bridge vplsA vpls route-target both 100:1

! Configurer l’instance VPLS vplsB. Route target (100:2)
! matches la route target configurée pour vplsB sur VE 1.

host2(config)#bridge vplsB vpls transport-virtual-router default
host2(config)#bridge vplsB vpls site-range 20
host2(config)#bridge vplsB vpls site-name chicago site-id 2
host2(config)#bridge vplsB vpls rd 100:22
host2 (config)#bridge vplsB vpls route-target both 100:2

! Configurer l’interface FastEthernet 3/5 entre VE 2 et CE 3,
! and assign it to vplsA as a trunk interface.

host2(config)#interface fastEthernet 3/5
host2(config-if)#bridge-group vplsA subscriber-trunk
host2(config-if)#exit

! Configurer un interface bridged Ethernet 2/0.21 entre VE 2 et CE 4,
! et l’assigner au vplsB en tant que trunk

host2(config)#interface atm 2/0.21 point-to-point
host2(config-subif)#atm pvc 21 0 21 aal5snap 0 0 0
host2(config-subif)#encapsulation bridge1483 mac-address 0090.1a40.9992
host2(config-subif)#bridge-group vplsB subscriber-trunk
host2(config-if)#exit

! Activer MPLS sur le routeur Virtuel.

host1(config)#mpls

! Configurer la loopback sur VE2 et lui assigner son IP.

host1(config)#interface loopback 0
host1(config-if)#ip address 10.2.2.2 255.255.255.255

! Activer MPLS, LDP, et les topology-driven LSPs sur la loopback.

host1(config-if)#mpls
host1(config-if)#mpls ldp
host1(config-if)exit

! Configurer le BGP signaling.

host2(config)#ip router-id 10.2.2.2
host2(config)#router bgp 100
host2(config-router)#neighbor 10.1.1.1 remote-as 100
host2(config-router)#neighbor 10.1.1.1 update-source loopback 0
host2(config-router)#neighbor 10.1.1.1 next-hop-self
host2(config-router)#address-family l2vpn signaling
host2(config-router-af)#neighbor 10.1.1.1 activate
host2(config-router-af)#neighbor 10.1.1.1 next-hop-self
host2(config-router-af)#exit-address-family
host2(config-router)#address-family vpls vplsA
host2(config-router-af)#exit-address-family
host2(config-router)#address-family vpls vplsB
host2(config-router-af)#exit-address-family
host2(config-router)#exit

Benoit

Network engineer at CNS Communications. CCIE #47705, focused on R&S, Data Center, SD-WAN & Automation.

More Posts - Website

Follow Me:
TwitterLinkedIn

One Comment

  1. ponceblanc92 4 janvier 2013

    Compliqué à comprendre mais vos schémas sont vraiment très bien faits et aident beaucoup

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *