Dynamic Multipoint VPN (DMVPN)

Le DMVPN est une combinaison de deux protocoles :

Multipoint Generic Routing Encapsulation (mGRE)
Next Hop Resolution Protocol (NHRP)

Il supporte les protocols de routage dynamique suivants :

– OSPF
– EIGRP
– BGP

Avant de lire cet article, il est primordiale d’avoir lu les articles sur le protocole GRE et sur le  protocole IPsec.

 

Avantage du DMVPN


Avant de voir les avantages du DMVPN, voyons plutôt pourquoi il à été créé.

Mettons-nous en situation :

 

Dans un mode sans DMVPN


Exemple 1 :

Nous avons 3 routeurs : R1, R2 et R3.

Nous devons monter un Tunnel entre :

R1 et R2.
R1 et R3.
R2 et R3.

En tout, nous avons 3 routeurs à configurer donc deux interfaces tunnel sur R1, R2 et R3.

Au total : 6 interfaces.

Sans DMVPN

Sans DMVPN – Architecture de base

Maintenant, nous devons ajouter un quatrième routeur appelé R4. Qu’elles sont les actions à mener pour ajouter un tunnel entre R4 – R1, R4 – R2 et R4 – R3 ?

Sans DMVPN

Sans DMVPN – Ajout de R4

Action à réaliser :

– Création d’une interface tunnel sur R1.
– Création d’une interface tunnel sur R2.
– Création d’une interface tunnel sur R3.
– Création de 3 interfaces tunnels sur R4.

Conclusion :

– Il faut ajouter une interface tunnel sur tous nos routeurs.
– Chaque routeur possède 3 interfaces tunnels.
– 6 Interfaces à ajouter au total.

Exemple 2 :

Imaginez que vous avez une bulle de 20 routeurs (de R1 à R20), que tout ces routeurs sont interconnectés via tunnel GRE et que vous voulez rajouter un 21ème routeur appelé R21 :

Action à réaliser :

– Ajout d’une interface tunnel sur R1.
– Ajout d’une interface tunnel sur R2.
– Ajout d’une interface tunnel sur R3.
– Ajout d’une interface tunnel sur R4.
– Ajout d’une interface tunnel sur R5.
– Ajout d’une interface tunnel sur R6.
– Ajout d’une interface tunnel sur R7.
– Ajout d’une interface tunnel sur R8.
– Ajout d’une interface tunnel sur R9.
– Ajout d’une interface tunnel sur R10.
– Ajout d’une interface tunnel sur R11.
– Ajout d’une interface tunnel sur R12.
– Ajout d’une interface tunnel sur R13.
– Ajout d’une interface tunnel sur R14.
– Ajout d’une interface tunnel sur R15.
– Ajout d’une interface tunnel sur R16.
– Ajout d’une interface tunnel sur R17.
– Ajout d’une interface tunnel sur R18.
– Ajout d’une interface tunnel sur R19.
– Ajout d’une interface tunnel sur R20.
– Création de 20 interfaces tunnel sur R21.

Conclusion :

– Création de 40 interfaces tunnel.
– Chaque routeur possèdent 20 interfaces tunnel.
– 420 interfaces tunnel au total.
– Vos configurations sont énormes !!
– Le suivi est compliqué à faire.
– Les chances de faire une bêtise est énorme.

Tout ça pour l’ajout d’un seul routeur dans notre bulle ??

Pour éviter tous ces problèmes, nous allons voir pourquoi le DMVPN est LA solution.

 

Dans un monde avec DMVPN


Exemple 1:

Même architecture de départ. Sauf que nous allons mettre en place du DMVPN.

Sans rentrer dans le détail (voir plus bas pour plus d’informations)

HUB = Chef d’orchestre.
SPOKE = Membre de l’orchestre.

Les tunnels HUBSPOKE sont à créer manuellement.
Les tunnels SPOKE-SPOKE se créent automatiquement.

Sur notre HUB, il suffit de créer une seule et unique interface tunnel pour toutes nos liaisons HUBSPOKE.

Nous avons donc qu’une seule interface tunnel sur chaque routeur.

Avec DMVPN - Architecture de base

Avec DMVPN – Architecture de base

Comme dans notre premier exemple, nous allons ajouter le routeur R4.

Avec DMVPN - Ajout de R4

Avec DMVPN – Ajout de R4

 

Action à réaliser :

– Création d’une interface tunnel sur R4

Touuuuuuuut simplement !!!!!!

Exemple 2 :

Imaginez que vous avez une bulle de 20 routeurs (de R1 à R20) que tout ces routeurs sont interconnectés via tunnel GRE et que vous voulez rajouter un 21eme routeur appelé R21 :

Action à réaliser :

– Création d’une interface tunnel sur R21.

Touuuuuuuut simplement !!!!!! encore une fois 🙂

 

Conclusion


Avantage du DMVPN :

– Diminution des performances réseau.
– Réduction de la latence, ce qui permet d’avoir une optimisation immédiate pour les applications “real-time”.
– Réduction de la taille du fichier de configuration de nos routeurs.
– Possibilité de rajouter dynamiquement des tunnels sans toucher à la configuration de nos routeurs.
– Encryption IPsec dynamique (ce qui réduit fortement les pertes de paquets).
– Les tunnels SPOKE – SPOKE sont montés dynamiquement.

DMVPN supporte :

– Tous les protocoles de routage dynamique.
– Le trafic multicast.
– Les VRFs.
– le MPLS.
– Load balancing.

Source : CISCO

Fonctionnement du DMVPN


Petit rappel : DMVPN = mGRE + NHRP

mGRE se base sur le NHRP  pour fonctionner. Nous allons donc maintenant parler du mGRE + NHRP

 

Multipoint GRE (mGRE) +

Next Hop Resolution Protocol (NHRP)


 

Multipoint GRE


mGRE :

Multipoint Generic Routing Encapsulation
(voir article sur le protocole GRE)

Un tunnel GRE est un tunnel point-à-point.
Un tunnel mGRE est un tunnel point-multipoint.

Avec des tunnels GRE


DMVPN - GRE

DMVPN – GRE

Avec des tunnels GRE point-à-point, nous devons créer 10 Tunnels GRE avec 10 plages d’adresse IP associées :

– Tunnel 12 = 1.1.12.0 /30
– Tunnel 13 = 1.1.13.0 /30
– Tunnel 14 = 1.1.14.0 /30
– Tunnel 15 = 1.1.15.0 /30
– Tunnel 23 = 1.1.23.0 /30
– Tunnel 24 = 1.1.24.0 /30
– Tunnel 25 = 1.1.25.0 /30
– Tunnel 34 = 1.1.34.0 /30
– Tunnel 35 = 1.1.35.0 /30
– Tunnel 45 = 1.1.45.0 /30

Euh …. et avec mGRE ?

Avec un mGRE


DMVPN - mGRE

DMVPN – mGRE

Le principal avantage du mGRE réside dans sa simplicité de configuration ! Au lieu d’avoir 10 tunnels donc 20 interfaces tunnels à configurer, nous n’avons qu’à configurer un seul et même tunnel et le reste se fait tout seul.
Comme nous l’avons vu plus haut, il va y avoir un routeur qui va avoir le rôle de HUB, et les autres auront le rôle de SPOKE.
Afin de fonctionner, il suffira uniquement de configurer les liaisons HUBSPOKE
Les liaison SPOKE – SPOKE vont se monter dynamiquement.

Autre gros avantage aussi ! Nous allons économiser des plages d’adresses IP vu que toutes les interfaces de nos tunnels vont être dans le même réseau !

– Tunnel 1 = 1.1.1.0 /24.

Vu que nous allons monter manuellement les liaisons HUBSPOKE :

– Chaque SPOKE devra connaitre l’adresse IP WAN de la patte de notre routeur HUB.
– Notre routeur HUB va apprendre l’adresse IP WAN des SPOKE via le protocole NHRP.

Mais comment un routeur SPOKE va connaître l’adresse WAN d’un autre routeur SPOKE afin de monter son tunnel SPOKE SPOKE dynamiquement ?
Grâce au protocole NHRP !

 

Next Hop Resolution Protocol


NHRP :

Next Hop Resolution Protocol.
– RFC 2332.
– Protocole utilisé dans les réseaux NBMA (NonBroadcast MultiAccess).

HUB = NHRP Server
SPOKE = NHRP Client

Le protocole NHRP va maintenir une base de donnée à jour afin de faire la relation entre l’adresse WAN d’un routeur et son interface tunnel.

DMVPN - Remplissage de la Database NHRP

DMVPN – Remplissage de la Database NHRP

Chaque routeur SPOKE  va envoyer son adresse WAN ainsi que son adresse de tunnel au routeur HUB.

Si un routeur SPOKE à besoin de monter un tunnel SPOKE-SPOKE, il va faire une demande NHRP Query à notre routeur HUB.

DMVPN - NHRP - Tunnel Spoke - Spoke

DMVPN – NHRP – Tunnel Spoke – Spoke

 

Étape 1 : R2 veut monter un tunnel avec R3, il sait que l’adresse IP de son interface tunnel est la 1.1.1.3 mais ne connaît pas l’adresse IP de sa patte WAN. Il va donc demander a R1 (HUB) de lui donner cette information.

Étape 2 : R1 reçoit la requête de R2 et lui dit que l’adresse IP tunnel 1.1.1.3 est associée a l’adresse IP 30.30.30.1.

Étape 3 : R2 à toutes les informations nécessaires pour faire une demande d’ouverture de tunnel.

 

Configuration


HUB


!!!!!! Configuration du mGRE !!!!!!

HUB(config)# interface Tunnel 10
HUB(config-if)# ip address [IP-TUN-HUB] [MASQUE]
HUB(config-if)# tunnel source [IP-WAN-HUB]
HUB(config-if)# tunnel mode gre multipoint

!!!!!! Configuration du NHRP !!!!!!

HUB(config-if)# ip nhrp network-id 1 
HUB(config-if)# ip nhrp authentication [PASSWORD]
HUB(config-if)# ip nhrp map multicast dynamic 

 

SPOKE


!!!!!! Configuration du mGRE !!!!!!

SPOKE(config)# interface Tunnel 10
SPOKE(config-if)# ip address [IP-TUN-SPOKE] [MASQUE]
SPOKE(config-if)# tunnel source [IP-WAN-SPOKE]
SPOKE(config-if)# tunnel mode gre multipoint

!!!!!! Configuration du NHRP !!!!!!

SPOKE(config-if)# ip nhrp network-id 1 
SPOKE(config-if)# ip nhrp authentication [PASSWORD]
SPOKE(config-if)# ip nhrp map multicast [IP-WAN-HUB] 
SPOKE(config-if)# ip nhrp map [IP-TUN-HUB] [IP-WAN-HUB]  <<< SPOKE       
SPOKE(config-if)# ip nhrp map multicast [IP-WAN-HUB]     <<< SPOKE 
SPOKE(config-if)# ip nhrp nhs [IP-TUN-HUB]               <<< SPOKE

 

DMVPN over IPsec


Topologie


Topologie DMVPN

Topologie DMVPN

 

Routeur 1 – HUB


!!!!!!!!!!!!!!! Configuration de notre interface WAN !!!!!!!!!!!

R1(config)# interface FastEthernet 0/0
R1(config-if)# ip address 10.10.10.1 255.255.255.0
R1(config-if)# description VERS_WAN
R1(config-if)# exit

!!!!!!!!!!!!!!! Configuration du Tunnel DMVPN !!!!!!!!!!!

R1(config)# interface tunnel 10
R1(config-if)# ip address 1.1.1.1 255.255.255.0
R1(config-if)# tunnel mode gre multipoint
R1(config-if)# tunnel source fastEthernet 0/0
R1(config-if)# ip nhrp map multicast dynamic
R1(config-if)# ip nhrp network-id 1
R1(config-if)# ip nhrp authentication CISCO
R1(config-if)# exit

!!!!!!!!!!!!!!! Configuration d'IPSEC !!!!!!!!!!!

R1(config)# crypto isakmp policy 10
R1(config-isakmp)# encryption aes-256
R1(config-isakmp)# authentication pre-share
R1(config-isakmp)# group 7
R1(config-isakmp)# hash sha
R1(config-isakmp)# exit
R1(config)# crypto isakmp key pre-share-key-finger address 0.0.0.0
R1(config)# crypto ipsec transform-set Finger esp-aes256 esp-sha-hmac
R1(cfg-crypto-trans)# exit
R1(config)# crypto ipsec profile MGRE
R1(ipsec-profile)# set transform-set Finger
R1(ipsec-profile)# exit

!!!!!!!!!!!!!!! Application d'IPSEC !!!!!!!!!!!

R1(config)# interface tunnel 10
R1(config-if)# tunnel protection ipsec profile MGRE

 

Routeur X – Spoke – Configuration générique


 

!!!!!!!!!!!!!!! Configuration de notre interface WAN !!!!!!!!!!!

RX(config)# interface FastEthernet 0/0 
RX(config-if)# ip address X.X.X.X X.X.X.X          <<< Modifiez
RX(config-if)# description VERS_WAN 
RX(config-if)# exit 

!!!!!!!!!!!!!!! Configuration du Tunnel DMVPN !!!!!!!!!!!

RX(config)# interface tunnel 10 
RX(config-if)# ip address 1.1.1.X 255.255.255.0      <<< Modifiez
RX(config-if)# tunnel mode gre multipoint 
RX(config-if)# tunnel source FastEthernet 0/0 
RX(config-if)# ip nhrp map multicast dynamic 
RX(config-if)# ip nhrp network-id 1 
RX(config-if)# ip nhrp authentication CISCO 
RX(config-if)# ip nhrp map 1.1.1.1 10.10.10.1       <<< Ajoutez car SPOKE
RX(config-if)# ip nhrp map multicast 10.10.10.1     <<< Ajoutez car SPOKE
RX(config-if)# ip nhrp nhs 1.1.1.1                  <<< Ajoutez car SPOKE
RX(config-if)# exit

!!!!!!!!!!!!!!! Configuration d'IPSEC !!!!!!!!!!!

RX(config)# crypto isakmp policy 10 
RX(config-isakmp)# encryption aes-256 
RX(config-isakmp)# authentication pre-share 
RX(config-isakmp)# group 7 
RX(config-isakmp)# hash sha 
RX(config-isakmp)# exit 

RX(config)# crypto isakmp key pre-share-key-finger address 0.0.0.0 
RX(config)# crypto ipsec transform-set Finger esp-aes256 esp-sha-hmac 
RX(cfg-crypto-trans)# exit 

RX(config)# crypto ipsec profile MGRE 
RX(ipsec-profile)# set transform-set Finger 
RX(ipsec-profile)# exit 

!!!!!!!!!!!!!!! Application d'IPSEC !!!!!!!!!!!

RX(config)# interface tunnel 10 
RX(config-if)# tunnel protection ipsec profile MGRE

 

Versions DMVPN


Il existe 3 version DMVPN appelée phases :

 

Phase 1 (Obsolète)


Avantages :

– Création du DMVPN.
– Mise en place facile.
– Fichier de configuration plus petit.

Inconvéniants :

– Seul le HUB est configuré en mode multipoint.
– Uniquement des liaisons HUB-SPOKE.
– Si un SPOKE veux échanger avec un autre spoke, il doit forcément passer par le HUB.

En gros, nous avons un réseau en étoile …

 

Phase 2 (Obsolète)


La phase 2 est la phase expliquer dans cet article.

Avantages :

– Voir plus haut

Inconvéniants :

– Les routeurs SPOKE connaissent tout les autres SPOKE via le routage dynamique mais ne savent pas comment les joindre sans demander au HUB.
– Table de routage et CEF toujours incomplètes …

 

Phase 3


Avantages :

– Tout le monde possède une table NHRP et tout le monde peut répondre aux requêtes des SPOKE.
– Stabilités des tables de routage.

 

HUB

HUB(config)# interface tunnel 10
HUB(config-if)# ip nhrp redirect

SPOKE

SPOKE(config)# interface tunnel 10
SPOKE(config-if)# ip nhrp shortcut

Pour plus de détails sur les Phases 1, 2 et 3 du DMVPN, voir cet excellent article fait par Benoit : http://www.networklife.net/2014/10/dmvpn-phase-12-et-3/comment-page-1/

 

Conclusion


– Au niveau du routage, n’oubliez pas les mondes Underlying et Overlay (voir article sur le GRE)

– Avant de mettre en place du DMVPN, étudiez bien le besoin ! Dans certains cas, nous sommes obligés de passer par des Tunnels GRE point-to-point (voir article sur le CBWFQ over GRE )


 

En espérant que cet article vous as été utile ! Hésitez pas à me la faire savoir !!

FingerInTheNet.com

 

 

 

Noël NICOLAS

Expert Réseau
10 ans d’expérience
CCNP Routing and Switching
Fondateur du site FingerInTheNet

Poster un Commentaire

5 Commentaires sur "Dynamic Multipoint VPN (DMVPN)"

Laisser un commentaire

  Subscribe  
plus récents plus anciens plus de votes
Me notifier des
Antho
Invité

Tuto très bien fait et très bien expliqué, comme le reste de ton site d’ailleurs.
Merci beaucoup, c’est difficile de trouver des explications simples et fonctionnelles dans le domaine.
Je ne peux que t’encourager à nous partager encore tes connaissances 😉 Bravo !

PS : Je pense qu’une faute de frappe s’est glissé dans l’écriture de ta première conf de HUB.
Tu as mis le config-if alors que tu n’étais pas encore rentré dans l’interface Tunnel.
Rien de grave, mais ça m’a tiqué dans la compréhension lol.

Nourhen
Invité

Merci,très bien fait et très bien expliqué 🙂

kayoumt
Invité

Félicitations pour l’immense effort ! Les schémas sont excellents.

Ça serait encore plus excellent si tu scindais l’article en 3 parties.

– Partie-1 : Introduction à DMVPN.
– Partie-2 : Configuration de DMVPN (expliquer le rôle des différentes commandes « ip nhrp »).
– Partie-3 : DMVPN over IPsec

Quelques commentaires mineurs :

1 – Dans les avantages, tu cites « Diminution des performances réseau ». Je ne suis pas sûr que cela soit un avantage.
2 – Pour Phase-1 et Phase-2 de DMVPN, tu mentionnes « Obsolète ». Il faudrait expliquer qu’est-ce que tu veux dire par là.