让学习变简单,使工作更出色 让学习变简单,使工作更出色 让学习变简单,使工作更出色 让学习变简单,使工作更出色 让学习变简单,使工作更出色

0351-701-8008

首页 > 行业资讯 > 正文

关于GRE,这篇就够了!!!

时间:2021-12-16 访问:276

定义:

通用路由封装协议GRE(Generic Routing Encapsulation)可以对某些网络层协议(如IPX、ATM、IPv6、AppleTalk等)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IPv4)中传输。

GRE提供了将一种协议的报文封装在另一种协议报文中的机制,是一种三层隧道封装技术,使报文可以通过GRE隧道透明的传输,解决异种网络的传输问题。


优点:

l  GRE实现机制简单,对隧道两端的设备负担小。

l  GRE隧道可以通过IPv4网络连通多种网络协议的本地网络,有效利用了原有的网络架构,降低成本。

l  GRE隧道扩展了跳数受限网络协议的工作范围,支持企业灵活设计网络拓扑。

l  GRE隧道可以封装组播数据,和IPSec结合使用时可以保证语音、视频等组播业务的安全。

l  GRE隧道支持使能MPLS LDP,使用GRE隧道承载MPLS LDP报文,建立LDPLSP,实现MPLS骨干网的互通。

l  GRE隧道将不连续的子网连接起来,用于组建VPN,实现企业总部和分支间安全的连接。


报文格式:

GRE封装后的报文格式如图2所示。

·  乘客协议(Passenger Protocol):封装前的报文称为净荷,封装前的报文协议称为乘客协议。

·  封装协议(EncapsulationProtocol):GRE Header是由封装协议完成并填充的,封装协议也称为运载协议(Carrier Protocol)。

·  传输协议(Transport Protocol或者Delivery Protocol):负责对封装后的报文进行转发的协议称为传输协议。


图2 GRE报文结构

GRE头的各字段解释如表1所示。



表1 GRE各字段解释

GRE头字段

字段解释

C

校验和验证位。

n  该位置1,表示GRE头插入了校验和(Checksum)字段。

n  该位置0,表示GRE头不包含校验和字段。

K

关键字位。

n  该位置1,表示GRE头插入了关键字(Key)字段。

n  该位置0,表示GRE头不包含关键字字段。

Recursion

表示GRE报文被封装的层数。完成一次GRE封装后将该字段加1。如果封装层数大于3,则丢弃该报文。该字段的作用是防止报文被无限次的封装。

Flags

预留字段。当前必须置为0。

Version

版本字段。必须置为0。

Protocol Type

标识乘客协议的协议类型。常见的乘客协议为IPv4协议,协议代码为0800。

Ethernet over GRE协议的协议代码为0x6558。

Checksum

对GRE头及其负载的校验和字段。

Key

关键字字段,隧道接收端用于对收到的报文进行验证。


GRE的安全机制

GRE本身提供两种基本的安全机制:

(1)  校验和验证

(2)  识别关键字


校验和验证:

校验和验证是指对封装的报文进行端到端校验。

若GRE报文头中的C位标识位置1,则校验和有效。发送方将根据GRE头及Payload信息计算校验和,并将包含校验和的报文发送给对端。接收方对接收到的报文计算校验和,并与报文中的校验和比较,如果一致则对报文进一步处理,否则丢弃。

隧道两端可以根据实际应用的需要决定配置校验和或禁止校验和。如果本端配置了校验和而对端没有配置,则本端将不会对接收到的报文进行校验和检查,但对发送的报文计算校验和;相反,如果本端没有配置校验和而对端已配置,则本端将对从对端发来的报文进行校验和检查,但对发送的报文不计算校验和。


识别关键字:

识别关键字(Key)验证是指对Tunnel接口进行校验。通过这种弱安全机制,可以防止错误识别、接收其它地方来的报文。

若GRE报文头中的K位为1,则在GRE头中插入一个四字节长关键字字段,收发双方将进行识别关键字的验证。

关键字的作用是标志隧道中的流量,属于同一流量的报文使用相同的关键字。在报文解封装时,GRE将基于关键字来识别属于相同流量的数据报文。只有Tunnel两端设置的识别关键字完全一致时才能通过验证,否则将报文丢弃。这里的“完全一致”是指两端都不设置识别关键字,或者两端都设置相同的关键字。


GRE的Keepalive检测

由于GRE协议并不具备检测链路状态的功能,如果对端接口不可达,隧道并不能及时关闭该Tunnel连接,这样会造成源端会不断的向对端转发数据,而对端却因隧道不通接收不到报文,由此就会形成数据空洞。

GRE的Keepalive检测功能可以检测隧道状态,即检测隧道对端是否可达。如果对端不可达,隧道连接就会及时关闭,避免因对端不可达而造成的数据丢失,有效防止数据空洞,保证数据传输的可靠性。

 

Keepalive检测功能的实现过程如下:

(1)   当GRE隧道的源端使能Keepalive检测功能后,就创建一个定时器,周期地发送  Keepalive探测报文,同时通过计数器进行不可达计数。每发送一个探测报文,不可达计数加1。

(2)   对端每收到一个探测报文,就给源端发送一个回应报文。

(3)   如果源端的计数器值未达到预先设置的值就收到回应报文,就表明对端可达。如果源端的计数器值到达预先设置的值——重试次数(Retry Times)时,还没收到回送报文,就认为对端不可达。此时,源端将关闭隧道连接。但是源端口仍会继续发送Keepalive报文,若对端Up,则源端口也会Up,建立隧道链接。

上一篇:2022华为ICT人才联盟双选会—山西站成功举办

下一篇:百思为2021冬季大型助学系列活动!错过这次,再等一年!

免费试听课程