本帖最后由 李龙超 于 2023-9-4 16:27 编辑
通用路由封装协议GRE 提供了将一种协议报文封装在另一种协议报文中的机制,是一种三层隧道封装技术;可以对IPv4协议的数据报文进行再封装,使这些被封装的数据报文能够在另一个网络层协议(如IPv4)中传输;报文通过GRE隧道透明的传输,可以解决外网主动访问内网的问题;GRE可以封装组播数据和路由选择协议,结合IP Sec使用,从而保证语音、视频等组播业务的安全。 GRE实现机制简单,对隧道两端的设备负担小;GRE隧道可以有效利用了原有的网络架构,降低成本;GRE隧道扩展了跳数受限网络协议的工作范围,支持企业灵活设计网络拓扑;GRE隧道支持MPLS LDP,使用GRE隧道承载MPLS LDP报文,建立LDP LSP,实现MPLS骨干网的互通;GRE隧道将不连续的子网连接起来,用于组建VPN,实现企业总部和分支间安全的连接。
GRE的工作原理:
GRE是VPN的三层隧道协议,即在协议层之间采用了一种被称之为Tunnel(隧道)的技术。Tunnel是一个虚拟的点对点的连接,在实际中可以看成仅支持点对点连接的虚拟接口,这个接口提供了一条通道使封装的数据报能够在这个通路上传输,并在一个Tunnel的两端分别对数据报进行封装及解封装 。
GRE报头封装:Ethernet2/IPv4(公网地址)/GRE/IPv4(私网地址)/Payload/FCS GRE报文载荷:
1、C--校验和标志位;如配置了checksun则该位置为1,同时校验和(可选)、偏离(可选)部分的共4 bytes出现在GRE头部;如不配置checksun则该位置为0,同时校验和(可选)、偏离(可选)部分不出现在GRE头部。 2、R--路由标志位;如R为1,校验和(可选)、偏离(可选)、路由(可选)部分的共8 bytes出现在GRE头部;如R为0, 校验和(可选)、偏离(可选)、路由(可选)部分不出现在GRE头部。 3、K--密钥标志位;如配置了KEY则该位置为1,密钥(可选)部分出现在GRE头部;如不配置KEY则该位置为0,密钥(可选)部分不出现在GRE头部。 4、S--序列好同步标志位;如配置了sequence-datagrams则该位置为1,同时序列号(可选)部分的共4 bytes出现在GRE头部。如不配置sequence-datagrams则该位置为0,同时序列号(可选)部分不出现在GRE头部。 5、s:严格源路由标志位。所有的路由都符合严格源路由,该位为1。通常为0。 6、递归控制:该位置需为0 7、标志位:未定义,需为0 8、版本:需为0 9、协议类型:常用的协议,例如IP协议为0800
▶报文封装和解封装过程: GRE封装报文时,封装前的报文称为净荷,封装前的报文协议称为乘客协议,然后先封装GRE头部,GRE成为封装协议,也叫运载协议,最后负责对封装后的报文进行转发的协议称为传输协议。 1)路由器从连接私网的接口接收到报文后,检查报文头中的目的IP地址字段,在路由表查找出接口,发现出接口是隧道接口,将报文发送给隧道模块进行处理。 2)隧道模块接收到报文后首先根据乘客协议的类型和当前GRE隧道配置的校验和参数,对报文进行GRE封装,添加GRE报头。 3)路由器给报文添加传输协议报头即IP报头(公网地址);该IP报头的源地址就是隧道源地址,目的地址就是隧道目的地址。 4)路由器根据新添加的IP报头目的地址,在路由表中查找相应的出接口并发送报文,封装后的报文将在公网中传输。 5、接收端路由器从连接公网的接口收到报文后,首先分析IP报文头,如果发现协议类型字段的值为47,表示协议为GRE,于是出接口将报文交给GRE模块处理。GRE模块去掉IP报文头和GRE报文头,并根据GRE报文头的协议类型字段,发现此报文的乘客协议为私网中运行的协议,于是将报文交给该协议处理。
▶Keepalive检测: 1)Keepalive检测功能用于在任意时刻检测隧道链路是否处于Keepalive状态,即检测隧道对端是否可达。如果对端不可达,隧道连接就会及时关闭,避免形成数据空洞;Keepalive检测功能开启后,GRE隧道本端会定期(默认值为5秒,deadtime为15秒)向对端发送Keepalive探测报文;若对端可达,则本端会收到对端的回应报文;若对端不可达,则收不到对端的回应报文。 2)如果在隧道一端配置了Keepalive功能,无论对端是否配置Keepalive,配置的Keepalive功能在该端都生效;隧道对端收到Keepalive探测报文,无论是否配置Keepalive,都会给源端发送一个回应报文。 3)Keepalive检测功能开启后,源端会创建一个计数器并周期性地发送Keepalive探测报文同时进行计数;每发送一个探测报文,不可达计数加1。 4)如果源端在计数器值达到预先设置的值之前收到回应报文,则表明对端可达。如果计数器值达到预先设置的重试次数,源端还是没有收到回应报文,则认为对端不可达。此时,源端将关闭隧道连接。
▶GRE over IPsec 1)GRE本身并不支持加密,因而通过GRE隧道传输的流量是不加密的。将IPSec技术与GRE相结合,可以先建立GRE隧道对报文进行GRE封装,然后再建立IPSec隧道对报文进行加密,以保证报文传输的完整性和私密性。 2)IPSec VPN技术可以创建一条跨越共享公网的隧道,从而实现私网互联;IPSec VPN能够安全传输IP报文,但无法在隧道的两个端点之间运行RIP和OSPF等路由协议;而GRE可以将路由协议信息封装在另一种协议报文(IPv4)中进行传输。3)使用GRE可以克服IGP协议的一些局限性。例如,RIP路由协议是一种距离矢量路由协议,最大跳数为15。如果网络直径超过15,设备将无法通信。这种情况下,可以使用GRE技术在两个网络节点之间搭建隧道,隐藏它们之间的跳数,扩大网络的工作范围。 |