Hands-On Lab: Configuring Dual-Hub DMVPN for Redundancy

This hands-on lab extends the Phase 3 DMVPN topology from the previous lab with a second hub, configuring each spoke to register with both hubs simultaneously and verifying automatic failover when the primary hub becomes unreachable.

Dual-Hub DMVPNMultiple NHS ConfigurationHub Redundancy Failover

~3 min read · Updated Sep 26, 2026

Lab Objective

Add a second hub to the existing DMVPN cloud, configure each spoke with both hubs as NHRP next-hop servers, verify spokes register with both simultaneously, and confirm traffic automatically continues via the secondary hub when the primary becomes unreachable.

Lab Purpose

The single-hub topology used throughout earlier DMVPN labs in this series has an obvious weakness: the hub is a single point of failure for the entire overlay. Configuring each spoke with multiple NHS entries allows genuine hub redundancy, an essential design consideration for any production DMVPN deployment.

Lab Topology

Hub1 ---- Tunnel0: 172.16.200.1/24 (primary)
Hub2 ---- Tunnel0: 172.16.200.4/24 (secondary)

Spoke1 ---- Tunnel0: 172.16.200.2/24
Spoke2 ---- Tunnel0: 172.16.200.3/24

Both hubs advertise reachability to the
same spoke LAN subnets via a routing
protocol running over the tunnel

Task 1: Configure Hub2 as a Second Hub

Configure Hub2's tunnel interface identically in structure to Hub1's, joining the same DMVPN cloud.

Task 2: Configure Each Spoke with Both Hubs as NHS

Add a second ip nhrp nhs statement on each spoke pointing to Hub2, alongside the existing statement for Hub1.

Task 3: Verify Both Spokes Register with Both Hubs

Confirm each hub's NHRP cache shows both spokes registered.

Task 4: Verify Normal Traffic Flow via the Primary Hub

Confirm spoke-to-spoke or spoke-to-hub traffic currently prefers Hub1 based on routing metrics.

Task 5: Simulate Hub1 Failure and Verify Failover to Hub2

Shut down Hub1's tunnel interface and confirm spokes continue operating via Hub2 without manual intervention.

Solution and Verification

Hub2(config)# interface tunnel0
Hub2(config-if)# ip address 172.16.200.4 255.255.255.0
Hub2(config-if)# tunnel source gigabitethernet0/1
Hub2(config-if)# tunnel mode gre multipoint
Hub2(config-if)# ip nhrp network-id 1
Hub2(config-if)# ip nhrp redirect

Spoke1(config)# interface tunnel0
Spoke1(config-if)# ip nhrp nhs 172.16.200.4 nbma [Hub2's public IP]

Spoke2(config)# interface tunnel0
Spoke2(config-if)# ip nhrp nhs 172.16.200.4 nbma [Hub2's public IP]

-- Each spoke now has two nhs statements --
-- one per hub -- and will register with
-- both independently

Hub1# show ip nhrp | include Tunnel0
172.16.200.2/32 via 172.16.200.2 ... Tunnel0
172.16.200.3/32 via 172.16.200.3 ... Tunnel0

Hub2# show ip nhrp | include Tunnel0
172.16.200.2/32 via 172.16.200.2 ... Tunnel0
172.16.200.3/32 via 172.16.200.3 ... Tunnel0
-- Both hubs independently show both spokes
-- registered, confirming dual registration
-- succeeded

Spoke1# show ip route 192.168.12.0

O    192.168.12.0/24 [110/65] via 172.16.200.1
-- Hub1 currently preferred based on the
-- routing protocol's metric

Hub1(config)# interface tunnel0
Hub1(config-if)# shutdown

Spoke1# show ip route 192.168.12.0

O    192.168.12.0/24 [110/65] via 172.16.200.4
-- The routing protocol automatically
-- reconverged to prefer Hub2 once Hub1
-- became unreachable, requiring no manual
-- reconfiguration on any spoke

Spoke1-LAN-PC> ping 192.168.12.10

!!!!!
Success rate is 100 percent (5/5)
-- Connectivity between spoke LANs remains
-- fully functional despite Hub1's failure

Key Takeaway

Dual-hub DMVPN redundancy relies on two independent layers working together: NHRP registration to multiple NHS entries ensures every spoke maintains mapping information with both hubs simultaneously, while a dynamic routing protocol running over the tunnel handles the actual failover decision based on standard metric comparison — DMVPN itself does not choose which hub is "active," it simply provides the overlay connectivity that the routing protocol then uses to make that decision exactly as it would over any other set of redundant links.

Written & researched by Dr. Shahin Siami

Related Articles

Hands-On Lab: Configuring EIGRP Stub Routing

This hands-on lab configures a branch router as an EIGRP stub, verifying it advertises only its own connected and summary routes while the hub router correctly avoids querying the stub during a topology change elsewhere in the network.

Continue

Hands-On Lab: Configuring EIGRP Named Mode

This hands-on lab reconfigures a classic EIGRP setup into EIGRP named mode, organizing address-family and interface-specific configuration into a more structured hierarchy, and verifies functional equivalence with the classic configuration style used throughout earlier EIGRP labs in this series.

Continue

Hands-On Lab: Configuring ERSPAN Across a Routed Network

This hands-on lab configures Encapsulated RSPAN (ERSPAN) to mirror traffic across a Layer 3-routed network rather than a single Layer 2 trunk, extending the RSPAN concept from the previous lab beyond the boundaries of a single VLAN or switched domain.

Continue

Hands-On Lab: Configuring RSPAN Across Switches

This hands-on lab configures Remote SPAN (RSPAN) using a dedicated RSPAN VLAN carried across a trunk, allowing traffic mirrored on one switch to be monitored by a capture device connected to an entirely different switch, extending the local SPAN concept covered in an earlier lab across the network.

Continue

Hands-On Lab: Configuring In-Service Software Upgrade (ISSU) on a Stack

This hands-on lab performs an In-Service Software Upgrade across a StackWise stack, upgrading each member's IOS image one at a time while the stack continues forwarding traffic throughout, verifying zero downtime compared to the disruptive reload approach used in earlier IOS upgrade labs.

Continue

Hands-On Lab: Configuring Cisco Catalyst StackWise Traditional Stacking

This hands-on lab configures traditional Catalyst stacking (StackWise) across three switches using stack cables, contrasting its single-tier, chassis-proximity requirement against the StackWise Virtual pair covered in the previous lab, which allows switches to be located much farther apart.

Continue