通用路由封装协议GRE原理与配置

发布时间:2023年12月28日

GRE应用场景

  • GRE支持将一种协议的报文封装在另一种协议报文中。
  • GRE可以解决异种网络的传输问题。
  • GRE用来对某些网络层协议如IPX(Internet Packet Exchange)的报文进行封装,使这些被封装的报文能够在另一网络层协议(如IP)中传输。GRE可以解决异种网络的传输问题。
  • IPSec VPN技术可以创建一条跨越共享公网的隧道,从而实现私网互联。IPSec VPN能够安全传输IP报文,但是无法在隧道的两个端点之间运行RIPOSPF等路由协议。GRE可以将路由协议信息封装在另一种协议报文(例如IP)中进行传输。

  • ?GRE隧道扩展了受跳数限制的路由协议的工作范围,支持企业灵活设计网络拓扑。
  • 使用GRE可以克服IGP协议的一些局限性。例如,RIP路由协议是一种距离矢量路由协议,最大跳数为15。如果网络直径超过15,设备将无法通信。这种情况下,可以使用GRE技术在两个网络节点之间搭建隧道,隐藏它们之间的跳数,扩大网络的工作范围。

  • 首先通过GRE对报文进行封装,然后再由IPSec对封装后的报文进行加密和传输。
  • GRE本身并不支持加密,因而通过GRE隧道传输的流量是不加密的。IPSec技术与GRE相结合,可以先建立GRE隧道对报文进行GRE封装,然后再建立IPSec隧道对报文进行加密,以保证报文传输的完整性和私密性。

GRE报文结构

  • GRE在封装数据时,会添加GRE头部信息,还会添加新的传输协议头部信息。?
  • GRE封装报文时,封装前的报文称为净荷,封装前的报文协议称为乘客协议,然后GRE会封装GRE头部,GRE成为封装协议,也叫运载协议,最后负责对封装后的报文进行转发的协议称为传输协议。
  • GRE封装和解封装报文的过程如下
  • 1.设备从连接私网的接口接收到报文后,检查报文头中的目的IP地址字段,路由表查找出接口,如果发现出接口是隧道接口,将报文发送给隧道模块进行处理
  • 2.隧道模块接收到报文后首先根据乘客协议的类型和当前GRE隧道配置的校验和参数,对报文进行GRE封装,即添加GRE报文头
  • 3.然后,设备给报文添加传输协议报文头,即IP报文头。该IP报文头的源地址就是隧道源地址,目的地址就是隧道目的地址
  • 4.最后,设备根据新添加的IP报文头目的地址,在路由表中查找相应的出接口,并发送报文。之后,封装后的报文将在公网中传输
  • 5.接收端设备从连接公网的接口收到报文后,首先分析IP报文头,如果发现协议类型字段的值为47,表示协议为GRE,于是出接口将报文交给GRE模块处理。GRE模块去掉IP报文头和GRE报文头,并根据GRE报文头的协议类型字段,发现此报文的乘客协议为私网运行的协议,于是将报文交该协议处理。

GRE关键字验证

  • 隧道两端设备通过关键字字段( Key )来验证对端是否合法。?
  • 关键字(Key)验证是指对隧道接口进行校验这种安全机制可以防止错误接收来自其他设备的报文。关键字字段是一个四字节长的数值,若GRE报文头中的K位为1,则在GRE报文头中插入关键字字段只有隧道两端设置的关键字完全一致时才能通过验证,否则报文将被丢弃。

Keepalive检测

  • Keepalive检测功能用于检测隧道对端是否可达。?
  • Keepalive检测功能用于在任意时刻检测隧道链路是否处于Keepalive状态,即检测隧道对端是否可达。如果对端不可达,隧道连接就会及时关闭,避免形成数据空洞。使能Keepalive检测功能后,GRE隧道本端会定期向对端发送Keepalive探测报文。若对端可达,则本端会收到对端的回应报文;若对端不可达,则收不到对端的回应报文。如果在隧道一端配置了Keepalive功能,无论对端是否配置Keepalive,配置的Keepalive功能在该端都生效。隧道对端收到Keepalive探测报文,无论是否配置Keepalive,都会给源端发送一个回应报文。
  • 使能Keepalive检测功能后,GRE隧道的源端创建一个计数器,周期性地发送Keepalive探测报文,同时进行不可达计数。每发送一个探测报文,不可达计数加1
  • 如果源端在计数器值达到预先设置的值之前收到回应报文,则表明对端可达。如果计数器值达到预先设置的重试次数,源端还是没有收到回应报文,则认为对端不可达。此时,源端将关闭隧道连接。

GRE配置

[RTA]interface Tunnel 0/0/1

[RTA-Tunnel0/0/1]ip address 40.1.1.1 24

[RTA-Tunnel0/0/1]tunnel-protocol gre

[RTA-Tunnel0/0/1]source 20.1.1.1?

[RTA-Tunnel0/0/1]destination 20.1.1.2

[RTA-Tunnel0/0/1]quit

[RTA]ip route-static 10.1.2.0 24 Tunnel 0/0/1

  • interface tunnel?interface-number命令用来创建Tunnel接口。创建Tunnel接口后,需要配置Tunnel接口的IP地址和Tunnel接口的封装协议。
  • tunnel-protocol命令用来配置Tunnel接口的隧道协议。
  • source?{?source-ip-address?|?interface-type?interface-number?}命令用来配置Tunnel源地址或源接口。
  • destination dest-ip-address命令用来指定Tunnel接口的目的IP地址。
  • 在本端设备和远端设备上还必须存在经过Tunnel转发的路由,这样,需要进行GRE封装的报文才能正确转发。经过Tunnel接口转发的路由可以是静态路由,也可以是动态路由。配置静态路由时,路由的目的地址是GRE封装前原始报文的目的地址,出接口是本端Tunnel接口。

?配置验证

[RTA]display interface Tunnel 0/0/1

Tunnel0/0/1 current state : UP

Line protocol current state : UP

Last line protocol up time : 2016-03-21 13:37:38

Description:HUAWEI, AR Series, Tunnel0/0/1 Interface

Route Port, The Maximum Transmit Unit is 1476

Internet Address is 40.1.1.1/24

Encapsulation is TUNNEL, loopback not set

Tunnel source 20.1.1.1 (GigabitEthernet0/0/1), destination 20.1.1.2

Tunnel protocol/transport GRE/IP, key disabled

keepalive disabled

Checksumming of packets disabled

……

  • ?执行display interface Tunnel 0/0/1命令,可以查看接口的运行状态和路由信息。如果接口的当前状态和链路层协议的状态均显示为UP,则接口处于正常转发状态。隧道的源地址和目的地址分别为建立GRE隧道使用的物理接口的IP地址。

[RTA]display ip routing-table

Route Flags: R - relay, D - download to fib

--------------------------------------------------------------

Routing Tables: Public? Destinations : 13?????? Routes : 14??????

Destination/Mask Proto? Pre Cost Flags? NextHop?? Interface

……

10.1.2.0/24????? Static 60? 0??? RD???? 40.1.1.2? Tunnel 0/0/1

……

  • 执行display ip routing table命令,可以查看IP路由表,判断GRE隧道连接的两个网络的可达信息。在本示例中,可以看出目的地址为通过GRE隧道可达的网络地址,下一跳地址为GRE隧道远端接口的IP地址。?

配置Keepalive检测

[RTA]interface Tunnel 0/0/1

[RTA-Tunnel0/0/1]keepalive period 3

[RTA-Tunnel0/0/1]quit

  • 执行keepalive?[?period?period?[?retry-times?retry-times?]?命令,可以在GRE隧道接口启用Keepalive检测功能。其中,period参数指定Keepalive检测报文的发送周期,默认值为5秒;retry-times参数指定Keepalive检测报文的重传次数,默认值为3。如果在指定的重传次数内未收到对端的回应报文,则认为隧道两端通信失败,GRE隧道将被拆除。?

配置验证?

[RTA]display interface Tunnel 0/0/1

Tunnel0/0/1 current state : UP

Line protocol current state : DOWN

Description:HUAWEI, AR Series, Tunnel0/0/1 Interface

Route Port, The Maximum Transmit Unit is 1476

Internet Address is 40.1.1.1/24

Encapsulation is TUNNEL, loopback not set

Tunnel source 20.1.1.1 (GigabitEthernet0/0/1), destination 20.1.1.2

Tunnel protocol/transport GRE/IP, key disabled

keepalive enable period 3 retry-times 3

Checksumming of packets disabled

……

  • 执行display interface tunnel命令,可以查看GREKeepalive功能是否使能。本示例中,Keepalive检测功能的当前状态显示为启用,且报文的发送周期为3秒,重传次数为3次。?

本章总结

问:GRE的应用场景有哪些?

答:GRE可以解决异种网络的传输问题;GRE隧道扩展了受跳数限制的路由协议的工作范围,支持企业灵活设计网络拓扑;GRE可以与IPSec结合来实现加密传输组播数据。

问:display interface tunnel命令显示的信息中会包含Internet AddressTunnel source,这两者的区别是什么?

答:Internet Address代表建立GRE隧道所用的虚拟隧道地址,Tunnel source表示隧道的起点,是设备的出接口物理地址

联系我们

文章来源:https://blog.csdn.net/yy123cisco/article/details/135270948
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。