Présentation
Le DMVPN est une combinaison de deux protocoles :
- Multipoint Generic Routing Encapsulation (mGRE)
- Next Hop Resolution Protocol (NHRP)
Il supporte les protocoles de routage dynamique suivants :
- OSPF
- EIGRP
- BGP
Avant de lire cet article, il est primordial d’avoir lu les articles sur le protocole GRE et sur le protocole IPsec.
DANS UN MONDE 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.

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 ?

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 tunnel sur R4.
Conclusion :
- Il faut ajouter une interface tunnel sur tous nos routeurs.
- Chaque routeur possède 3 interfaces tunnel.
- 6 Interfaces à ajouter au total.
Exemple 2 :
Imaginez que vous avez une bulle de 20 routeurs (de R1 à R20), que tous ces routeurs sont interconnectés via tunnel GRE et que vous voulez rajouter un 21e 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ède 20 interfaces tunnel.
- 420 interfaces tunnel au total.
- Vos configurations sont énormes !!
- Le suivi est compliqué à faire.
- Les chances de faire une bêtise sont énormes.
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 HUB–SPOKE 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 HUB–SPOKE.
Nous avons donc qu’une seule interface tunnel sur chaque routeur.

Comme dans notre premier exemple, nous allons ajouter le routeur 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 tous 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.
LE MULTIPOINT GRE
Introduction
Petit rappel : DMVPN = mGRE + NHRP
mGRE se base sur le NHRP pour fonctionner. Nous allons donc maintenant parler du mGRE + NHRP
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

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 multipoint gre (mgre)

Le principal avantage du mGRE réside dans sa simplicité de configuration ! Au lieu d’avoir 10 tunnels donc 20 interfaces tunnel à 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 HUB – SPOKE
Les liaisons 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 HUB – SPOKE :
- 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ées à jour afin de faire la relation entre l’adresse WAN d’un routeur et son interface tunnel.

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.

É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
Configuration du 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
Configuration du 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

Configuration du 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
Configuration du Spoke
!!!!!!!!!!!!!!! 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
Les versions du dmvpn
PHASE 1 (OBSOLÈTE)
Avantages :
- Création du DMVPN.
- Mise en place facile.
- Fichier de configuration plus petit.
Inconvénients :
- Seul le HUB est configuré en mode multipoint.
- Uniquement des liaisons HUB-SPOKE.
- Si un SPOKE veut é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 expliquée dans cet article.
Avantages :
- Voir plus haut
Inconvénients :
- Les routeurs SPOKE connaissent tous 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ète …
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 )
Sur le même thème
Merci de votre soutien et de votre fidélité ! Ce site existe grâce à vous et je ne vous remercierais jamais assez !
Comments (5)
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.
Salut Antho !
La faute est corrigée ;p Merci beaucoup ! Le plus dur au final c’est la relecture !
Merci beaucoup pour ton retour ! Faire ce site me prend beaucoup de temps et ca fais plaisir de savoir que cela sert a quelqu’un !!
Au plaisir !!
Merci,très bien fait et très bien expliqué 🙂
Merci 😊
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à.