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协议互通组网图


 

  • 封装

    1. Ingress PE从连接X协议的接口接收到X协议报文后,首先交由X协议处理。

    2. X协议根据报文头中的目的地址在路由表或转发表中查找出接口,确定如何转发此报文。如果发现出接口是GRE Tunnel接口,则对报文进行GRE封装,即添加GRE头。

    3. 根据骨干网传输协议为IP,给报文加上IP头。IP头的源地址就是隧道源地址,目的地址就是隧道目的地址。

    4. 根据该IP头的目的地址(即隧道目的地址),在骨干网路由表中查找相应的出接口并发送报文。之后,封装后的报文将在该骨干网中传输。

    关于封装后详细的报文格式,请参见报文格式

  • 解封装

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

    1. Egress PE从GRE Tunnel接口收到该报文,分析IP头发现报文的目的地址为本设备,则Egress PE去掉IP头后交给GRE协议处理。

    2. GRE协议剥掉GRE报头,获取X协议,再交由X协议对此数据报文进行后续的转发处理。

报文格式

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

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

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

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

图2 GRE报文结构

GRE的Keepalive检测

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

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

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

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

  2. 对端每收到一个探测报文,就给源端发送一个回应报文。源端收到回应报文后,计数器会清零。

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

Ethernet over GRE

通用路由封装协议GRE(Generic Routing Encapsulation)提供了将一种协议报文封装在另一种协议报文中的机制,使报文能够在异种网络中传输,这种在异种网络中传输报文的通道称为隧道(Tunnel)。

如图3所示,分支与总部的网络都是以太网络,分支与总部之间通过IP/MPLS骨干网相连,如果用户希望分支与总部之间能够二层互通,可以部署Ethernet over GRE功能,实现以太报文通过GRE隧道进行透传。

图3 Ethernet over GRE组网图

Ethernet over GRE是将以太网协议的报文通过GRE封装后,在另一个网络层协议(如IPv4)的网络中传输,具体工作原理如下:

  1. SwitchA的用户侧物理以太网接口GE0/0/2收到分支网络的以太报文,以太报文中携带了VLAN Tag信息。
  2. SwitchA从GE0/0/2收到的以太报文后,在设备内基于MAC和VLAN进行二层转发,找到出接口VE0/0/1。
  3. 以太报文在SwitchA的VE0/0/1上进行出接口处理后,将转发到VE0/0/1绑定的Tunnel 1接口,经过GRE封装(协议代码为0x6558)后,进行后续的GRE转发处理,报文经过GRE隧道转发至SwitchB。
  4. SwitchB的Tunnel 1接口上对收到的报文进行GRE解封装,检查到协议代码为0x6558后,将以太报文转发给Tunnel 1接口绑定的VE0/0/1接口。
  5. GRE解封装后的以太网报文进入SwitchB的VE0/0/1以后,在设备内基于MAC和VLAN进行二层转发,找到出接口GE0/0/2。
  6. SwitchB将以太报文从出接口GE0/0/2发往总部网络。
  • 30
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值