GRE 通用路由封装(GRE, Generic Routing Encapsulation)应用场景 以及配置

目录

GRE简介

定义

优点

GRE基本原理

配置Tunnel接口

操作步骤

GRE简介

介绍GRE的定义和优点。

定义

通用路由封装协议GRE(Generic Routing Encapsulation)可以对某些网络层协议(如IPX、ATM、IPv6、AppleTalk等)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IPv4)中传输。

GRE提供了将一种协议的报文封装在另一种协议报文中的机制,是一种三层隧道封装技术,使报文可以通过GRE隧道透明的传输,解决异种网络的传输问题

优点 应用场景

  • GRE实现机制简单,对隧道两端的设备负担小。

  • GRE隧道可以通过IPv4网络连通多种网络协议的本地网络,有效利用了原有的网络架构,降低成本。

  • GRE隧道扩展了跳数受限网络协议的工作范围,支持企业灵活设计网络拓扑。

  • GRE隧道可以封装组播数据,和IPSec结合使用时可以保证语音、视频等组播业务的安全。

  • GRE隧道将不连续的子网连接起来,用于组建VPN,实现企业总部和分支间安全的连接。

GRE基本原理

实现过程

报文在GRE隧道中传输包括封装和解封装两个过程。如图1所示,如果X协议报文从Ingress PE向Egress PE传输,则封装在Ingress PE上完成,而解封装在Egress PE上进行。封装后的数据报文在网络中传输的路径,称为GRE隧道。

图1 通过GRE隧道实现X协议互通组网图
 

  • 封装

    1. Ingress PE从连接X协议网络的接口接收到X协议报文后,首先交由X协议处理。

    2. X协议根据报文头中的目的地址在路由表或转发表中查找出接口,确定如何转发此报文。如果发现出接口是GRE Tunnel接口,则对报文进行GRE封装,即添加GRE头。

    3. 根据骨干网传输协议为IP,给报文加上IP头。IP头的源地址就是隧道源地址,目的地址就是隧道目的地址。

    4. 根据该IP头的目的地址(即隧道目的地址),在骨干网路由表中查找相应的出接口并发送报文。之后,封装后的报文将在该骨干网中传输。

    关于封装后详细的报文格式,请参见报文格式

  • 解封装

    解封装过程和封装过程相反。

    1. Egress PE从GRE Tunnel接口收到该报文,分析IP头发现报文的目的地址为本设备,则Egress PE去掉IP头后交给GRE协议处理。

    2. GRE协议剥掉GRE报头,获取X协议报文,再交由X协议对此数据报文进行后续的转发处理。

报文格式

GRE封装后的报文格式如图2所示。

  • 乘客协议(Passenger Protocol):封装前的报文称为净荷,封装前的报文协议称为乘客协议。

  • 封装协议(Encapsulation Protocol):GRE Header是由封装协议完成并填充的,封装协议也称为运载协议(Carrier Protocol)。

  • 传输协议(Transport Protocol或者Delivery Protocol):负责对封装后的报文进行转发的协议称为传输协议。

图2 GRE报文结构
 

GRE头的各字段解释如表1所示。

表1 GRE头的各字段解释
GRE头字段字段解释

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。

Ethernet over GRE协议的协议代码为0x6558。

Checksum

对GRE头及其负载的校验和字段。

Key

关键字字段,隧道接收端用于对收到的报文进行验证。

配置Tunnel接口

背景信息

GRE隧道是通过隧道两端的Tunnel接口建立的,所以需要在隧道两端的设备上分别配置Tunnel接口。对于GRE的Tunnel接口,需要指定其协议类型为GRE、源地址或源接口、目的地址和Tunnel接口IP地址。

  • Tunnel的源地址:配置报文传输协议中的源地址。当配置地址类型时,直接作为源地址使用。当配置类型为源接口时,取该接口的IP地址作为源地址使用。
  • Tunnel的目的地址:配置报文传输协议中的目的地址。
  • Tunnel接口IP地址:为了在Tunnel接口上启用动态路由协议,或使用静态路由协议发布Tunnel接口,需要为Tunnel接口分配IP地址。Tunnel接口的IP地址可以不是公网地址,甚至可以借用其他接口的IP地址以节约IP地址。但是当Tunnel接口借用IP地址后,该地址不能直接通过tunnel口互通,因此在借用IP地址情况下,必须配置静态路由或路由协议先实现借用地址的互通性,才能实现Tunnel的互通。

操作步骤

  1. 执行命令system-view,进入系统视图。
  2. 执行命令interface tunnel interface-number,创建Tunnel接口,并进入Tunnel接口视图。
  3. 执行命令tunnel-protocol gre,配置Tunnel接口的隧道协议为GRE。
  4. (可选)执行命令gre key { plain key-number | [ cipher ] plain-cipher-text },设置GRE隧道的识别关键字。

    当设备之间只有一条物理链路且源地址和目的地址只能取一个时,由于只能配置一个源地址和目的地址相同的Tunnel接口,因此不能承载不同的业务流量。为了解决上述问题,系统支持配置两条或两条以上源地址和目的地址相同的Tunnel接口,通过命令gre key配置不同的GRE Key字段来区分这些GRE隧道,从而可以承载不同的业务流量。

    若将多条GRE隧道配置为相同的源地址和目的地址,建议先配置gre key,否则会提示隧道配置冲突。

  5. 执行命令source { source-ip-address | interface-type interface-number },配置Tunnel的源地址或源接口。

    配置Tunnel的源接口时,有如下注意事项:
    • Tunnel的源接口不能指定为自身GRE隧道的Tunnel接口,但可以指定为其他隧道的Tunnel接口。

    • Tunnel的源地址可以配置为VRRP备份组的虚地址。

    • Bridge-if接口不可配置为Tunnel的源接口。

  6. 执行命令destination [ vpn-instance vpn-instance-name ] dest-ip-address,配置Tunnel的目的地址。

    如果CE设备通过GRE隧道连接到PE,则PE上配置Tunnel的目的地址时,需要指定VPN实例,将Tunnel接口加入私网路由表。

  7. (可选)执行命令tunnel route-via interface-type interface-number { mandatory | preferred },指定GRE隧道的路由出接口。

    缺省情况下,未指定GRE隧道的路由出接口。

    GRE隧道封装后的报文将查找路由转发表进行转发,如果GRE隧道的目的地址存在等价路由且存在多条目的地址相同的GRE隧道,则这些GRE隧道封装的报文将以负载分担进行转发。此时某些GRE隧道封装后报文的实际出接口可能是另一个隧道的源IP接口。如果该链路上下一跳设备配置了URPF(Unicast Reverse Path Forwarding)检测,则以报文的源IP做为目的IP,在转发表中查找源IP对应的接口是否与入接口匹配,因此会发现报文源IP对应的接口与报文的入接口不一致,则认为报文非法并丢弃。为了解决这个问题,可以配置tunnel route-via命令指定GRE隧道路由出接口,使报文严格或优先从隧道的源IP地址所在的出接口转发。

    通过设置mandatorypreferred参数选择下列两种模式:
    • mandatory:严格按照指定的出接口转发流量,如果GRE隧道目的地址的路由出接口不包含指定的出接口时,隧道接口状态为Down,不进行流量转发。

    • preferred:优先按照指定的出接口转发流量,如果GRE隧道目的地址的路由出接口不包含指定的出接口时,则可以选择其他接口转发,隧道接口状态为Up。

  8. (可选)执行命令mtu mtu,配置Tunnel接口的MTU。

    缺省情况下,Tunnel接口的MTU值为1500。

    如果改变Tunnel接口最大传输单元MTU,需要先对接口执行shutdown命令,再执行undo shutdown命令将接口重启,以保证设置的MTU生效。

  9. (可选)执行命令description text,配置接口的描述信息。

    缺省情况下,Tunnel接口默认描述信息为“HUAWEI, AR Series, Tunnel interface-number Interface”。

    例如,缺省情况下,Tunnel0/0/1接口默认描述信息为“HUAWEI, AR Series, Tunnel0/0/1 Interface”。

  10. 指定Tunnel接口的IP地址,选择如下方法之一:

    • 创建IP地址

      • 若是采用GRE隧道实现IPv4协议的互通,必须在Tunnel接口下配置IPv4地址:

        执行命令ip address ip-address { mask | mask-length } [ sub ],配置Tunnel接口的IPv4地址。

      • 若是采用GRE隧道实现IPv6协议的互通,必须在Tunnel接口下配置IPv6地址:

        执行命令ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length },配置Tunnel接口的IPv6地址。

        配置接口的IPv6地址前,需要在系统视图下使用命令ipv6使能IPv6报文转发功能,并在该接口下使用命令ipv6 enable使能接口的IPv6功能。

    • 借用IP地址

      执行命令ip address unnumbered interface interface-type interface-number,配置Tunnel接口借用IP地址。

      设备不支持借用IPv6地址。

  11. (可选)执行命令qos group qos-group-value,配置报文所属的QoS组。

    缺省情况下,系统没有配置报文所属的QoS组。

    • 该命令仅对GRE协议和DSVPN协议生效,其他协议类型支持配置但不生效。
    • 该命令只在报文加封装的过程中生效,解封装过程不生效。即仅对入方向报文生效。
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周三叁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值