什么是“GRE”协议?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是“GRE”协议?相关的知识,希望对你有一定的参考价值。

GRE(Generic Routing Encapsulation) 通用路由封装是对某些网络层协议(如: IP , IPX , Apple Talk等)的数据报进行封装,使这些被封装的数据报能够在另一个网络层协议(如IP)中传输。

GRE可以实现多协议的本地网通过单一协议的骨干网传输的服务,扩大了网络的工作范围,包括哪些路由网关有限的协议,如IPX包最多可以转发16次(即经过16个路由器),而在一个Tunnel连接中看上去只经过一个路由器将一些不能连续的子网连接起来。

GRE协议实际上是一种承载协议,它提供了将一种协议的报文封装在另一种协议报文中的机制,使报文能够在异种网络中传输,异种报文传输的通道称为tunnel。

IP协议既可以作为传递协议,也可以作为负载协议,在TCP/IP网络中,IP协议一般是作为传递协议,封装和传输其他协议的报文。

Tunnel是一个虚拟的点对点的连接,它提供了一条通路使封装的数据报能够在这个通路上传输,并且在一个Tunnel的两端分别对数据报进行封装及解封。

在最简单的情况下,系统接收到一个需要封装和路由的数据报,称之为负载报文。这个有效报文首先被GRE封装,称之为GRE报文,这个报文接着被封装在IP协议中,然后完全由IP 层负责此报文的转发。

参考技术A GRE技术规定了如何用一种网络协议去封装另一种网络协议的方法。GRE隧道由两端的源IP地址和目的IP地址来定义,允许用户使用IP包封装IP、网际包交换协议(IPX)如AppleTalk包,并支持各种路由协议,如路由信息协议版本2(RIP2)、开放最短路径优先协议(OSPF)等。虽然GRE协议已经比较成熟,但这里需要处理的IP隧道却数量惊人,且必须通过手工调度来完成,还须给每个隧道指配一对IP地址,IP隧道地址对的管理是一个很大的问题。当网络出现故障时,IP路由协议至少需要花费数秒才能使网络收敛,为此IETF定义了链路管理协议(LMP)用于监控底层的链路状态并提供快速故障检测。虽然可以通过定义有层次的IP VPN使核心网络的隧道数最少以使网络具有可扩展性,但这将导致原始以太帧被封装到两个IP包头(分别用于点对点内部以及相互之间的连通)而使带宽利用率降低。 参考技术B GRE GRE(通用路由协议封装)是由Cisco和Net-smiths等公司于1994年提交给IETF的,标号为RFC1701和RFC1702。目前有多数厂商的网络设备均支持GRE隧道协议。GRE规定了如何用一种网络协议去封装另一种网络协议的方法。GRE的隧道由两端的源IP地址和目的IP地址来定义,允许用户使用IP包封装IP、IPX、AppleTalk包,并支持全部的路由协议(如RIP2、OSPF等)。通过GRE,用户可以利用公共IP网络连接IPX网络、AppleTalk网络,还可以使用保留地址进行网络互连,或者对公网隐藏企业网的IP地址。GRE协议的主要用途有两个:企业内部协议封装和私有地址封装。在国内,由于企业网几乎全部采用的是TCP/IP协议,因此在中国建立隧道时没有对企业内部协议封装的市场需求。企业使用GRE的唯一理由应该是对内部地址的封装。当运营商向多个用户提供这种方式的VPN业务时会存在地址冲突的可能性。

GRE OVER IPSEC的数据包的IP地址是如何封装的

参考技术A GRE OVER IPSEC :
IP< IPSEC<GRE<IP<TCP
外层ip就是公网的路由IP,GRE over IPSec,是将整个已经封装过的GRE数据包进行加密
由于IPSec不支持对多播和广播数据包的加密,这样的话,使用IPSec的隧道中,动态路由协议等依靠多播和广播的协议就不能进行正常通告,所以,这时候要配合GRE隧道,GRE隧道会将多播和广播数据包封装到单播包中,再经过IPSec加密。
此外由于GRE建立的是简单的,不进行加密的VPN隧道,他通过在物理链路中使用ip地址和路由穿越普通网络。所以很常见的方法就是使用IPSec对GRE进行加密,提供数据安全保证本回答被提问者采纳

以上是关于什么是“GRE”协议?的主要内容,如果未能解决你的问题,请参考以下文章

GRE协议有啥作用?用在那里?

VPN三层隧道协议GRE IPsec

GRE协议CentOS配置GRE隧道

Cisco GRE 基础配置详解

通信领域的GRE是啥的缩写?有啥功能?

路由基础之GRE和SNMP的配置