基本原理
DSVPN实现分支间动态建立VPN的应用场景有两种:应用在中小型网络中的非shortcut场景和应用在大型网络中的shortcut场景。
非shortcut场景:部署分支间相互学习路由
非shortcut场景是指在中小型网络中,由于分支机构较少,采用分支间相互学习路由方案,使源分支到目的分支子网的路由下一跳为目的分支的Tunnel地址的一种网络场景。中小型网络采用这种部署方案,分支间的动态路由学习规模较小,对于Hub和Spoke设备的性能要求较低。
shortcut场景:部署分支只保存到总部的汇聚路由
在分支机构数目较多的大型网络中,应用非shortcut场景时分支Spoke需要保存整个网络的路由数据,同时还需要大量CPU和内存资源来计算动态路由协议,会对分支Spoke的路由表容量和性能有较高的要求。针对这种缺点,可以选择DSVPN增强功能,部署分支只保存到总部的汇聚路由方案,使源分支到目的分支子网的路由下一跳为总部的Tunnel地址,即shortcut场景。
非shortcut场景DSVPN工作原理
路由部署
分支间配置静态路由
在源分支配置静态路由,路由的目的地址为目的分支子网网段,路由的下一跳设置为目的分支的Tunnel地址。
分支间动态学习路由
DSVPN支持OSPF和BGP路由协议,实现分支与分支、分支与总部的子网路由学习。在总部Hub和分支Spoke进行相应的配置,可以实现分支间的路由通过动态路由协议相互学习。
分支间相互学习路由,每个分支Spoke保存有到所有分支子网的路由信息。
DSVPN工作原理
DSVPN使用NHRP下一跳解析协议来获取对端的动态公网地址。在非shortcut场景中,DSVPN实现流程如下:
- 管理员在本地静态指定总部Hub的公网地址或隧道地址。网络中的所有Spoke向总部Hub发起注册请求。
- 总部Hub根据接收的注册请求报文,生成分支的NHRP peer表,并向Spoke发送注册请求应答报文。
- 分支间通过静态配置或动态路由协议相互学习分支子网路由,路由的下一跳直接为对端Spoke的Tunnel地址。
- 源Spoke转发数据报文时,获取报文下一跳(目的Spoke的Tunnel地址)对应的公网地址。
- 如果目的Spoke的Tunnel地址对应的公网地址不存在,则触发源Spoke发送NHRP解析请求。
- 源Spoke构建NHRP解析请求报文,请求目的Spoke的Tunnel地址对应的公网地址。
- NHRP解析请求报文到达总部Hub之后,总部将报文发往目的Spoke。
- 目的Spoke接收NHRP解析请求,向源Spoke发送NHRP解析请求应答报文。
- 源Spoke后续和目的Spoke可以进行直接通信,不用经过总部Hub。
shortcut场景DSVPN工作原理
路由部署
分支间配置静态路由
在源分支配置静态路由,使得到目的分支子网网段的路由下一跳为总部Hub的Tunnel地址。
分支动态学习到总部的路由
DSVPN支持OSPF和BGP路由协议。总部配置路由聚合,分支通过配置动态路由协议,只保存到总部的汇聚路由,所有访问目的分支的流量全部指向总部Hub。在使用不同的路由协议时,需要在总部Hub和分支Spoke分别进行相应的配置。
使用分支只保存到总部的汇聚路由方案,分支的默认流量出口对应总部Hub。分支间不相互学习路由,总部对分支路由汇聚后进行通告;NHRP地址解析请求经总部转发至目的分支,由目的分支进行解析和响应。
DSVPN工作原理
DSVPN使用NHRP下一跳解析协议来动态获取对端的公网地址。在shortcut场景中,DSVPN实现流程如下:
- 管理员在本地静态指定总部Hub的公网地址或隧道地址。网络中的所有Spoke向总部Hub发起注册请求。
- 总部Hub根据接收的注册请求报文,生成分支的NHRP peer表,并向Spoke发送注册请求应答报文。
- 分支Spoke间通过静态配置或动态路由协议学习路由,分支Spoke只保存到总部的汇聚路由。
- 源Spoke转发数据报文时,查询报文下一跳对应的公网地址,将数据报文进行封装后,发往下一跳(这里的下一跳就是总部Hub)。
- 数据报文到达总部Hub之后,总部将报文发往目的Spoke,同时触发NHRP redirect报文,发往源Spoke。
- 源Spoke接收NHRP redirect报文,向目的Spoke发送NHRP解析请求。
- NHRP解析请求报文到达总部Hub之后,总部报文发往目的Spoke。
- 目的Spoke接收NHRP解析请求,向源Spoke发送NHRP解析请求应答报文。
- 源Spoke后续和目的Spoke可以进行直接通信,不用经过总部Hub。