GRE隧道协议

一、GRE协议简介

GRE(General Routing Encapsulation ,通用路由封装)是对某些网络层协议(如IP和IPX)的数据报文进行封装,使这些被封装的报文能够在另一网络层协议(如IP)中传输。此外 GRE协议也可以作为VPN的第三层隧道协议连接两个不同的网络,为数据的传输提供一个透明的通道。GRE 是在网络上建立直接点对点连接的一种方法,目的是简化单独网络之间的连接

要了解其工作原理,请想像一下汽车和渡轮之间的区别。汽车在陆地上行驶,而渡轮在水上行驶。汽车通常不能在水上行驶,但是可以将汽车装载到渡轮上。

在这个类比当中,地形类型好比是支持某些路由协议的网络,而车辆则好比是数据包。GRE 是一种将一种类型的数据包装载到另一种类型的数据包中的方式,以便第一个数据包可以穿越它通常无法穿越的网络,就像一种类型的运输工具(汽车)被装载到到另一种类型的运输工具(渡轮)上,以便穿越原本无法行驶的地形。如私网IP无法穿越公共网络,需要被装载到公网IP上,以便穿越公共网络。

例如,假设一家公司需要在位于两个不同办公室的局域网(LAN)之间建立连接。两个 LAN 都使用最新版本的 互联网协议 IPv6。但是,为了从一个办公网络到达另一个办公网络,流量必须通过一个由第三方管理的网络 — 该网络有些过时,仅支持较旧的 IPv4 协议。

借助 GRE,该公司可以将 IPv6 数据包封装在 IPv4 数据包中,然后便可通过此网络传输流量。回到那个类比,IPv6 数据包是汽车,IPv4 数据包是渡轮,而第三方网络则是水。

GRE主要有以下特点:

  • 机制简单,无需维持状态,对隧道两端设备的CPU负担小;

  • 本身不提供数据的加密,如果需要加密,可以与IPSec结合使用;

  • 不提供流量控制和QoS

二、 GRE报文格式

img

其中:

Payload (净荷): 系统接收到的需要封装和路由的原始数据报; Passenger Protocol(乘客协议):报文封装之前所属的协议称为乘客协议 Encapsulation Protocol(封装协议): 用来封装乘客协议的协议称为封装协议,这里的GRE便是一个封装协议,也成为运载协议(Carrier Protocol); Transport Protocol(传输协议):负责对封装后的报文进行转发的协议称为传输协议;不同于传输层协议。 GRE头部各字段含义:

 

 

三、GRE报文封装与解封装

以下图为例:

 

 

1、报文封装

Router A连接Group 1的接口收到X协议报文后,首先交由X协议处理; X协议检查报文头中的目的地址域来确定如何路由此包; 若报文的目的地址要经过Tunnel才能到达,则设备将此报文发给相应的Tunnel接口; Tunnel接口收到此报文后进行GRE封装,在封装IP报文头后,设备根据此IP包的目的地址及路由表对报文进行转发,从相应的网络接口发送出去。

2、报文解封装

Router B从Tunnel接口收到IP报文,检查目的地址; 如果发现目的地是本路由器,则Router B剥掉此报文的IP报头,交给GRE协议处理(进行检验密钥、检查校验和及报文的序列号等); GRE协议完成相应的处理后,剥掉GRE报头,再交由X协议对此数据报进行后续的转发处理。 随着报文的封装、解封装,会导致有效数据传输效率降低, 从而导致设备对GRE数据转发速率降低。

img

可以看出,从 host A 发出的包其实就是一个很普通的 IP 包,除了目的地址不直接可达外。该 GRE tunnel 的一端是建立在 router A上,另一段是建立在 router B上,所以添加外部的 IP 头是在 router A 上完成的,而去掉外面的 IP 头是在 router B上完成的,两个端点的 host 上几乎什么都不用做(除了配置路由,把发送到 10.0.2.0 的包路由到 router A)!

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值