阶段一:Phase 1
1、网络内所有Spoke节点向HUB节点发起注册请求
2、HUB节点根据接收到的注册请求报文,记录Spoke的tunnel接口地址和公网接口地址(DLCI)的映射关系,并向Spoke发送应答确认。
3、注册源的Spoke节点收到HUB节点的注册应答后将HUB节点设置为Active
4、在HUB节点和Spoke节点之间部署动态路由协议
5、在HUB节点和Spoke节点之间部署IPsec,如果是HUB和Spoke之间转发流量,那么一次加密一次解密;如果是Spoke和Spoke之间转发流量,那么两次加密和两次解密。
6、通过部署动态路由协议学习到各自的私网路由,然后通过路由信息转发流量。
●HUB使用mGRE,Spoke使用GRE,Spoke到 Spoke 流量必须经过HUB中转;HUB端的mGRE Tunnel必须是multipoint模式,Spoke端的mGRE Tunnel为P2P
●HUB端可以进行路由汇总(仅限于EIGRP、RIP)
Phase 1中部署OSPF或EIGRP:
●考虑到OSPF网络类型的选择,因为OSPF是依靠网络类型来选择下一跳;P2P和NBMA一般不考虑,因为P2P不能用于HUB-Spoke模型,NBMA虽然可以运行,但是因为没添加一个Spoke,需要在HUB端手动完成neighbor的指定,不具备很好的可扩展性,因此网络类型选择Boradcast或P2MP;Phase1没有对下一跳的要求,因此OSPF网络类型可以是Boradcast(HUB为DR)或者P2MP
●运行EIGRP需要HUB端关闭水平分割,否则Spoke端无法学习到Spoke端路由
阶段二:Phase 2
1、网络中的所有spoke节点向配置HUB节点发起NHRP注册请求
2、HUB根据收到的注册请求报文,记录spoke节点的tunnel接口地址和公网出口IP地址(DLCI)对应关系,并向spoke节点发送应答确认。
3、注册源的spoke节点收到HUB节点的注册应答后将HUB设置为Active
4、通过动态路由协议学习到路由,注册源节点到spoke节点端的路由下一跳是目标端spoke节点的tunnel接口地址;比如spoke1发往spoke2的第一个数据包交给了HUB,同时会触发spoke1的解析请求报文发往spoke2,但是该解析请求报文必须经过HUB中转到spoke2
6、spoke2收到解析请求后会对该请求进行解析应答,并且将spoke1信息添加到自己的NHRP映射表中
7、当spoke1端收到相应的解析应答后,那么spoke1到spoke2的隧道建立成功,后续流量不用HUB中转
●Spoke到Spoke初始流量需要经过HUB,后续流量直接在两个Spoke之间转发
●HUB和Spoke端的GRE tunnel都必须是Multipoint模式(MGRE)
●Spoke到HUB的隧道会周期更新NHRP注册信息,所有spoke会每40分钟时间发送一个NHRP的注册信息去刷新超时计算器;Spoke到spoke的动态隧道不会周期更新NHRP解析请求,超过120分钟后spoke到spoke的动态隧道会被删除
Phase 2中部署OSPF或EIGRP:
●对于网络类型的选择,OSPF是依靠网络类型来选择下一跳,P2P/P2MP/NBMA一般不考虑,因为P2P不能用于HUB-spoke模型,NBMA虽然可以运行,但是因为每添加一个spoke,需要在HUB端手动完成neighbor的指定,不具备很高可扩展性。P2MP虽然可以运行,但是运行后spoke到spoke的流量必须经过HUB,无法到达预期效果,所以只能选择broadcast网络类型;Phase2的下一跳必须是目标spoke端的tunnel的接口地址,因此OSPF的网络类型必须是broadcast
●EIGRP需要在HUB节点关闭水平分割,否则spoke端无法学习到spoke端路由;使用64位EIGRP时,spoke发往spoke的路由进过HUB节点时,下一跳不会改变。
阶段三:Phase3
1、使用NHRP错误指示消息,从hub节点通告到spoke节点,到达某个目标网络有一条更优的路径;首先在hub路由器上配置ip nhrp redirect,以及在spoke路由器上配置ip nhrp shortcut;redirect配置指令让hub节点发送NHRP错误指示消息,而shortcut配置指令让spoke接受来自hub的redirect消息并将优化路由装到路由表里。
2、hub路由器将汇总路由信息发到各spoke节点。
3、当Spoke-R1将流量发往Spoke-R2下面的网段时,第一个包将发到Hub-R1(遵循汇总路由),Hub-R1将这个包丢回DMVPN网络并触发NHRP机制产生流量指示消息发给Spoke-R1,Spoke-R1通过请求包里边的映射信息,将含有自身IP地址与tunnel隧道映射信息的响应消息直接发到Spoke-R2,Spoke-R1由此得到指向目标网络Spoke-R2有一个更优路径的下一跳。
3.Spoke-R1收到这个指示然后将流量直接发往Spoke-R2.
●类似于阶段2,第一个数据包需要经过hub路由器以便各spoke能解析到对应的地址,解析过程完成之后,后续的数据包就绕过hub直接发往spoke节点了。
●阶段3 中OSPF和EIGRP的配置跟阶段1基本一样,只是在hub上多了一条ip nhrp redirect,在spoke上多了一条ip nhrp shortcut。
以上总结:
现在的DMVPN技术已实现层次化结构拓扑设计,主要运用于DMVPN技术的超大范围部署,并且能够实现不同区域的分支间直接建立隧道,使DMVPN技术实现了层次化部署,不同 DMVPN区域的分支必须经过本区域的中心才能建立连接。
▶基于单中心的DMVPN网络拓扑: 对于单中心的DMVPN网络架构来说,所有的分支都在一个DMVPN网络内,在分支上只需要建立一个永久隧道和一个临时隧道接口,分支路由器可通过静态设置与中心通信,配置相对简单。 ▶基于双中心的DMVPN网络拓扑: 双中心的DMVPN网络架构内有两个中心,其中以一个中心为主,另一个中心为辅,构成一个区域的DMVPN技术的网络。在每个分支上建立两个隧道接口,与一个中心建立永久的IPSec隧道,也同时和另一个中心建立临时的IPSec隧道;当分支访问中心内部网络时,可以利用两个中心实现网络带宽的负载均衡,分支通过动态路由协议选择与中心进行通信;当其中一个中心出现问题的时候,另外一个中心能够接管所有流量,实现 DMVPN 的高可用性。
DMVPN排错步骤:
1、如果DMVPN出现故障,先解除IPsec配置(先不调用IPsec看看是否正常)
2、如果去掉IPsec发现运转正常,那就去检查IPsec
3、如果去掉IPsec发现问题还在,那么检查NHRP是否注册上HUB
4、如果NHRP注册正常,那么检查路由协议的邻居状态
5、如果确认IPsec、GRE、NHR、路由协议都没有问题,那么找思科技术支持