Dynamic Virtual Tunnel Interface.
It’s a similar concept to DMVPN but with a few differences
- dVTI requires a smaller packet header only 4 bytes compared to DMVPN which is an additional 28 bytes
- dVTI does not use NHRP
- dVTI has backwards compatibility with IPsec direct encapsulation
- dVTI requires IP unumbered
- dVTI requires the use of a dynamic routing protocol instead of keepalives
- dVTI must be initiated by the remote branch to the head-end
I personally like the fact that the interface is unnumbered as it reduces the amount of IP address space that you need to manage. Each virtual template can be configured with different characteristics on the head-end device so that common branch offices share the same settings. This type of solution is ideal for a hub and spoke design.
I’m not saying dVTI is better or worse than DMVPN it’s just different.
The spoke forms an EIGRP neighbor with the HUB, you can then advertise a default route to the spoke. If you want to apply policies like QoS you can do this directly on the template interface. The spoke will advertise the LAN network to the Hub and you can then summarise at the Hub into the data centre for multiple spokes.
Here is the configuration with a front VRF, this was tested in the lab on live equipment.
Hub Configuration
vrf definition internet rd 1:1 address-family ipv4 crypto keyring KEYRING vrf internet pre-shared-key address [IP ADDRESS of SPOKE or match all] key cisco crypto isakmp policy 10 encr aes hash sha256 authentication pre-share group 14 crypto isakmp profile ISAKMPPROFILE keyring KEYRING match identity address [IP ADDRESS of SPOKE or match all] internet virtual-template 1 crypto ipsec transform-set TSET_SECURE esp-aes esp-sha256-hmac interface Loopback0 ip address 172.16.255.1 255.255.255.255 interface gig0/0 vrf forwarding internet description outside_interface ip address [WAN Interface IP and Subnet Mask] no ip redirects no ip unreachables no ip proxy-arp interface gig0/1 description inside_interface ip address 192.168.255.50 255.255.255.0 interface Virtual-Template1 type tunnel ip unnumbered Loopback0 ip mtu 1408 ip summary-address eigrp 1 0.0.0.0 0.0.0.0 tunnel mode ipsec ipv4 tunnel vrf internet tunnel protection ipsec profile IPSECPROFILE_SECURE router eigrp 1 network 172.16.255.1 0.0.0.0 ip route vrf internet 0.0.0.0 0.0.0.0 [next-hop to internet]
Spoke Configuration
vrf definition internet rd 1:1 address-family ipv4 crypto keyring 1 vrf internet pre-shared-key address [IP address of HUB] cisco crypto isakmp policy 10 encr aes hash sha256 authentication pre-share group 14 crypto ipsec transform-set TSET_SECURE esp-aes esp-sha256-hmac crypto ipsec profile IPSECPROFILE_SECURE set transform-set TSET_SECURE interface Loopback0 ip address 172.16.255.2 255.255.255.255 interface Tunnel0 ip unnumbered Loopback0 ip mtu 1408 tunnel source gig0/1 tunnel mode ipsec ipv4 tunnel destination [IP address of HUB] tunnel vrf internet tunnel protection ipsec profile IPSECPROFILE_SECURE interface gig0/1 description outside_interface vrf forwarding internet ip address [WAN Interface IP and Subnet Mask or DHCP] interface vlan 1 description inside_interface ip address 172.16.1.1 255.255.255.252 no shut router eigrp 1 network 172.168.255.2 0.0.0.0 network 172.16.1.1 0.0.0.0 eigrp stub connected summary
To verify you can use commands like below.
“show ip int brief”
“show ip interface virtual-access1”
“show ip eigrp neighbors”
“show crypto isakmp sa”
“show crypto engine connections active”
Update: You might notice I have used classic EIGRP instead of EIGRP named mode, the reason was due to the fact that under the af-interface virtua- template I wasn’t able to set the summary route, the command was accepted but wasn’t being sent to the neighbor. Perhaps this is a bug in the version I was running.
With SVTI you define a source and destination to encapsulate the encrypted packet that is being routed through the tunnel interface. With dVTI you specify neither on the hub? I don’t understand what’s happening behind the scenes with that template that is allowing the tunnel to come up. How does the router know to encapsulate the packet with the routable public IP addressing? Is there a derived configuration that can be displayed in the running config once the spoke initiates the connection and the virtual-template interface is built? Thank you!
Hi. The hub public IP is specified in the ISAKMP profile on the spoke.
Your show crypto isakmp sa would show you this too.