<返回更多

详解通用路由封装协议GRE

2020-12-30    
加入收藏

GRE介绍

 

定义

对于IPv4 GRE和IPv6 GRE都支持的特性,正文中如果不做特殊说明,则表示二者实现无差异。IPv4 GRE和IPv6 GRE的实现差异,请参考附录。

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

GRE提供了将一种协议的报文封装在另一种协议报文中的机制,使报文能够在异种网路中传输,而异种报文传输的通道称为Tunnel。

NE40E支持如下GRE:

目的

为了使某些网络层协议(如IPX、ATM、IPv6、AppleTalk等)的报文能够在IPv4网络中传输,可以将某些网络层协议的报文进行封装,以此解决了异种网络的传输问题。

GRE也可以作为VPN的第三层隧道协议,为VPN数据提供透明传输通道。目前,只有IPv4 L3VPN支持GRE隧道,IPv6 L3VPN暂不支持GRE隧道。

受益

GRE对设备的性能的要求较低,可以在不支持MPLS的设备间建立隧道。

GRE基本原理

 

产生原因

骨干网中一般采用单一网络协议(例如IPv4)进行数据报文传输,但是不同的非骨干网上可能会使用不同网络协议(例如:IP、IPv6、IPX等)进行数据报文传输。由于骨干网与非骨干网使用的协议不同,这样将导致非骨干网之间无法通过骨干网传输数据报文。GRE协议通过实现一种协议封装另一种协议来解决这个问题。

如图3-1所示,group1和group2是运行Novell IPX的非骨干网,term1和term2是运行IPv6的非骨干网,中间的骨干网使用的是IPv4网络。为了实现group1和group2、term1和term2通过骨干网传输数据,可以在DeviceA和DeviceB之间采用GRE协议建立隧道,当数据报文从group1或term1发送至DeviceA后,将会被封装在一个GRE数据包中,所得的GRE数据包可以封装在IPv4协议中,然后被转发。

图3-1 GRE组网图

详解通用路由封装协议GRE

 

相关概念

报文在GRE中的传输过程

报文在GRE隧道中传输包括封装和解封装两个过程。如图3-5所示,如果私网报文从Ingress PE向Egress PE传输,则封装在Ingress PE上完成;而解封装在Egress PE上进行。

图3-5 私有网络通过GRE隧道互连

详解通用路由封装协议GRE

 

使用价值

在网络中部署GRE隧道,有益于以下三个方面:

Keepalive检测

 

产生原因

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

NE40E实现了GRE隧道的链路状态检测功能(Keepalive检测功能)。Keepalive检测功能用于时刻检测隧道链路是否处于Keepalive状态,即检测隧道对端是否可达。如果对端不可达,隧道连接就会及时关闭,避免形成数据空洞。

实现过程

如果GRE隧道源端使能Keepalive检测功能,则会周期地发送Keepalive探测报文给对端。若对端可达,则源端会收到对端的回应报文;否则,收不到对端的回应报文。具体过程如下:

  1. 当GRE隧道的源端使能Keepalive检测功能后,就创建一个定时器,周期地发送Keepalive探测报文,同时进行不可达计数。每发送一个探测报文,不可达计数加1。
  2. 对端每收到一个探测报文,就给源端发送一个回应报文。
  3. 如果源端的计数器值未达到预先设置的值就收到回应报文,就表明对端可达,并把不可达计数清零。如果源端的计数器值到达预先设置的值——重试次数(Retry Times)时,还没收到回送报文,就认为对端不可达。此时,源端将关闭隧道连接。

对于NE40E实现的GRE,只要在隧道一端配置Keepalive,该端就具备Keepalive功能,而不要求隧道对端也具备该功能。隧道对端收到报文,如果是Keepalive探测报文,无论是否配置Keepalive,都会给源端发送一个回应报文。

使用价值

Keepalive检测功能可以检测隧道状态,避免因对端不可达而造成的数据丢失,保证数据传输的可靠性。

GRE的安全机制

 

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

相关标准中规定:若GRE报文头中的K位为1,则在GRE头中插入关键字字段,收发双方将进行通道识别关键字的验证。

关键字是一个四字节长的数,在报文封装时被插入GRE头。关键字的作用是标志隧道中的流量。属于同一流量的报文使用相同的关键字。在报文解封装时,隧道端将基于关键字来识别属于相同流量的数据报。

只有Tunnel两端设置的识别关键字完全一致时才能通过验证,否则将报文丢弃。这里的“完全一致”是指两端都不设置识别关键字;或者两端都设置关键字,且关键字的值相等。

GRE应用

扩大跳数受限的网络工作范围

 

图3-6 扩大网络工作范围

详解通用路由封装协议GRE

 

在图3-6中,网络运行IP协议,假设IP协议限制跳数为255。如果两台PC之间的跳数超过255,它们将无法通信。在网络中使用隧道可以隐藏一部分步跳,从而扩大网络的工作范围。

将不连续的子网连接起来,用于组建VPN

 

使用GRE隧道可以将不连续的子网连接起来,实现跨越广域网的VPN。

例如,两个VPN子网Site1和Site2位于不同的城市,通过在网络边界设备之间建立GRE隧道,可以把这两个子网连接成一个连续的VPN网络。

GRE可应用于L2VPN,也可以应用于L3VPN。有两种模式:

通常,VPN骨干网使用LSP作为公网隧道。但如果骨干网核心设备(P设备)只提供纯IP功能,不具备MPLS功能;而网络边缘的PE具备MPLS功能,这样,就不能使用LSP作为公网隧道。此时,可以使用GRE隧道替代LSP,在核心网提供三层或二层VPN解决方案。其私网报文在VPN骨干网中传输时,报文格式如图3-9。

图3-9 含MPLS标签的GRE报文格式

详解通用路由封装协议GRE

 

GRE隧道也可以作为非MPLS的VPN骨干网隧道。这种情况下,私网报文在VPN骨干网中传输时不含有MPLS标签,其报文格式如图3-10。

图3-10 不含MPLS标签的GRE报文格式

详解通用路由封装协议GRE

 

CE采用GRE隧道接入MPLS VPN

 

在MPLS VPN中,为了让用户端设备CE(Customer Edge)接入VPN中往往需要CE与MPLS骨干网的PE(Provider Edge)设备之间有直接的物理链路,即在同一个网络中。在这样的组网中,需要在PE上将VPN与PE到CE的物理接口进行关联。

如图3-11所示,在实际组网中,并非所有的CE和PE都能用物理链路直接相连。例如,很多已经连接到Internet或基于IP技术的骨干网上的机构,其CE和PE设备之间地理位置上相距甚远,不可能直接接入到MPLS骨干网的PE设备上。这样就无法通过Internet或者是IP骨干网直接访问MPLS VPN内部的站点。

图3-11 CE使用基于IP技术的骨干网接入MPLS VPN骨干网

详解通用路由封装协议GRE

 

为了让CE能接入到MPLS VPN且可以保证数据传输的安全性,可以在CE和PE间利用公共网络或某私有网络相连,并在CE与PE之间创建GRE隧道。这样,可以看成CE和PE直连。在PE上将VPN与PE-CE之间的接口进行关联时,就可以把GRE隧道当作一个物理接口,在这个接口上进行VPN关联。

采用GRE隧道接入MPLS VPN时,GRE的实现模式可按以下三种情形来划分:

私有网络的GRE

图3-12 私有网络的GRE示意图

详解通用路由封装协议GRE

 

如图3-12所示,GRE隧道的源和目的地址都属于私有网络。在实际的应用中在私有网络里再创建一个隧道到PE的使用价值不高,因此不推荐使用,建议直接使用Device1作为CE设备。

穿过公网的GRE

在这种组网中,CE和PE都需要有属于公网的接口,该接口需要使用公网IP地址。CE的公网路由表中需要有到PE的路由,PE公网路由表也需要有到CE的路由。

图3-13 穿越公网的GRE示意图

详解通用路由封装协议GRE

 

此外,为了让CE上的私网流量通过隧道传输到PE上,CE的路由表中,到远端site网段路由的出接口为GRE隧道接口,下一跳为隧道对端接口的IP地址。

穿越VPN的GRE

与穿过公网的GRE相比,穿越VPN的GRE不同点在于CE不是通过公共网络与PE互连,而是通过另一个VPN(如VPN2)与PE互连。也就是说,CE上流向PE的私网数据的出接口及PE上返回该CE的私网数据流量的出接口都属于VPN2。

图3-14 穿越VPN的GRE示意图

详解通用路由封装协议GRE

 

例如图3-14中,PE1和PE2是一级运营商的MPLS骨干网边界设备。VPN2是属于二级运营商的一个VPN。CE1和CE2是属于用户的设备。

为了在此网络环境中部署一个基于MPLS网络的VPN(如VPN1),可以在PE1和CE1之间搭建一个穿越VPN2的GRE,在逻辑上使CE1与PE1直连。

GRE在ERSPAN网络中的应用

 

ERSPAN是一种流量镜像协议,它允许向一个乃至多个端口或VLAN做流量镜像。这些流量镜像将被发送到服务器,用于做流量监控。

如图3-15所示,交换机A通过IP网络向交换机B发送流量。同时为做流量监控,交换机A通过ERSPAN将交换机A发给交换机B的流量做出镜像流量,即发送备份流量到交换机C,这样,只需将分析或侦听设备连接至监控端口,即可实现对被监控端口的分析和侦听。通过建立GRE隧道,ERSPAN允许镜像报文跨越一个IP网络,将ERSPAN报文封装成GRE报文在IP网络内传输到交换机C上。

图3-15 GRE在ERSPAN网络中应用的组网图

详解通用路由封装协议GRE
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>