GRE的简介和基本原理

GRE简介

定义

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

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

受益

GRE实现机制简单,对隧道两端的设备负担小。GRE隧道可以通过IPv4网络连通多种网络协议的本地网络,有效利用了原有的网络架构,降低成本。GRE隧道扩展了跳数受限网络协议的工作范围,支持企业灵活设计网络拓扑。GRE隧道将不连续的子网连接起来,用于组建VPN,实现企业总部和分支间安全的连接。

基本原理

实现过程

报文在GRE隧道中传输包括封装和解封装两个过程。如图1所示,如果X协议报文从Ingress PE向Egress PE传输,则封装在Ingress PE上完成,而解封装在Egress PE上进行。封装后的数据报文在网络中传输的路径,称为GRE隧道。

1 通过GRE隧道实现X协议互通组网图

通过GRE隧道实现X协议互通组网图

封装Ingress PE从连接X协议的接口接收到X协议报文后,首先交由X协议处理。X协议根据报文头中的目的地址在路由表或转发表中查找出接口,确定如何转发此报文。如果发现出接口是GRE Tunnel接口,则对报文进行GRE封装,即添加GRE头。根据骨干网传输协议为IP,给报文加上IP头。IP头的源地址就是隧道源地址,目的地址就是隧道目的地址。根据该IP头的目的地址(即隧道目的地址),在骨干网路由表中查找相应的出接口并发送报文。之后,封装后的报文将在该骨干网中传输。解封装

解封装过程和封装过程相反。

Egress PE从GRE Tunnel接口收到该报文,分析IP头发现报文的目的地址为本设备,则Egress PE去掉IP头后交给GRE协议处理。GRE协议剥掉GRE报头,获取X协议,再交由X协议对此数据报文进行后续的转发处理。

报文格式

GRE封装后的报文结构如图2所示。

乘客协议(Passenger Protocol):封装前的报文称为净荷,封装前的报文协议称为乘客协议。封装协议(Encapsulation Protocol):GRE Header是由封装协议完成并填充的,封装协议也称为运载协议(Carrier Protocol)。传输协议(Transport Protocol或者Delivery Protocol):负责对封装后的报文进行转发的协议称为传输协议。

图2 GRE报文结构

GRE报文结构