1、GRE技术GRE技术 目 录第1章 简介 1第2章 相关术语解析 2第3章 协议介绍 33.1 GRE在TCP/IP协议栈中的层次位置 33.2 GRE的报文结构 33.3 GRE的工作流程概述 53.3.1 加封装 63.3.2 转发 73.3.3 解封装 73.4 GRE的优点与缺点 7第4章 典型应用 7第1章 简介本章主要描述GRE协议的原理及实现。本章主要内容: 相关术语解析 协议介绍 典型应用第2章 相关术语解析VPN虚拟专用网络(Virtual Private Network)。应用这种技术,通过Internet连接起来的两个或多个网点,其运行方式就像处于单个专用网络上。GRE通
2、用路由封装(Generic Routing Encapsulation)。Tunnel隧道。通常指将一种协议报文封装到另一种协议内部的行为,这就使得一种协议报文能够穿越另一种协议网络。第3章 协议介绍本节主要内容: GRE在TCP/IP协议栈中的层次位置 GRE的报文结构 GRE的工作流程概述 GRE的优点与缺点GRE技术主要用于在源端和目的端之间形成隧道。将要通过隧道的报文用一个新的报文头(GRE报文头)进行封装,然后带着隧道终点地址放入隧道中。当报文到达隧道的终点时,GRE报文头被剥离,再用原始报文的目的地址进行寻址。GRE隧道通常是点到点的。GRE还具有为报文分组排序的能力。使用GRE隧
3、道有可能产生性能问题,因为需要额外的封装和解封装处理。3.1 GRE在TCP/IP协议栈中的层次位置由于GRE的报文是直接加上IP头进行传输,因此近似认为GRE处于IP层之上。GRE协议在IP头中的协议号是47。3.2 GRE的报文结构通过GRE隧道的报文由三部分组成。Payload packet:进入隧道之前的网络层报文(如IP报文),作为隧道报文的有效负载,该报文的协议称作GRE隧道的乘客协议。GRE header:Payload packet进入隧道后加上的GRE头,包含GRE协议本身以及和乘客协议有关的一些信息。Delivery header:封装的外部协议报文头(如IP头),即隧道所
4、处网络的协议数据头。是实现一种协议报文穿越另一种协议网络的传输工具。GRE header的结构如下:一个最简单的GRE头部只有4个字节,即在C、K、S等标志位都为0的情况下,GRE头仅包含第0至31位的信息。Checksum标志位第0位是Checksum标志位。仅当Checksum标志位置1时,Checksum字段才有效。Key标志位第2位是Key标志位。仅当Key标志位置1时,Key字段才有效。Sequence number标志位第3位是Sequence number标志位。仅当它置1时,Sequence number字段才有效。Reserved 0和Ver字段没有使用,必须清零。Proto
5、col type字段Protocol type字段标识Payload packet的类型值。一般情况下,该协议字段与以太网帧的类型字段值相同。如IP报文的Protocol type = 0800。Checksum字段Checksum字段承载GRE头部的校验和。校验和必须覆盖GRE头和Payload packet。Key字段Key字段承载隧道的密匙,隧道两端必须配置相同的密匙(或两端都不配密匙),隧道才能通。Sequence字段Sequence字段承载报文的序号。如果设置了Sequence标志位,从隧道通过的报文都会带上序号。序号从0开始,每发出一个报文,序号加1。对端收到报文后,也会记录下收到
6、报文的序号,如果收到失序报文,对端会将报文丢弃。Checksum,Sequence和Key字段启用与否,由tunnel checksum,tunnel sequence-datagrams和tunnel key命令控制。举例说明GRE的报文结构:打阴影的为新的ip头部;打框的为gre的头部;后面则为真正的ip报文,在这里充当数据。45 00 05 f4 8f e3 00 00 7f 2f fd 85 c0 a8 01 02 c0 a8 01 01 00 00 08 00 45 00 05 dc 72 3f05f4表示该新的ip报文的总长度(1524);2f表示该新的ip报文内部所包括的协议类型
7、:gre(47);c0a80102 c0a80101表示该新的ip报文的源地址和目的地址(tunnel的源和目的地址);0000 0800表示gre的头部:标志位全为0,表示该gre包没有校验和、密匙和序号;乘客协议为IP;3.3 GRE的工作流程概述GRE隧道的报文在隧道源端加封装,在隧道目的端解封装,源和目的之间的转发则当作一般的报文处理。 收包:若报文的目的是路由器自己,送上层协议处理,若协议是GRE(47),则查找对应的隧道接口,找到后处理GRE头,进行一系列的检测,然后去掉外层的IP头,修改mbuf的recvif字段为本隧道接口,最后送入IP输入队列中。发包:若报文是发往隧道接口,据
8、接口配置,加GRE头,加隧道指定的源和目的地址的IP头,根据隧道目的地址进行路由,发送此报文到路由器的物理接口。以上图为例,介绍GRE的工作原理。在Router2和Router4之间搭建了一条GRE隧道Tunnel1。Tunnel1的两端引用地址分别是12.1.1.1和21.1.1.1。并在Router2上配置了静态路由,31.0.0.0的网络通过Tunnel1可达。现在从Router1上发一个数据包,其目的地址是31.1.1.1。通过路由选路,数据包从端口11.1.1.1出去。此时的IP报文源和目的地址分别是11.1.1.1和31.1.1.1。数据包到达Router2后,Router2进行路
9、由选路,由于静态路由的存在,Router2决定从隧道转发包。数据包开始加封装。3.3.1 加封装此时需转发的数据包即为Payload packet(本例中是IP报文),隧道在其头部加上一个GRE header。GRE header的Protocol type字段置为0800(IP的协议类型)。然后,再在GRE header之前再加上一个IP header(Delivery header)。IP header的协议值置为47(GRE的协议号),IP header的目的地址设为Tunnel1的目的地址21.1.1.1,将IP header的源地址设为12.1.1.1,然后根据21.1.1.1进行路
10、由,路由结果是从12.1.1.1接口出去。加封装结束,数据包从12.1.1.1接口出去。3.3.2 转发Router3收到报文后,送到IP层选路。此时Router3分析的IP头其实是Deliver header(Payload packet已经被封装,Router3无法达到Payload packet的IP头),因此会根据Deliver header的目的地址21.1.1.1进行路由转发。该过程一直进行到报文到达隧道的终点Router4。3.3.3 解封装Router4收到报文后同样先分析Delivery header,发现目的地址21.1.1.1是自己的地址,于是检查IP包的协议字段。由于协
11、议字段是47,IP包交GRE隧道处理。隧道首先去掉Delivery header,检查GRE header的Protocol type。由于Protocol type是0800,隧道将Payload packet交IP层在处理,完成解封装。Router4根据Payload packet的目的地址31.1.1.1路由,报文从接口21.1.1.1出去,达到真正的目的地Router5。3.4 GRE的优点与缺点GRE隧道技术配置简单,可以在多种物理线路上搭建隧道(PPP,Frame Relay等),将主机网络环境和VPN路由环境进行了隔离。GRE的缺点有管理费用高,隧道的规模数量大。因为GRE是用手工配置的,所以配置和维护隧道所需要的费用和隧道的数量是直接相关联的,每次隧道的终点改变,隧道要重新配置。第4章 典型应用GRE隧道技术可以满足Extranet VPN以及Intranet VPN的需求。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1