- GRE支持将一种协议的报文封装在另一种协议报文中
- GRE可以解决异种网络的传输问题
GRE隧道扩展了受跳数限制的路由协议的工作范围,支持企业灵活设计网络拓扑
首先通过GRE对报文进行封装,然后再由IPSec对封装后的报文进行加密和传输
GRE封装报文时,封装前的报文称为净荷,封装前的报文协议称为乘客协议,然后GRE会
封装GRE头部,GRE成为封装协议,也叫运载协议,最后负责对封装后的报文进行转发的
协议称为传输协议。
设备从连接私网的接口接收到报文后,检查报文头中的目的IP地址字段,在路由表查找出
接口,如果发现出接口是隧道接口,则将报文发送给隧道模块进行处理。
隧道模块接收到报文后首先根据乘客协议的类型和当前GRE隧道配置的校验和参数,对报
文进行GRE封装,即添加GRE报文头。
然后,设备给报文添加传输协议报文头,即IP报文头。该IP报文头的源地址就是隧道源地
址,目的地址就是隧道目的地址。
最后,设备根据新添加的IP报文头目的地址,在路由表中查找相应的出接口,并发送报文。
之后,封装后的报文将在公网中传输。
接收端设备从连接公网的接口收到报文后,首先分析IP报文头,如果发现协议类型字段的
值为47,表示协议为GRE,于是出接口将报文交给GRE模块处理。GRE模块去掉IP报文头
和GRE报文头,并根据GRE报文头的协议类型字段,发现此报文的乘客协议为私网中运行
的协议,于是将报文交给该协议处理。
隧道两端设备通过关键字字段(Key)来验证对端是否合法
Keepalive检测功能用于检测隧道对端是否可达
Keepalive检测功能用于在任意时刻检测隧道链路是否处于Keepalive状态,即检测隧道对
端是否可达。如果对端不可达,隧道连接就会及时关闭,避免形成数据空洞。使能
Keepalive检测功能后,GRE隧道本端会定期向对端发送Keepalive探测报文。若对端可达,
则本端会收到对端的回应报文;若对端不可达,则收不到对端的回应报文。如果在隧道一
端配置了Keepalive功能,无论对端是否配置Keepalive,配置的Keepalive功能在该端都生
效。隧道对端收到Keepalive探测报文,无论是否配置Keepalive,都会给源端发送一个回
应报文。
使能Keepalive检测功能后,GRE隧道的源端会创建一个计数器,并周期性地发送
Keepalive探测报文,同时进行不可达计数。每发送一个探测报文,不可达计数加1。
如果源端在计数器值达到预先设置的值之前收到回应报文,则表明对端可达。如果计数器
值达到预先设置的重试次数,源端还是没有收到回应报文,则认为对端不可达。此时,源
端将关闭隧道连接。
[r1]interface Tunnel 0/0/0 ----创建隧道接口
[r1-Tunnel0/0/0]ip address 192.168.3.1 24 ---该IP地址必须为私网IP
[r1-Tunnel0/0/0]tunnel-protocol gre ----定义封装方式
[r1-Tunnel0/0/0]source 12.0.0.1 ----定义封装内容,该IP必须为真实的公网出口IP
[r1-Tunnel0/0/0]destination 23.0.0.3
配置完成后,需要在本地补上通往目的私网网段的路由信息。
[r1-Tunnel0/0/0]keepalive period 2 retry-times 5
设置发送周期为2S;设置重传次数为5次
hub-spoke架构----中心到节点架构;NHS----下一跳服务器
中心节点的IP地址必须固定。
1. 地址解析:NHRP 用于解决动态点对点连接中的地址解析问题。当一个网络设备需要与远程设备建立连接时,它可以向 NHRP 服务器查询远程设备的 IP 地址,从而确定下一跳路由器的位置。
点对点连接:NHRP 主要用于建立点对点连接,其中两个网络设备需要直接通信,而不经过中间路由器。这在虚拟专用网络(VPN)中非常有用,因为它允许不同地理位置的设备直接连接到VPN,而不需要流量经过 VPN 集线器。
动态路由:NHRP 可以与动态路由协议(如 EIGRP、OSPF)结合使用,以实现动态路由信息的更新。这意味着当网络拓扑发生变化时,NHRP 可以帮助网络设备动态地更新路由信息,以确保数据包能够有效传递。
效率:NHRP 旨在提高网络效率,尤其是在需要点对点连接的情况下。它可以减少数据包的冗余路由,直接将它们传送到目的地,减少了网络拥塞和传输延迟。
安全性:NHRP 也可以提供一定程度的安全性,通过身份验证和授权来限制谁可以查询 NHRP 服务器以获取地址解析信息。这有助于保护网络免受未经授权的访问。
# Hub节点配置
[r1]interface Tunnel 0/0/0
[r1-Tunnel0/0/0]ip address 192.168.5.1 24
[r1-Tunnel0/0/0]tunnel-protocol gre p2mp ----修改接口封装协议为GRE,且为点到多点模式
[r1-Tunnel0/0/0]source 15.0.0.1
Spoke节点配置
[r2]interface Tunnel 0/0/0
[r2-Tunnel0/0/0]ip address 192.168.5.2 24
[r2-Tunnel0/0/0]tunnel-protocol gre p2mp
[r2-Tunnel0/0/0]source GigabitEthernet 0/0/0
[r2-Tunnel0/0/0]nhrp entry 192.168.5.1 15.0.0.1 register
hub的虚拟接口IP hub的物理接口IP 注册
[r1]display nhrp peer all ----查看nhrp映射表
传统的MGRE技术存在的问题。-----分部之间无法直接通讯(源分支无法获取目的分支的公网地址,也
就无法建立VPN隧道),导致所有的分支之间的通讯数据只能通过总部HUB设备进行中转
NHRP映射表
- 静态表项
由网络管理员手工配置
spoke与hub建立静态的mgre隧道- 动态表项
是由NHRP协议动态生成
hub节点被动获取到spoke节点发送来的注册信息。
各个spoke节点通过NHRP协议获取到对端的spoke节点的映射关系。
7200S
NHRP映射表的建立过程
建立spoke到hub之间的mgre隧道
- spoke向hub注册请求
- hub向spoke注册应答
- 分支间路由学习
DSVPN支持两种分支间路由学习方式:
分支间互相学习路由----非shortcut方式(每个分支需要学习到所有对端的路由数据,且下一跳为分支本身)
分支路由汇聚到总部----shortcut方式(下一跳为hub设备)
中心:
[r1-Tunnel0/0/0]nhrp redirect ----开启重定向功能。默认情况为未启动
分支:
[r4-Tunnel0/0/0]nhrp shortcut ----使能shortcut功能
分支没有获取到中心的路由信息
因为RIP是以组播的方式在发送报文,而MGRE环境下是点到点通讯,不支持组播行为。
解决思路:开启伪广播功能。
[r1-Tunnel0/0/0]nhrp entry multicast dynamic ----在中心节点配置
分支之间无法获取对方路由信息
主要因为华为设备默认开启水平分割机制,导致中心无法从接口将分支的路由发送出去。
[r1-Tunnel0/0/0]undo rip split-horizon ----关闭水平分割机制