Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 

通用路由封装 (GRE)

通用路由封装 (GRE) 是在隧道中封装数据流量的虚拟点到点链路。以下主题讨论 GRE 的隧道、封装和解封过程、配置 GRES 和验证 GREs 是否工作。

了解通用路由封装

通用路由封装 (GRE) 提供专用路径,用于通过其他公共网络通过封装(或隧道)数据包传输数据包。

本主题介绍:

GRE 概述

GRE 封装数据包,将其重定向至设备,用于解封装数据包并路由至最终目的地。这样,源交换机和目标交换机可以像建立虚拟点到点连接一样运行(因为 GRE 应用的外部报头对封装的有效负载数据包是透明的。例如,GRE 隧道允许 RIP 和 OSPF等路由协议跨互联网将数据包从一台交换机转发到另一台交换机。此外,GRE 隧道可以封装组播数据流,以通过互联网进行传输。

GRE 在 RFC 2784 中介绍(过时的早期 RFC 1701 和 1702)。交换机支持 RFC 2784,但并非完全。(有关限制列表,请参阅 配置限制。)

作为 通道源路由器,交换机封装有效负载数据包,以通过隧道传输至目标网络。有效负载数据包先封装在 GRE 数据包中,然后 GRE 数据包封装在交付协议中。执行通道 远程路由器角色 的交换机提取隧道数据包,将数据包转发至其目标。请注意,您可以使用一个防火墙术语来终止某台交换机上的QFX5100 GRE 隧道。

GRE 隧道

系统通过路由表中建立的路由将数据路由到 GRE 端点。(这些路由可通过路由协议(如 RIP 或 OSPF)静态配置或动态学习。)当 GRE 端点接收数据包时,数据包被解封装并再次路由至其目标地址。

GRE 隧道是 无状态-也就是说,隧道的端点不包含有关远程隧道端点的状态或可用性的信息。因此,如果远程端点无法到达,作为通道源路由器的交换机无法将 GRE 隧道接口的状态更改为关闭。

有关 GRE 隧道的详细信息,请参阅:

在交换机上封装和解封装

封装 — 作为隧道源路由器的交换机按如下方式封装和转发 GRE 数据包:

  1. 当交换机收到要隧道传输的数据包(有效负载)时,它将数据包发送到隧道接口。

  2. 隧道接口将数据封装在 GRE 数据包中并添加一个外部 IP 报头。

  3. IP 数据包将基于外部 IP 报头中的目标地址进行转发。

解封装 — 作为隧道远程路由器的交换机按如下方式处理 GRE 数据包:

  1. 当目标交换机从隧道接口接收 IP 数据包时,外部 IP 报头和 GRE 标头将被删除。

  2. 数据包基于内部 IP 报头进行路由。

交换机上允许的源和目标隧道数

QFX5100 OCX 系列交换机支持 512 个 GRE 隧道,包括使用防火墙过滤器创建的隧道。也就是说,无论使用哪种方法,都总共可以创建 512 个 GRE 隧道。

EX 交换机在通过 GRE 传输 IPv4 或 IPv6 有效负载数据包的交换机之间支持 500 个 GRE 隧道。如果使用了除 IPv4 和 IPv6 之外还有一个安装协议,您可以在交换机之间配置多达 333 个 GRE 隧道。

一台 EX 交换机最多可以配置 20 个隧道源 IP 地址,而每个隧道源 IP 可在第二台交换机上配置多达 20 个目标 IP 地址。因此,两台连接的交换机最多可以有 400 个 GRE 隧道。如果第一台交换机也连接到第三台交换机,则可能的最大隧道数为 500。

GRE 隧道上的服务等级

当网络遇到拥塞和延迟时,可能会丢弃一些数据包。 Junos OS服务等级 (CoS) 将信息流划分为类,当出现拥塞时,您可以对类应用不同级别的吞吐量和数据包丢失,从而设置数据包丢失规则。有关交换机CoS,请参阅 Junos OS CoS 系列交换机概述

以下CoS组件在作为 GRE 通道源路由器或 GRE 通道远程路由器的交换机上可用:

  • 在 GRE 通道源 — 在作为通道源路由器的交换机上,您可以在入口端口或GRE端口上应用 CoS 分类器,隧道数据包上的 CoS 组件支持如下:

    • 仅时间表 — 基于入口端口上的 CoS 分类,您可以在交换机的 GRE 端口上应用 CoS 时间表,以定义输出队列,并控制数据包在 GRE 封装后通过隧道传输。但是,您不能将CoS 重写规则 应用于这些数据包。

    • 时间表和重写规则 - 根据 GRE CoS分类,您可将时间表和重写规则应用于通过隧道传输的封装数据包。

  • 在 GRE 隧道端点 — 如果交换机是隧道远程路由器,您可以在 GRE 端口和时间表上应用 CoS 分类器,并重写出口端口上的规则,以控制从出口端口输出的解封装 GRE 数据包的传输。

将防火墙过滤器应用于 GRE 流量

防火墙过滤器提供的规则可定义是允许、拒绝还是转发通过交换机接口的数据包。(有关详细信息,请参阅 EX 系列交换机的防火墙过滤器概述。)由于 GRE 执行封装和解封装,因此您将受限于在哪里可以应用防火墙过滤器过滤隧道数据包,以及哪个标头将受到影响。 表 1 列出了这些约束条件。

表 1:隧道数据包的防火墙过滤器应用点

端点类型

入口接口 出口接口

源(封装)

内部标头

外部标头

远程(解封装)

无法过滤入口接口上的数据包

内部标头

使用防火墙过滤器对交换机、交换机QFX5100和 OCX 系列交换机QFX10000 GRE 流量进行解封装

您还可以使用防火墙过滤器对交换机上的 GRE 流量进行解封装。此功能在可扩展性、性能和灵活性方面提供了重大优势,因为不需要创建隧道接口来执行解封装。例如,您可以使用一个防火墙术语从多个源 IP 地址终止多个隧道。请参阅 配置防火墙过滤器以解 封装 GRE 流量 ,了解如何为此配置防火墙过滤器的信息。

配置限制

表 2 列出了 GRE 不支持的功能。

表 2: GRE 不支持的功能
EX 交换机 QFX 交换机

MPLS GRE 隧道的传输

MPLS GRE 隧道的传输

GRE 活动

GRE 活动

已分片数据包的 GRE 密钥、有效负载数据包分片和序列号

已分片数据包的 GRE 密钥、有效负载数据包分片和序列号

BGP动态隧道

BGP动态隧道

外部 IP 地址必须为 IPv4

外部 IP 地址必须为 IPv4

虚拟路由实例

在 QFX10002、QFX10008 和 QFX5K 系列交换机上,如果使用底层 ECMP 下一跳跃(而不是单播下一跃点)配置 GRE 隧道,GRE 隧道封装失败,网络流量将丢弃

GRE 分布式模式的双向转发检测 (BFD) 协议

OSPF限制 — 在 GRE OSPF上启用路由会创建两个到目标的成本相等的路由:一个通过以太网网络或上行链路接口,另一个通过隧道接口。如果数据通过隧道接口路由,则隧道可能出现故障。为保持接口正常运行,建议使用静态路由、禁用OSPF接口上的配置,或者配置对等方不通过隧道接口播发隧道目标。

QFX 系列交换机不支持在两个不同的路由实例中配置 GRE 接口和底层隧道源接口。如果尝试此配置,则会导致提交错误。

配置通用路由封装隧道

通用路由封装 (GRE) 提供专用路径,用于通过其他公共网络通过封装(或隧道)数据包传输数据包。GRE 通道通过封装或解封装流量的隧道端点完成。

您还可以使用防火墙过滤器对交换机和 OCX 系列交换机上的 GRE QFX5100进行解封装。此功能在可扩展性、性能和灵活性方面提供了重大优势,因为不需要创建隧道接口来执行解封装。例如,您可以使用一个防火墙术语从多个源 IP 地址终止多个隧道。有关此功能的信息,请参阅 配置防火墙 过滤器以解封装 GRE 流量 。

要配置交换机上的 GRE 通道端口:

  1. 确定交换机上的网络端口或上行链路端口以转换为 GRE 通道端口。

  2. 将端口配置为 GRE 通道服务的通道端口:

本主题将介绍:

配置 GRE 通道

要配置 GRE 通道接口,

  1. 创建一个使用单元号和地址的 GRE 接口:
    注意:

    接口的库名称必须为 gr-0/0/0

    这是一个伪接口,您指定的地址可以是任何 IP 地址。路由表必须指定为将通过隧道传输的任何数据包 gr-0/0/0.x 的传出接口。

    如果在作为 虚拟机箱 成员的 QFX5100 交换机上配置 GRE 接口,然后稍后更改交换机的 虚拟机箱 成员号,则 GRE 接口的名称不会以任何方式更改(因为它是伪接口)。例如,如果将成员编号从 更改为 0 5 ,GRE 接口名称 不会 从 更改为 gr-0/0/0.x gr-5/0/0.x

  2. 为逻辑接口指定隧道源地址:
  3. 指定目标地址:

    目标地址必须通过静态或动态路由到达。如果使用静态路由,必须先获得目标MAC 地址(例如使用 ),才能通过隧道转发用户 ping 流量。

注意:

在 QFX10002 和 QFX10008 交换机上,如果使用底层 ECMP 下一跳跃(而不是单播下一跃点)配置 GRE 隧道,GRE 隧道封装失败,网络流量将丢弃。

注意:

对于交换机,GRE 实施中当前不支持间接出口下一QFX10000跳跃。

验证通用路由封装隧道是否正常工作

目的

验证通用路由封装 (GRE) 接口是否发送隧道流量。

行动

使用 命令显示有关指定 GRE 接口的状态信息 show interfaces

意义

输出表示 GRE 接口 gr-0/0/0 已启动。输出显示物理接口的名称以及此接口的信息流统计信息---在物理接口上接收和输出字节和数据包的数量以及接收和传输的速率。