DSVPN协议
一、DSVPN(动态智能VPN)协议简介
1.1 DSVPN协议特点
DSVPN(Dynamic Smart Virtual Private Network,动态智能VPN),是指在Hub-Spoke网络模型中,分支与总部、分支与分支间动态建立VPN的一种技术。
二、DSVPN(动态智能VPN)协议机制
2.1 DSVPN术语
2.1.1 MGRE
点到多点的GRE隧道,它是对传统的点到点GRE隧道的一种扩展。为了简化GRE隧道的P2P建立,满足Hub-Spoke的简化配置需求,以及动态的适应公网地址的动态性所提出的技术。
2.1.2 NHRP
NHRP全称下一条解析协议,自动学习隧道地址和物理地址(公网地址)的对应关系
解决了MGRE总部与使用动态IP的分支建立隧道、分支与分支建立隧道的问题
2.1.3 隧道分类
Hub-Spoke隧道(静态隧道)
通过Spoke向Hub端进行注册,建立在Hub与Spoke之间,无论是否有流量经过,该隧道一直存在。
Spoke-Spoke隧道(动态隧道)
建立在spoke与spoke之间,当spoke与spoke之间有流量经过时,通过nhrp表象来建立动态隧道,当一定周期没有流量经过时,隧道将自动拆除。
2.2 DSVPN工作原理
# Hub端 interface Tunnel0/0/0 ip address 10.1.123.1 255.255.255.0 tunnel-protocol gre p2mp source 1.1.1.1 ospf network-type broadcast nhrp entry multicast dynamic nhrp network-id 123 # Spoke端 interface Tunnel0/0/0 ip address 10.1.123.2 255.255.255.0 tunnel-protocol gre p2mp source GigabitEthernet0/0/2 ospf network-type broadcast ospf dr-priority 0 nhrp network-id 123 nhrp entry 10.1.123.1 1.1.1.1 register # interface Tunnel0/0/0 ip address 10.1.123.3 255.255.255.0 tunnel-protocol gre p2mp source GigabitEthernet0/0/0 ospf network-type broadcast ospf dr-priority 0 nhrp network-id 123 nhrp entry 10.1.123.1 1.1.1.1 registe # 只宣告业务网段和隧道接口地址即可 ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 10.1.123.0 0.0.0.255 network 192.168.1.0 0.0.0.255
图中蓝色的静态建立的隧道(但对于HUB来说是动态的,因为SPOKE的地址非固定的),黄色的后续流量激发后会动态建立的隧道
Spoke与Hub建立静态表项之后,会发送主动注册消息到Hub,建立静态隧道
Hub然后发送注册应答消息回应,形成nhrp动态表象(之后Spoke会定时发送主动注册消息来保持与总部的隧道关系)
之后动态隧道的建立
2.3 动态隧道的建立
2.3.1 非shortcut场景
[!NOTE]
底层IGP是OSPF Brocast
分支间通过静态配置或动态路由协议相互学习分支子网路由,路由的下一跳直接为对端Spoke的Tunnel地址。
Icmp echo-request | sip 192.168.2.1 dip 192.168.3.1 | GRE | sip 1.1.1.1 dip 1.1.1.2
然后根据下一跳查找自己的NHRP映射表,发现里面没有NextHop 10.1.123.3表项,A会默认将该报文直接发给Hub,同时出发NHRP地址解析请求
请求动作的是逐步的,因为现在只有10.1.123.3的NHRP地址
源Spoke后续和目的Spoke可以进行直接通信,不用经过总部Hub。
2.3.2 shortcut场景
[!NOTE]
底层IGP是OSPF P2mp,在正常模式的配置下增加Nhrp redirect
- 分支Spoke间通过静态配置或动态路由协议学习路由,分支Spoke只保存到总部的路由,下一跳就是总部Hub
Icmp echo-request | sip 192.168.2.1 dip 192.168.3.1 | GRE | sip 1.1.1.1 dip 1.1.1.2
HUB发现检查发现接受和发送的数据的隧道接口属于同一个nhrp域,发送重定向请求报文
逐跳请求10.1.123.3的地址,后续通过动态隧道进行转发,不再经过HUB转发