SNRS – Dynamic Multipoint VPN (DMVPN)
Solution
- Uses hub-and-spoke design
- Supports redundancy
- Does not use crypto maps
- Multipoint GRE tunnel interfaces
- Spokes connect to the HUB and never vice versa
- Multiple or single topology
-
- Single topology: only one subnet on the HUB side
- Multiple topology: multiple subnets on the HUB side
Components
- Multipoint GRE (mGRE) tunnel interface
- Next Hop Resolution Protocol (NHRP)
-
- 20 years old, originally designed for ATM/X.25 tunnels
- Before sending a packet, the spoke does an NHRP query to the HUB that acts as an NHRP server
- The server answers with the real IP address and advertise the destination network
- If the destination is not the HUB router, the spoke sets up an IPSec tunnel directly to the remote spoke, if using mGRE, bypassing the router
- Spoke-to-spoke tunnels are automatically removed if idle for a certain time
- IPSec profiles
- Replace static crypto maps, still needs a transform set
rt(config)# crypto isakmp policy priority_# rt(config-isakmp)# authentication rsa-sign|rsa-encr|pre-share rt(config-isakmp)# encryption des|3des|aes|aes 192|aes 256 rt(config-isakmp)# group 1|2|5 rt(config-isakmp)# hash md5|sha rt(config-isakmp)# lifetime #_of_seconds rt(config-isakmp)# exit rt(config)# crypto isakmp key key address 0.0.0.0 rt(config)# crypto ipsec transform-set tsname ts_1 [ts2 [ts3]] rt(config)# mode tunnel
- Profile instead of map
rt(config)# crypto ipsec profile profile_name rt(ipsec-profile)# set transform-set tsname ts_1 [ts2 [ts3]] rt(ipsec-profile)# set pfs group1|group2|group3 rt(ipsec-profile)# set security-association lifetime …
- HUB configuration
rt(config)# interface tunnel int_# rt(config-if)# ip address ip_addr rt(config-if)# ip mtu 1416 rt(config-if)# ip nhrp authentication key rt(config-if)# ip nhrp map multicast dynamic - needed for routing! rt(config-if)# ip nhrp network-id id# rt(config-if)# ip nhrp holdtime seconds rt(config-if)# tunnel source public_int_name rt(config-if)# tunnel key key_# rt(config-if)# tunnel mode gre multipoint rt(config-if)# tunnel protection ipsec profile profile
- Spoke configuration
Configuration
rt(config)# interface tunnel int_# rt(config-if)# ip address ip_addr rt(config-if)# ip mtu 1416 rt(config-if)# ip nhrp authentication key rt(config-if)# ip nhrp map HUB_public_IP rt(config-if)# ip nhrp map multicast HUB_public_IP rt(config-if)# ip nhrp nhs HUB_tunnel_IP rt(config-if)# ip nhrp network-id id# rt(config-if)# ip nhrp holdtime seconds rt(config-if)# tunnel source public_int_name rt(config-if)# tunnel key key_# rt(config-if)# tunnel mode gre multipoint rt(config-if)# tunnel protection ipsec profile profile
- Disable split horizon for EIGRP
- no eigrp next-hop-self
- eigrp stub connected
- on OSPF, set the bandwidth parameter in the interface tunnel – does not affect functionality but may help in limiting fragmentation and increase performances
- on OSPF, the HUB needs to have OSPF broadcast enabled