通用路由封装协议原理

通用路由封装协议GRE(Generic Routing Encapsulation)可以对某些网络层协议(如IPX、ATM、IPv6、AppleTalk等)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IPv4)中传输。
GRE提供了将一种协议的报文封装在另一种协议报文中的机制,是一种三层隧道封装技术,使报文可以通过GRE隧道透明的传输,解决异种网络的传输问题。
报文在GRE隧道中传输包括封装和解封装两个过程。如果X协议报文从Ingress PE向Egress PE传输,则封装在Ingress PE上完成,而解封装在Egress PE上进行。封装后的数据报文在网络中传输的路径,称为GRE隧道。
GRE可以封装组播数据,并可以和IPSec结合使用。

GRE报文封装

Ingress PE从连接X协议的接口接收到X协议报文后,首先交由X协议处理。协议根据报文头中的目的地址在路由表或转发表中查找出接口,确定如何转发此报文。如果发现出接口是GRE Tunnel接口,则对报文进行GRE封装,即添加GRE头。
根据骨干网传输协议为IP,给报文加上IP头。IP头的源地址就是隧道源地址,目的地址就是隧道目的地址。
根据该IP头的目的地址(即隧道目的地址),在骨干网路由表中查找相应的出接口并发送报文。之后,封装后的报文将在该骨干网中传输。
在这里插入图片描述
C 校验和验证位。
该置位1,表示GRE头插入了校验和(Checksum)字段。
该置位0,表示GRE头不包含校验和字段。
K 关键字位。
该置位1,表示GRE头插入了关键字(Key)字段。
该置位0,表示GRE头不包含关键字字段。
Recursion 表示GRE报文被封装的层数。完成一次GRE封装后将该字段加1。如果封装层数大于3,则丢弃该报文。该字段的作用是防止报文被无限次的封装。
说明:
RFC1701规定该字段默认值为0。
RFC2784规定当发送和接受端该字段不一致时不会引起异常,且接收端必须忽略该字段。
设备实现时该字段仅在加封装报文时用作标记隧道嵌套层数,GRE解封装报文时不感知该字段,不会影响报文的处理。

Flags 预留字段。当前必须置为0。
Version 版本字段。必须置为0。
Protocol Type 标识承载协议的协议类型。常见的承载协议为IPv4协议,协议代码为0800。
Checksum 对GRE头及其负载的校验和字段。
Key 关键字字段,隧道接收端用于对收到的报文进行验证。
GRE关键字验证(Key ID)
校验和验证是指对封装的报文进行端到端校验。
若GRE报文头中的C位标识位置1,则校验和有效。发送方将根据GRE头及Payload信息计算校验和,并将包含校验和的报文发送给对端。接收方对接收到的报文计算校验和,并与报文中的校验和比较,如果一致则对报文进一步处理,否则丢弃。
隧道两端可以根据实际应用的需要决定配置校验和或禁止校验和。如果本端配置了校验和而对端没有配置,则本端将不会对接收到的报文进行校验和检查,但对发送的报文计算校验和;相反,如果本端没有配置校验和而对端已配置,则本端将对从对端发来的报文进行校验和检查,但对发送的报文不计算校验和。
Keepalive检测(缺省情况系不具备探测能力,所以启用Keepalive检测功能)
由于GRE协议并不具备检测链路状态的功能,如果对端接口不可达,隧道并不能及时关闭该Tunnel连接,这样会造成源端会不断的向对端转发数据,而对端却因隧道不通接收不到报文,由此就会形成数据空洞。
GRE的Keepalive检测功能可以检测隧道状态,即检测隧道对端是否可达。如果对端不可达,隧道连接就会及时关闭,避免因对端不可达而造成的数据丢失,有效防止数据空洞,保证数据传输的可靠性。

GRE应用场景

1.可以解决异种网络的传输问题
2.解决受跳数限制的路由协议的工作范围(RIP路由跳数问题,在隧道里面跑RIP)
3.在IPSec隧道的保护之下跑GRE隧道(GRE over IPSec)
GRE隧道里面可以封装组播或者是单播,但IPSec只封装单播数据

GRE实验配置

在这里插入图片描述

实验配置步骤

1.配置接口IP地址

R1设备配置
interface GigabitEthernet0/0/0
 ip address 12.1.1.1 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.10.254 255.255.255.0 
#
R2设备配置
interface GigabitEthernet0/0/0
 ip address 12.1.1.2 255.255.255.0 
#
interface GigabitEthernet0/0/2
 ip address 23.1.1.2 255.255.255.0 
#
R3设备配置
interface GigabitEthernet0/0/1
 ip address 192.168.20.254 255.255.255.0 
#
interface GigabitEthernet0/0/2
 ip address 23.1.1.3 255.255.255.0 
#

2.公网部分配置OSPF路由协议互访

R1
ospf 1 
 area 0.0.0.0 
  network 12.1.1.1 0.0.0.0 
R2
ospf 1 
 area 0.0.0.0 
  network 12.1.1.2 0.0.0.0 
  network 23.1.1.2 0.0.0.0 
R3
ospf 1 
 area 0.0.0.0 
  network 23.1.1.3 0.0.0.0

3.建立GRE隧道

R1
interface Tunnel0/0/1
 ip address 100.1.1.1 255.255.255.0 
 tunnel-protocol gre
 source 12.1.1.1
 destination 23.1.1.3
#
R3
interface Tunnel0/0/1
 ip address 100.1.1.2 255.255.255.0 
 tunnel-protocol gre
 source 23.1.1.3
 destination 12.1.1.1

4.配置静态路由指向Tunnel接口

R1
ip route-static 192.168.20.0 255.255.255.0 Tunnel0/0/1
R3
ip route-static 192.168.10.0 255.255.255.0 Tunnel0/0/1
Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐