通用路由封装(GRE: Generic Routing Encapsulation)是通用路由封装协定,可以对某些网路层协定的数据报进行封装,使这些被封装的数据报能够在IPv4网路中传输。
基本介绍
- 中文名:通用路由封装
- 外文名: Generic Routing Encapsulation
- 作用 :网路层协定封装一个其它网路协定
- 类型:网路协定
- 隶属:通信协定,路由协定
基本信息
通用路由封装 (GRE)定义了在任意一种网路层协定上封装任意一个其它网路层协定的协定。
在大多数常规情况下,系统拥有一个有效载荷(或负载)包,需要将它封装并传送至某个目的地。首先将有效载荷封装在一个GRE 包中,然后将此GRE 包封装在其它某协定中并进行转发。此外发协定即为传送协定。当IPv4 被作为GRE 有效载荷传输时,协定类型栏位必须被设定为0x800。当一个隧道终点拆封此含有 IPv4 包作为有效载荷的GRE 包时,IPv4 包头中的目的地址必须用来转发包,并且需要减少有效载荷包的TTL。值得注意的是,在转发这样一个包时,如果有效载荷包的目的地址就是包的封装器(也就是隧道另一端),就会出现迴路现象。在此情形下,必须丢弃该包。当 GRE 包被封装在IPv4 中时,需要使用IPv4 协定47。
GRE 下的网路安全与常规的IPv4 网路安全是较为相似的,GRE 下的路由採用IPv4 原本使用的路由,但路由过滤保持不变。包过滤要求防火墙检查 GRE 包,或者在GRE 隧道终点完成过滤过程。在那些这被看作是安全问题的环境下,可以在防火墙上终止隧道。
GRE(Generic Routing Encapsulation,通用路由封装)协定是对某些网路层协定(如IP 和IPX)的数据报文进行封装,使这些被封装的数据报文能够在另一个网路层协定(如IP)中传输。GRE採用了Tunnel(隧道)技术,是VPN(Virtual Private Network)的第三层隧道协定。
Tunnel 是一个虚拟的点对点的连线,提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个Tunnel 的两端分别对数据报进行封装及解封装。 一个X协定的报文要想穿越IP网路在Tunnel中传输,必须要经过加封装与解封装两个过程。
报文格式
GRE 封装后的报文格式为:
Delivery Header | GRE Header | Payload packet |
- Delivery Header:封装的外部协定报文头(如IP报文头),即隧道所处网路的协定数据头,是实现一种协定报文穿越另一种协定网路的传输工具。
- GRE Header:对数据报文进行封装后加入的数据,包含GRE协定本身以及和负载协定有关的一些信息。
- Payload Packet:进入隧道之前的网路层数据报文,将作为隧道报文的有效负载,该报文的协定号将作为GRE头部栏位中的ProtocolType栏位。GRE头部信息具有如图所示的结构。
一个最简单的GRE头部只有4个位元组,即在C、K、S等标誌们都为0的情况下,GRE头部仅包含第0到31位的信息。前4个bit位都为标誌位,分别表示了头部后来的栏位是否有效;ProtocolType栏位标识PayloadPacket的协定类型,一般情况下,该协定栏位与乙太网帧的类型栏位值相同。
需要封装和传输的数据报文,称之为净荷(Payload),净荷的协定类型为乘客协定(Passenger Protocol)。系统收到一个净荷后,首先使用封装协定(Encapsulation Protocol)对这个净荷进行GRE 封装,即把乘客协定报文进行了“包装”,加上了一个GRE 头部成为GRE 报文;然后再把封装好的原始报文和GRE 头部封装在IP 报文中,这样就可完全由IP 层负责此报文的前向转发(Forwarding)。通常把这个负责前向转发的IP 协定称为传输协定(Delivery Protocol 或者Transport Protocol)。根据传输协定的不同,可以分为GRE over IPv4 和GRE over IPv6 两种隧道模式。
封装过程
1、 Router A 连线Group 1 的接口收到X 协定报文后,首先交由X 协定处理
2、X 协定检查报文头中的目的地址域来确定如何路由此包
3、 若报文的目的地址要经过Tunnel 才能到达,则设备将此报文发给相应的Tunnel 接口
4、 Tunnel 口收到此报文后进行GRE 封装,在封装IP 报文头后,设备根据此IP 包的目的地址及路由表对报文进行转发,从相应的网路接口传送出去。
解封装过程
解封装过程和加封装的过程相反。
1、 RouterB 从Tunnel 接口收到IP 报文,检查目的地址
2、 如果发现目的地是本路由器,则RouterB 剥掉此报文的IP 报头,交给GRE 协定处理(进行检验密钥、检查校验和及报文的序列号等)
3、 GRE 协定完成相应的处理后,剥掉GRE 报头,再交由X 协定对此数据报进行后续的转发处理。
说明:GRE 收发双方的加封装、解封装处理,以及由于封装造成的数据量增加,会导致使用GRE 后设备的数据转发效率有一定程度的下降。