Mise en place de VRFs et routage OSPF

 

Introduction

 

Cet article a pour but de vous expliquer par le biais d’un tutoriel simple le principe des VRFs avec la mise en place d’un routage dynamique OSPF.

 

Qu’est ce qu’une VRF ?

 

VRF pour Virtual Routing and Forwarding permet de créer à partir d’un seul routeur physique plusieurs routeurs logiques, virtuels. La VRF est au niveau 3 ce que le VLAN est au niveau 2 pourrait-on dire; Chaque instance VRF possède sa propre table de routage et ne peut pas discuter nativement avec une autre instance ( il faudra utiliser d’autres protocoles tel que le MP-BGP pour interconnecter deux VRFs entre-elles). Les VRFs sont très pratiques lorsque l’on ne dispose pas de gros moyens matériels pour héberger sur un même routeur physique plusieurs services ou entreprises n’ayant pas forcément vocation à communiquer ensemble mais étant physiquement sur le même réseau support. Voici un petit schéma pour éclaircir cette notion :

 

 

 

 

 

 

 

 

 

 

Ici la VRF A renseignée sur les deux routeurs physiques ne pourra pas discuter avec la VRF B également présente sur les deux, nous avons deux liens logiques étanches sur un même lien physique. Dans cette configuration, on peut très bien avoir les mêmes réseaux renseignés dans la VRF A et la VRF B, ça ne gênerait en rien le bon fonctionnement vu que ce sont deux « bulles » cloisonnées.

 

Qu’est ce que l’OSPF ?

 

C’est un protocole de routage dynamique à état de liens, les routeurs établissent le lien avec les routeurs voisins en envoyant des messages « hello » à intervalle régulier; Ce protocole fonctionne avec un système d’aires généralement regroupées autour d’une aire 0, aire dite de « backbone ». Ce système d’aires permet d’éviter de propager inutilement la totalité de la base de données des liens à tout le monde. A l’inverse d’une route statique ou on déclare le réseau que l’on veut joindre (exemple : RIPV2) et par quel interface on veut l’atteindre, dans ce type de routage on déclare les réseaux à transmettre.

 

 

Nous allons dans ce billet nous arrêter à une seule aire 0 et créer deux VRFs, une nommée VRF-A et l’autre VRF-B ( voir schéma ci-dessus ). Ces deux VRFs seront présentes sur nos deux routeurs physiques et communiqueront grâce à des vlans d’interconnexion; Grâce à des processus OSPF nous échangeront dans nos VRFs des réseaux clients.

 

La maquette peut être réalisée sous GNS3 avec deux routeurs Cisco 3745 si vous n’avez pas de matériel à disposition, voir cet article pour l’installation de GNS3 et l’ajout d’un IOS Cisco 3745.

 

ROUTEUR 1 – VRF-A

Vlan 10 d’interconnexion : 10.0.0.1/30

Vlans clients à déclarer : 192.168.0.0/24 — 192.168.1.0/24

 

ROUTEUR 2 – VRF-A

Vlan 10 d’interconnexion : 10.0.0.2/30

Vlans clients à déclarer : 192.168.2.0/24 — 192.168.3.0/24

 

 

ROUTEUR 1 – VRF-B

Vlan 20 d’interconnexion : 20.0.0.1/30

Vlans clients à déclarer : 192.168.10.0/24 — 192.168.20.0/24

 

ROUTEUR 2 – VRF-B

Vlan 20 d’interconnexion : 20.0.0.2/30

Vlans clients à déclarer : 192.168.30.0/24 — 192.168.40.0/24

 

 

Connexion de R1(fa0/1) et R2(fa0/1)

 

Configuration de l’interface fa0/1 sur R1

 

R1>enable

R1#conf t

R1(config)#interface fa0/1

R1(config-if)#switchport mode trunk

R1(config-if)#no shut

 

Configuration de l’interface fa0/1 sur R2

 

R2>enable

R2#conf t

R2(config)#interface fa0/1

R2(config-if)#switchport mode trunk

R2(config-if)#no shut

 

 

Création des VRFs sur les deux routeurs physiques R1 et R2

 

Déclaration de la VRF A

 

R1>enable

R1#conf t

R1(config)#ip vrf VRF-A (création de la vrf)

R1(config-vrf)#rd 1:1 (ajout d’un route distinguisher)

R1(config-vrf)#route-target import 1:1

R1(config-vrf)#route-target export 1:1

R1(config-vrf)#exit

 

Déclaration de la VRF B

 

R1(config)#ip vrf VRF-B (création de la vrf)

R1(config-vrf)#rd 1:2 (ajout d’un route distinguisher)

R1(config-vrf)#route-target import 1:2

R1(config-vrf)#route-target export 1:2

R1(config-vrf)#exit

 

Effectuez la même opération sur le routeur R2.

 

 

Ajout des VLANs d’interconnexion sur R1 et R2 pour chaque VRF

 

Pour la VRF A

(Déclarer tout d’abord le VLAN 10)

 

R1(config)# interface vlan 10 (on créer une interface de vlan 10)

R1(config)#description Interco_VRFA (on rajoute une description)

R1(config-if)#ip vrf forwarding VRF-A (on forwarde l’interface dans la VRF A)

R1(config-if)#ip address 10.0.0.1 255.255.255.252 (on lui ajoute une adresse ip et un masque de sous-réseau)

R1(config-if)#no shutdown (on active l’interface si ce n’est pas fait)

 

R2(config)# interface vlan 10

R2(config)#description Interco_VRFA

R2(config-if)#ip vrf forwarding VRF-A

R2(config-if)#ip address 10.0.0.2 255.255.255.252

R2(config-if)#no shutdown

 

Pour la VRF B

(Déclarer tout d’abord le VLAN 20)

 

R1(config)# interface vlan 20

R1(config)#description Interco_VRFB

R1(config-if)#ip vrf forwarding VRF-B

R1(config-if)#ip address 20.0.0.1 255.255.255.252

R1(config-if)#no shutdown

 

R2(config)# interface vlan 20

R2(config)#description Interco_VRFB

R2(config-if)#ip vrf forwarding VRF-B

R2(config-if)#ip address 20.0.0.2 255.255.255.252

R2(config-if)#no shutdown

 

Ajout des VLANs clients

 

Sur le routeur R1

(Déclarer tout d’abord les VLANs 11,12,13,14)

 

R1(config)# interface vlan 11

R1(config-if)#ip vrf forwarding VRF-A

R1(config-if)#ip address 192.168.0.254 255.255.255.0

R1(config-if)#no shutdown

 

R1(config)# interface vlan 12

R1(config-if)#ip vrf forwarding VRF-A

R1(config-if)#ip address 192.168.1.254 255.255.255.0

R1(config-if)#no shutdown

 

R1(config)# interface vlan 13

R1(config-if)#ip vrf forwarding VRF-B

R1(config-if)#ip address 192.168.10.254 255.255.255.0

R1(config-if)#no shutdown

 

R1(config)# interface vlan 14

R1(config-if)#ip vrf forwarding VRF-B

R1(config-if)#ip address 192.168.20.254 255.255.255.0

R1(config-if)#no shutdown

 

Sur le routeur R2

(Déclarer tout d’abord les VLANs 21,22,23,24)

 

R2(config)# interface vlan 21

R2(config-if)#ip vrf forwarding VRF-A

R2(config-if)#ip address 192.168.2.254 255.255.255.0

R2(config-if)#no shutdown

 

R2(config)# interface vlan 22

R2(config-if)#ip vrf forwarding VRF-A

R2(config-if)#ip address 192.168.3.254 255.255.255.0

R2(config-if)#no shutdown

 

R2(config)# interface vlan 23

R2(config-if)#ip vrf forwarding VRF-B

R2(config-if)#ip address 192.168.30.254 255.255.255.0

R2(config-if)#no shutdown

 

R2(config)# interface vlan 24

R2(config-if)#ip vrf forwarding VRF-B

R2(config-if)#ip address 192.168.40.254 255.255.255.0

R2(config-if)#no shutdown

 

 

Mise en place du routage OSPF

 

Sur le routeur R1

 

R1(config)#router ospf 1 vrf VRF-A (on ajoute une nouvelle instance OSPF qu’on forwarde dans la VRF)

R1(config-router)#router-id 1.1.1.1 (on spécifie un ID unique à cette instance)

R1(config-router)#network 10.0.0.0 0.0.0.3 area 0 (on déclare ses réseaux dans l’aire 0 pour les annoncer aux voisins)

R1(config-router)#network 192.168.0.0 0.0.0.255 area 0

R1(config-router)#network 192.168.1.0 0.0.0.255 area 0

 

R1(config)#router ospf 2 vrf VRF-B

R1(config-router)#router-id 1.1.1.2

R1(config-router)#network 20.0.0.0 0.0.0.3 area 0

R1(config-router)#network 192.168.10.0 0.0.0.255 area 0

R1(config-router)#network 192.168.20.0 0.0.0.255 area 0

 

Sur le routeur R2

 

R2(config)#router ospf 1 vrf VRF-A

R2(config-router)#router-id 2.1.1.1

R2(config-router)#network 10.0.0.0 0.0.0.3 area 0

R2(config-router)#network 192.168.2.0 0.0.0.255 area 0

R2(config-router)#network 192.168.3.0 0.0.0.255 area 0

 

R2(config)#router ospf 2 vrf VRF-B

R2(config-router)#router-id 2.1.1.2

R2(config-router)#network 20.0.0.0 0.0.0.3 area 0

R2(config-router)#network 192.168.30.0 0.0.0.255 area 0

R2(config-router)#network 192.168.40.0 0.0.0.255 area 0

 

 

Schéma récapitulatif de l’architecture mise en place

 

 

 

 

 

 

 

Tests de bon fonctionnement

 

Visualisation de la table de routage globale

 

 

 

 

 

 

 

Aucune route dans la table de routage globale ce qui est normal puisque toutes les routes se trouvent dans les VRFs A et B.

 

Visualisation des routes OSPF dans les VRFs A et B sur les routeurs R1 et R2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Nous voyons bien les routes apprises via l’OSPF ( O ) et celles directement connectées ( C ).

 

Tests de ping à l’intérieur des VRFs

 

 

 

 

Faîtes le test de pinger une interface de vlan située dans la VRF-B depuis la VRF-A, vous verrez que cela ne donne rien et que cela prouve l’étanchéité des VRFs.

 

 

Pour aller plus loin, analyse avec wireshark

 

A l’aide du « sniffeur » wireshark, capturez le trafic de l’interface fa0/1 du routeur R1 par exemple ( le trunk ), vous verrez très nettement les messages « Hello » envoyés par le protocole OSPF et les mises à jour des routes :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Correspondance des commandes CISCO HP/H3C/3COM pour les VRFs et l’OSPF

 

4 Commentaires

  1. c’est trop cool ce tuto merci

  2. super tuto !
    merci !

  3. question , je suis entrain de mettre en pratique vrf et je comprends tres bien le principe selon votre example ( et excellant tuto de votre part ) par contre jai une question ?

    vous dites sur R1 port fa 0/1 de le mettre en trunk ? sur un routeur pour mettre le port en trunk ? il fault creer chaque vlan interface fa 0/1.10 etc… ? non ? ou vous utilisez une switch l3 ? ou part l entremise de gns3 vous avez rajouter l adapteur nm-16sw et vous avez utilisez fa 1/0 ? pouvez vous me confirmer svp 🙂 j apprecierai 🙂

    Merci

    Patrick Denis

    • Bonjour Patrick, effectivement tout dépend le type d’équipement que tu as ( vrai routeur ou switch l3) en fonction de cela tu créeras soit des sous-interfaces pour chaque vlan (fa0/1.1 pour vlan 1, fa0/1.2 pour vlan 2 …) et tu mettras les ports fa0/1 des deux équipements en mode dot1q (trunk) soit si c’est un switch de l3 tu créeras des interfaces de vlan et tu mettras les ports des deux équipements connectés en mode trunk

Laisser un commentaire

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