通用路由封装(GRE)

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

中文名:通用路由封装
外文名:Generic Routing Encapsulation
作用:网络层协议封装一个其它网络协议
类    型:网络协议
隶    属:通信协议,路由协议

目录

  1. 基本信息
  2. 报文格式
  3. 封装过程
  4. 解封装过程

基本信息

通用路由封装 (GRE)定义了在任意一种网络层协议上封装任意一个其它网络层协议的协议。

在大多数常规情况下,系统拥有一个有效载荷(或负载)包,需要将它封装并发送至某个目的地。首先将有效载荷封装在一个GRE 包中,然后将此GRE 包封装在其它某协议中并进行转发。此外发协议即为发送协议。当IPv4 被作为GRE 有效载荷传输时,协议类型字段必须被设置为0x800。当一个隧道终点拆封此含有 IPv4 包作为有效载荷的GRE 包时,IPv4 包头中的目的地址必须用来转发包,并且需要减少有效载荷包的TTL。值得注意的是,在转发这样一个包时,如果有效载荷包的目的地址就是包的封装器(也就是隧道另一端),就会出现回路现象。在此情形下,必须丢弃该包。当 GRE 包被封装在IPv4 中时,需要使用IPv4 协议47。

GRE 下的网络安全与常规的IPv4 网络安全是较为相似的,GRE 下的路由采用IPv4 原本使用的路由,但路由过滤保持不变。包过滤要求防火墙检查 GRE 包,或者在GRE 隧道终点完成过滤过程。在那些这被看作是安全问题的环境下,可以在防火墙上终止隧道。

GRE(Generic Routing Encapsulation,通用路由封装)协议是对某些网络层协议(如IP 和IPX)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IP)中传输。GRE采用了Tunnel(隧道)技术,是VPN(Virtual Private Network)的第三层隧道协议。

Tunnel 是一个虚拟的点对点的连接,提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个Tunnel 的两端分别对数据报进行封装及解封装。 一个X协议的报文要想穿越IP网络在Tunnel中传输,必须要经过加封装与解封装两个过程。

报文格式

GRE 封装后的报文格式为:

Delivery Header GRE Header  Payload packet
  • Delivery Header:封装的外部协议报文头(如IP报文头),即隧道所处网络的协议数据头,是实现一种协议报文穿越另一种协议网络的传输工具。
  • GRE Header:对数据报文进行封装后加入的数据,包含GRE协议本身以及和负载协议有关的一些信息。
  • Payload Packet:进入隧道之前的网络层数据报文,将作为隧道报文的有效负载,该报文的协议号将作为GRE头部字段中的ProtocolType字段。GRE头部信息具有如图所示的结构。

一个最简单的GRE头部只有4个字节,即在C、K、S等标志们都为0的情况下,GRE头部仅包含第0到31位的信息。前4个bit位都为标志位,分别表示了头部后来的字段是否有效;ProtocolType字段标识PayloadPacket的协议类型,一般情况下,该协议字段与以太网帧的类型字段值相同。

需要封装和传输的数据报文,称之为净荷(Payload),净荷的协议类型为乘客协议(Passenger Protocol)。系统收到一个净荷后,首先使用封装协议(Encapsulation Protocol)对这个净荷进行GRE 封装,即把乘客协议报文进行了“包装”,加上了一个GRE 头部成为GRE 报文;然后再把封装好的原始报文和GRE 头部封装在IP 报文中,这样就可完全由IP 层负责此报文的前向转发(Forwarding)。通常把这个负责前向转发的IP 协议称为传输协议(Delivery Protocol 或者Transport Protocol)。根据传输协议的不同,可以分为GRE over IPv4 和GRE over IPv6 两种隧道模式

封装过程

1、 Router A 连接Group 1 的接口收到X 协议报文后,首先交由X 协议处理

2、X 协议检查报文头中的目的地址域来确定如何路由此包

3、 若报文的目的地址要经过Tunnel 才能到达,则设备将此报文发给相应的Tunnel 接口

4、 Tunnel 口收到此报文后进行GRE 封装,在封装IP 报文头后,设备根据此IP 包的目的地址及路由表对报文进行转发,从相应的网络接口发送出去。

解封装过程

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

1、 RouterB 从Tunnel 接口收到IP 报文,检查目的地址

2、 如果发现目的地是本路由器,则RouterB 剥掉此报文的IP 报头,交给GRE 协议处理(进行检验密钥、检查校验和及报文的序列号等)

3、 GRE 协议完成相应的处理后,剥掉GRE 报头,再交由X 协议对此数据报进行后续的转发处理。

说明:GRE 收发双方的加封装、解封装处理,以及由于封装造成的数据量增加,会导致使用GRE 后设备的数据转发效率有一定程度的下降。

时间: 2024-10-20 04:36:43

通用路由封装(GRE)的相关文章

CCNA实验三十六 GRE(通用路由封装)  

CCNA实验三十六 GRE(通用路由封装) 环境:Windows XP .Packet Tracert5.3 目的:了解GRE的使用,掌握如何配置GRE. 说明: GRE(Generic Routing Encapsulation,通用路由封装)协议是对某些网络层协议(如IP 和IPX)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IP)中传输.GRE采用了Tunnel(隧道)技术,是VPN(Virtual Private Network)的第三层隧道协议. Tunnel

通用路由封装简介和基本配置方法

众所周知,IPSec可用于封装各种诸如路由器到路由器,防火墙到路由器,PC到路由器和PC到服务器之间的数据包,以保证数据包在这些设备之间的传输安全.它包含2种数据封装方式,他们是通道模式和传输模式.传输模式仅封装数据包的有效负载,而通道模式还会额外封装数据包的报头. 在本文中,让我们一起关注IPSec通道模式中的一个比较常用的封装方法:通用路由封装(Generic Routing Encapsulation,以下简称GRE). GRE会使用一种GRE专有的封装报头来加密数据包的报头和有效负载.网

通用路由封装(GRE)VPN配置

本人没有很好的文采,只能直接配置,有不懂的地方,后面可以联系我,在配置当中,我会尽量在配置命令后面加标注. 1.在R1上配置相关的命令 R1(config)#int fa0/0   ---进入以太网fa0/0接口-- R1(config-if)#ip address 10.1.1.1  255.255.255.0 --配置以太网fa0/0的接口地址-- R1(config-if)#no shutdown  --激活fa0/0接口-- R1(config)#int  fa0/1 R1(config

通用路由平台VRP和eNSP软件概述

通用路由平台VRP是华为公司数据通信产品的通用操作系统平台,是华为公司自主知识产权的网络操作系统.* VRP的功能实现统一的用户界面和管理界面管理IP,软转发模型统一控制定义接口功能和数据交换统一实现网络接口,屏蔽不同产品和不同链路层的差异 VRP的作用统一管理企业的路由器.交换机.防火墙.无线 eNSP概述eNSP是一款由华为提供的免费的.可扩展的.图形化操作的网络仿真工具平台,主要针对企业路由器.交换机进行软件仿真,完美呈现真实设备实景,支持大型网络模拟,使广大华为技术爱好者有机会在没有真实

基于Json序列化和反序列化通用的封装

1. 最近项目已经上线了 ,闲暇了几天 想将JSON的序列化以及反序列化进行重新的封装一下本人定义为JSONHelp,虽然Microsoft 已经做的很好了.但是我想封装一套为自己开发的项目使用.方便后期的扩展以及开发使用. 2. 什么是 JSON ? JSON:JavaScript 对象表示法(JavaScript Object Notation).JSON 是存储和交换文本信息的语法.类似 XML.JSON 比 XML 更小.更快,更易解析.  现在开发Web应用程序 JSON 是 必不可少

jQuery Ajax通用js封装

第一步:引入jQuery库 <script type="text/javascript" src="<%=path%>/resources/js/jquery.min.js"></script> 第二步:开发Ajax封装类,已测试通过,可以直接调用,直接贴代码,讲解就省了 /***************************************************************** jQuery Ajax封装

MVC+EF+PagedList+调用通用存储封装+多表联合信息展示分页+存储过程分页

主要的技术点不在这里一一阐述,相关存储也是引用别人的,主要技术点就是通过最优性能方式处理需求,PagedList.包需要在线安装就可以 直接上干货 1.存储代码之第一种: 参数相对多点 /**//* @strTable --要显示的表或多个表的连接 @strField --要查询出的字段列表,*表示全部字段 @pageSize --每页显示的记录个数 @pageIndex --要显示那一页的记录 @strWhere --查询条件,不需where @strSortKey --用于排序的主键 @st

类似express的路由封装方式

1.原理 主要过程涉及三个元素的定义,如下: //用于承载一系列方法的对象 var funObj = {}; //用于根据条件执行funObj中的方法 var app = function(){}; //用于向funObj添加方法 app.get = function(){}; 2.具体实现 a. 路由框架的封装(route.js) //========================== // 类似express的路由框架 //========================== var ur

ERP数据通用存储过程封装(三)

引用:DAL:System.Data.SqlClient;System.Data; namespace CommTool { public class SqlComm { /// <summary> /// 根据指定条件,删除指定的表里面的数据 /// </summary> /// <param name="tableName">指定表名</param> /// <param name="condition"&g