您现在的位置是:首页 >技术杂谈 >GRE 隧道协议网站首页技术杂谈

GRE 隧道协议

想做后端的前端 2024-06-04 12:00:02
简介GRE 隧道协议

1.GRE协议简介

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

GRE主要有以下特点:

  • 机制简单,无需维持状态,对隧道两端设备的CPU负担小;
  • 本身不提供数据的加密,如果需要加密,可以与IPSec结合使用;
  • 不提供流量控制和QoS

2. GRE报文格式

在这里插入图片描述

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

GRE头部各字段含义:

字段长度含义
C1bit校验和验证标识。设置为1,表示Checksum字段生效;0表示Checksum字段不生效
K1bit关键字标识。设置为1,表示头部中Key字段生效;0表示Key字段不生效
Recursion3bits用来表示报文被封装的层数。每封装一次该值加1,最多封装3次
Flags5bits预留。值为0
Version3bits版本号。值为0
Protocol Type16bits乘客协议类型
Checksum16bits对GRE头部和负载计算校验和。只有当C为1时有效
Key32bits关键字信息。隧道接收端用于对收到的报文进行验证,只有当K为1时有效;此外也用于一对多的GRE隧道
其他暂未使用,其值固定填充0

3. GRE报文封装与解封装

在这里插入图片描述

3.1 报文封装

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

3.2 报文解封装

  1. Router B从Tunnel接口收到IP报文,检查目的地址;
  2. 如果发现目的地是本路由器,则Router B剥掉此报文的IP报头,交给GRE协议处理(进行检验密钥、检查校验和及报文的序列号等);
  3. GRE协议完成相应的处理后,剥掉GRE报头,再交由X协议对此数据报进行后续的转发处理。

随着报文的封装、解封装,会导致有效数据传输效率降低, 从而导致设备对GRE数据转发速率降低。

4. 应用范围

GRE(点对点类型)主要应用于一下几种环境:

4.1 多协议的本地网通过单一协议的骨干网传输


上图中:Group 1和Group 2是运行Novell IPX协议的本地网,Team 1和Team 2是运行IP协议的本地网。通过在Router A和Router B之间采用GRE协议封装的隧道,Group 1和Group 2、Team 1和Team 2可以互不影响地进行通信

4.2 扩大了跳数受限协议(如RIP)的工作范围

在这里插入图片描述
两台终端之间的跳数超过15(RIP路由协议),它们将无法通信。通过在网络中使用隧道可以隐藏一部分跳数,从而扩大网络的工作范围

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

在这里插入图片描述
运行Novell IPX协议的两个子网Group 1和Group 2分别在不同的城市,通过使用隧道可以实现跨越广域网的VPN.

4.4 和IPsec结合使用

在这里插入图片描述
GRE可以和IPsec结合使用,即对于路由协议、语音、视频等数据先进行GRE封装,再对封装后的报文进行IPsec的加密处理,以提高数据在隧道中传输的安全性

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。