锐捷NHRP解析MGRE+NHRP

锐捷NHRP解析MGRE+NHRP
HappyLadySauceNHRP下一跳地址解析协议
NHRP由IETF在RFC 2332 中定义。用于解决非广播多路访问网络上的源节点(主机或者路由器)获取到达目标节点的“下一跳”的互联网络层地址和NBMA子网地址。
NHRP协议是一个典型的客户端/服务器协议,分为NHS(NHRP服务器)和NHC(NHC客户端),每个子网至少有一个NHS,一个NHS可以为多个子网服务。
NHRP工作原理
NHRP类似ARP,ARP是IP地址到MAC地址的解析。NHRP是内部VPN的地址到NBMA地址(外部地址)的解析。
NHS用于维护每个分支NHC公网地址的NHRP数据库。分支NHC通过NHRP协议向中心路由器NHS注册自己的外网端口IP地址,允许分支采用动态IP地址。当它要和其他分支直接建立隧道时,它向NHS的NHRP数据库里进行解析查询,用于确定其他分支的真实地址,并冗余到自己的NHRP数据库中。这样一个分支就可以动态的加入到组网中,解决了动态IP建立VPN隧道问题,并且可以通过解析到的地址直接与分支间传输数据,而不用再经过NHS传输,组成网状拓扑模型。
注册流程
NHC需要配置静态的cache缓存,用于缓存当前组网中的NHS的IP地址和NBMA地址映射关系,根据NHS产生Registration(注册) Request报文发向NHS,NHS在收到该报文后就会产生动态的cache缓存,并且生成Registration Reply发向NHC完成注册。
解析流程
在没有找到对应IP地址的NBMA地址时,NHS和NHC就会发送Resolution(解析) Request报文来进行解析请求协商寻找合适的地址。
配置NHRP
常用的NHRP功能包括以下几个配置:
开启NHRP功能(必须)
配置广播报文发送的地址(必须)
配置静态的IP和NMBA地址关系缓存(NHC必须)
配置NHS(NHC必须)
配置NHRP重定向(可选)
配置NHRP Shortcut功能(可选)
这里的NHRP重定向共和NHRP Shortcut功能基本是绑定在一起的。NHRP重定向功能在NHS上开启,可以让NHS知道NBMA网络中其他NHS的NBMA地址。NHRP Shortcut功能在NHC上开启,可以让NHC去访问其他NHC时不经过NHS直接去找另一个NHC。
所以如果NHS配置了NHRP重定向,则要在NHC上配置NHRP Shortcut,不然NHC还是会经过NHS。
配置MGRE+NHRP
如图一个典型的多点VPN拓扑,使用MGRE VPN,隧道IP和公网IP如图所示。锐捷的gre隧道由Tunnel隧道接口实现,Tunnel隧道是一种虚拟的点到点技术。
1 | R2(config-if-Tunnel 0)#tunnel ? |
要想在Tunnel隧道中实现点对多要开启gre multipoint模式,然后需要配置本端的隧道源(即是公网IP),而对端的公网IP地址因为不知道对端到底有多少个,所以交给NHRP去解析。NHRP通过NHC到NHS注册建立起IP地址NBMA地址关系数据库。
当R2想通过隧道连通R3时,R2会先发送报文去R1(NHS),然后R1通过查看IP地址NBMA地址关系数据库把报文转发给R3。当然这是默认情况
如果配置了NHRP重定向和NHRP Shortcut功能。这时因为R2会收到R1发送的IP地址NBMA地址关系数据库报文,R2本地中有IP地址NBMA地址关系数据库,且配置了NHRP Shortcut功能
R2会直接发送报文给R3。到达走”捷径”的效果。
下面是每个设备的配置
1 | R1: |
1 | R2: |
1 | R3: |
当然了,每个设备都需要配置静态路由让他们的公网IP能够互相ping通。但是静态路由中没有隧道IP的路由,隧道IP也能互相ping通。因为:
tunnel隧道出去的时候会封装为源地址的IP(tunnel source 17.1.1.2),而目标IP会封装为IP地址NBMA地址关系数据库中查到的目标公网IP。这时外部网络(Internet)就能够路由这个数据报文。当数据报文到达隧道对端时会解封装,把原来的数据包还原出来。
1 | R2#ping 10.5.1.3 |
当我们把这个隧道搭建好了以后,就可以实现跨地域的局域网建立。通过tunnel隧道把R1中的业务报文路由到R2的tunnel隧道再进行解封装,就可以实现R1和R2的业务互通,且在公网上有一层封装的IP头作为安全保障。