Saturday, February 22, 2020

Introduction to DMVPN

DMVPN (Dynamic Multipoint VPN) is a routing technique we can use to build a VPN network with multiple sites without having to statically configure all devices. It’s a “hub and spoke” network where the spokes will be able to communicate with each other directly without having to go through the hub. Encryption is supported through IPsec which makes DMVPN a popular choice for connecting different sites using regular Internet connections. It’s a great backup or alternative to private networks like MPLS VPN.
There are four pieces to the DMVPN puzzle:
  • Multipoint GRE (mGRE)
  • NHRP (Next Hop Resolution Protocol)
  • Routing (RIP, EIGRP, OSPF, BGP, etc.)
  • IPsec (not required but recommended)
Let me explain these different topics…

Multipoint GRE

Our “regular” GRE tunnels are point-to-point and don’t scale well. For example, let’s say we have a company network with some sites that we want to connect to each other using regular Internet connections:
HQ Branch Routers Internet
Above we have one router that represents the HQ and there are four branch offices. Let’s say that we have the following requirements:
  • Each branch office has to be connected to the HQ.
  • Traffic between Branch 1 and Branch 2 has to be tunneled directly.
  • Traffic between Branch 3 and Branch 4 has to be tunneled directly.
To accomplish this we will have to configure a  bunch of GRE tunnels which will look like this:
HQ Branch Routers Internet GRE Tunnels
Thing will get messy quickly…we have to create multiple tunnel interfaces, set the source/destination IP addresses etc. It will work but it’s not a very scalable solution. Multipoint GRE, as the name implies allows us to have multiple destinations. When we use them, our picture could look like this:
HQ Branch Routers Internet GRE Multipoint Tunnel
When we use GRE Multipoint, there will be only one tunnel interface on each router. The HQ for example has one tunnel with each branch office as its destination. Now you might be wondering, what about the requirement where branch office 1/2 and branch office 3/4 have a direct tunnel?
Right now we have a hub and spoke topology. The cool thing about DMVPN is that we use multipoint GRE so we can have multiple destinations. When we need to tunnel something between branch office 1/2 or 3/4, we automatically “build” new tunnels:
HQ Branch Routers Internet GRE Multipoint Tunnel Dynamic
When there is traffic between the branch offices, we can tunnel it directly instead of sending it through the HQ router. This sounds pretty cool but it introduces some problems…
When we configure point-to-point GRE tunnels we have to configure a source and destination IP address that are used to build the GRE tunnel. When two branch routers want to tunnel some traffic, how do they know what IP addresses to use? Let me show you what I’m talking about:
HQ Branch Routers Internet GRE Multipoint Tunnel Dynamic
Above we have our HQ and two branch routers, branch1 and branch2. Each router is connected to the Internet and has a public IP address:
  • HQ: 1.1.1.1
  • Branch1: 2.2.2.2
  • Branch2: 3.3.3.3
On the GRE multipoint tunnel interface we use a single subnet with the following private IP addresses:
  • HQ: 192.168.1.1
  • Branch1: 192.168.1.2
  • Branch2: 192.168.1.3
Let’s say that we want to send a ping from branch1’s tunnel interface to the tunnel interface of branch2. Here’s what the GRE encapsulated IP packet will look like:
DMVPN GRE Header Unknown Destination IP
The “inner” source and destination IP addresses are known to use, these are the IP address of the tunnel interfaces. We encapsulate this IP packet, put a GRE header in front of it and then we have to fill in the “outer” source and destination IP addresses so that this packet can be routed on the Internet. The branch1 router knows it’s own public IP address but it has no clue what the public IP address of branch2 is…
To fix this problem, we need some help from another protocol…

NHRP (Next Hop Resolution Protocol)

We need something that helps our branch1 router figure out what the  public IP address is of the branch2 router, we do this with a protocol called NHRP (Next Hop Resolution Protocol). Here’s an explanation of how NHRP works:
  • One router will be the NHRP server.
  • All other routers will be NHRP clients.
  • NHRP clients register themselves with the NHRP server and report their public IP address.
  • The NHRP server keeps track of all public IP addresses in its  cache.
  • When one router wants to tunnel something to another router, it will request the NHRP server for the public IP address of the other router.
Since NHRP uses this server and clients model, it makes sense to use a hub and spoke topology for multipoint GRE. Our hub router will be the NHRP server and all other routers will be the spokes.
Here’s an an illustration of how NHRP works with multipoint GRE:
DMVPN NHRP Spoke Registration Request
Above we have two spoke routers (NHRP clients) which establish a tunnel to the hub router. Later once we look at the configurations you will see that the destination IP address of the hub router will be statically configured on the spoke routers. The hub router will dynamically accept spoke routers. The routers will use a NHRP registration request message to register their public IP addresses to the hub.
DMVPN Hub Builds Cache
The hub, our NHRP server will create a mapping between the public IP addresses and the IP addresses of the tunnel interfaces.
DMVPN NHRP Initiation Request from spoke1 to the hub router.
A few seconds later, spoke1 decides that it wants to send something to spoke2. It needs to figure out the destination public IP address of spoke2 so it will send a NHRP resolution request, asking the Hub router what the public IP address of spoke 2 is.
DMVPN NHRP Resolution Reply
The Hub router checks its cache, finds an entry for spoke 2 and sends the NHRP resolution reply to spoke1 with the public IP address of spoke2.
DMVPN Spoke1 to Spoke2 packet
Spoke1 now knows the destination public IP address of spoke2 and is able to tunnel something directly. This is great, we only required the hub to figure out what the public IP address is and all traffic can be sent from spoke to spoke directly.
In NHRP terminology , you’ll see that we don’t talk about “public IP addresses” but NBMA addresses. NHRP is an old protocol (the RFC is from 1998) which was originally developed for NBMA networks like frame-relay or ATM.
When we talk about DMVPN, we often refer to an underlay and overlay network:
  • The underlay network is the network we use for connectivity between the different routers, for example the Internet.
  • The overlay network is our private network with GRE tunnels.
NHRP is a bit similar to ARP or frame-relay inverse ARP. Instead of mapping L2 to L3 information, we are now mapping a tunnel IP address to a NBMA IP address.
DMVPN has different versions which we call phases, there’s three of them:
  • Phase 1
  • Phase 2
  • Phase 3
Let me give you an overview of the three phases:

Phase 1

With phase 1 we use NHRP so that spokes can register themselves with the hub. The hub is the only router that is using a multipoint GRE interface, all spokes will be using regular point-to-point GRE tunnel interfaces. This means that there will be no direct spoke-to-spoke communication, all traffic has to go through the hub!
Since our traffic has to go through the hub, our routing configuration will be quite simple. Spoke routers only need a summary or default route to the hub to reach other spoke routers.

Phase 2

The disadvantage of phase 1 is that there is no direct spoke to spoke tunnels. In phase 2, all spoke routers use multipoint GRE tunnels so we do have direct spoke to spoke tunneling. When a spoke router wants to reach another spoke, it will send an NHRP resolution request to the hub to find the NBMA IP address of the other spoke.
There are two requirements to make spoke to spoke tunnels work:
  • Spoke routers need to have a route for the network that they are trying to reach.
  • The next hop IP address of the route has to be the remote spoke.
We are using a hub and spoke topology so only the hub will exchange routing information with the spokes. Depending on the routing protocol, it’s possible that the hub changes the next hop IP address of routes that it advertises to the spokes. When it does then a spoke will use the hub as the destination when it’s trying to reach a remote spoke. I’ll show you how to deal with this when we look at the configuration.
Summarization on the hub is not possible since the spoke routers require specific routes.

Phase 3

The final phase of DMVPN changes the way NHRP operates. The spoke routers no longer need specific routes to reach remote spokes and it doesn’t matter what the next hop IP address is. When a spoke router wants to reach a remote spoke, they will forward their traffic to the hub. When the hub receives the traffic, it will realize that another spoke is the destination and it will then send a NHRP redirect to both spokes.
When the spokes receive the NHRP redirect, they will both send a NHRP resolution to figure out each other’s NBMA IP addresses. The spoke routers will then install a new entry in the routing table so that they can reach each other directly.

IPSec

What about IPsec? It’s not required but since you probably use DMVPN on the Internet, it’s a good idea to encrypt your tunnels. Once you understand multipoint GRE, NHRP and the different DMVPN phases then you will see that IPsec is very simple to implement. I’ll show you how to do this in the DMVPN IPsec configuration lesson.

Conclusion

Understanding the “basics” of DMVPN shouldn’t be too hard but this is what makes it complex:
  • You need to understand the three phases and their differences.
  • The impact of running different routing protocols using the three phases.
For example, we can try OSPF using its broadcast, non-broadcast, point-to-point, point-to-multipoint and point-to-multipoint non-broadcast network types on DMVPN phase 1,2 and 3. That’s a lot of different variations…we also have RIP, EIGRP, iBGP and eBGP.
To help you understand DMVPN, I will show how to configure phase 1, 2 and 3 and how to configure any of the routing protocols and their different options.You can find this in the following lessons:
Basic configurations:
DMVPN and routing protocols:
DMVPN and security:
I hope you enjoyed this lesson, if you have any questions feel free to leave a comment!

No comments:

Post a Comment