Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

通用路由封装 (GRE)

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

了解通用路由封装

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

本主题将介绍如下内容:

GRE概述

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

RFC 2784 中介绍了 GRE(淘汰了早期的 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 的详细信息,请参阅 适用于 EX 系列交换机的 Junos OS CoS 概述

作为 GRE 隧道源路由器或 GRE 隧道远程路由器运行的交换机上提供了以下 CoS 组件:

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

    • 仅计划程序 — 根据入口端口的 CoS 分类,您可以在交换机的 GRE 端口上应用 CoS 计划程序,以定义输出队列,并在 GRE 封装后控制数据包在隧道中的传输。但是,您不能对这些数据包应用 CoS 重写规则

    • 调度程序和重写规则 — 根据 GRE 端口上的 CoS 分类,您可以将调度程序和重写规则应用于通过隧道传输的封装数据包。

    注意:

    不能在接口上 gr- 配置 BA 分类器。您必须使用防火墙过滤器(多域分类器)对接口上的 gr- 流量进行分类。

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

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

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

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

端点类型

入口接口 出口接口

源(封装)

内部标头

外部标头

远程(解封装)

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

内部标头

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

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

配置限制

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

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

MPLS over GRE 隧道

MPLS over 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 隧道是通过封装或解封装流量的隧道端点完成的。

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

要在交换机上配置 GRE 隧道端口,请执行以下操作:

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

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

注意:

对于QFX10000,默认情况下会创建 gr-0/0/0 接口。此外,您也无需配置语 set fpc slot pic pic-number tunnel-port port-number tunnel-services句。

本主题将介绍如下内容:

配置 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 隧道封装将失败,并且网络流量将被丢弃。

注意:

QFX10000交换机的 GRE 实现中目前不支持间接出口下一跃点。

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

目的

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

行动

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

意义

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