1. 通用路由封装(GRE: Generic Routing Encapsulation)是通用路由封装协议,可以对某些网络层协议的数据报进行封装,使这些被封装的数据报能够在IPv4网络中传输,它允许用户使用IP封装IPIPXAppleTalk,并支持全部的路由协议,如RIPOSPFIGRPEIGRP。通过GRE,用户可以利用公用IP网络连接IPX网络和AppleTalk网络,还可以使用保留地址进行网络互联,或对公网隐藏企业网的IP地址,GRE采用了Tunnel(隧道)技术,是VPNVirtual Private Network)的第三层隧道协议。<br /> <br /> ** **Tunnel 是一个虚拟的点对点的连接,提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个Tunnel 的两端分别对数据报进行封装及解封装。 一个X协议的报文要想穿越IP网络在Tunnel中传输,必须要经过加封装与解封装两个过程, 指保留原始IP数据流的情况下封装成另一种带有新IP报头(注:新IPtunnel中的sourcedestination,这两个地址必须是UP状态的接口IP(包括虚接口),且两者能够通讯, tunnel封装模式有多种,默认情况下指GRE模式。
  2. GRE的包头包含了协议类型(用于标明乘客协议的类型);校验和包括了GRE的包头和完整的乘客协议与数据;密钥(用于接收端验证接收的数据);序列号(用于接收端数据包的排序和差错控制)和路由信息(用于本数据包的路由)。
  3. 在大多数常规情况下,系统拥有一个有效载荷(或负载)包,需要将它封装并发送至某个目的地。首先将有效载荷封装在一个GRE 包中,然后将此GRE 包封装在其它某协议中并进行转发。此外发协议即为发送协议。当IPv4 被作为GRE 有效载荷传输时,协议类型字段必须被设置为0x800。当一个隧道终点拆封此含有 IPv4 包作为有效载荷的GRE 包时,IPv4 包头中的目的地址必须用来转发包,并且需要减少有效载荷包的TTL。值得注意的是,在转发这样一个包时,如果有效载荷包的目的地址就是包的封装器(也就是隧道另一端),就会出现回路现象。在此情形下,必须丢弃该包。当 GRE 包被封装在IPv4 中时,需要使用IPv4 协议47

image.png

报文格式

image.png

封装过程

  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 后设备的数据转发效率有一定程度的下降。

GRE 隧道配置实验

  • GRE 隧道不需要协商,直接以IP in IP形式发送
  • GRE 隧道传输所有流量,包括组播,广播,可以直接建立动态路由邻居宣告网络

image.png

  1. 点对点GRE
  2. R1#show run interface tunnel 10
  3. Building configuration...
  4. Current configuration : 121 bytes
  5. !
  6. interface Tunnel10
  7. ip address 1.1.1.1 255.255.255.0
  8. # 隧道IP,双方必须是同一个网段
  9. tunnel source FastEthernet0/0
  10. # 隧道源IP,在使用tunnel发送数据包时,封装的全局可路由IP
  11. tunnel destination 10.1.34.4
  12. # 隧道目的IP,与自身建立邻居的对方IP,必须可达。
  13. # 可以在隧道基础上建立动态路由邻居,宣告身后网络。