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 隧道允许 RIP 和 OSPF 等路由协议通过互联网将数据包从一个路由器转发到另一个路由器。此外,GRE 隧道可以封装组播数据流,以便通过互联网传输。

RFC 2784 中介绍了 GRE(早期 RFC 1701 和 1702 已过时)。路由器支持 RFC 2784,但不完全支持。(有关限制列表,请参阅 配置限制。)

作为 隧道源路由器,路由器封装有效负载数据包,以便通过隧道传输至目标网络。首先将有效负载数据包封装在 GRE 数据包中,然后将 GRE 数据包封装在交付协议中。扮演 隧道远程路由器 角色的路由器提取隧道数据包,并将数据包转发到其目标位置。

注意:

不支持 ACX1100-AC 和 ACX500 路由器上的 GRE、NAT 和 IPSec 服务链。

注意:

ACX2200 路由器不支持 2 层基于 GRE。

在 WAN 接口上配置 GRE 隧道时,ACX 路由器支持 OSPF 路由协议。

GRE 隧道

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

GRE 隧道是 无状态的,也就是说,隧道的端点不包含有关远程隧道端点的状态或可用性的信息。因此,作为隧道源路由器的路由器无法将 GRE 隧道接口的状态更改为无法访问远程端点时。

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

路由器上的封装和解封装

封装 — 作为隧道源路由器的路由器可按如下对 GRE 数据包进行封装和转发:

  1. 当路由器收到要建立隧道的数据包(有效负载)时,会将数据包发送至隧道接口。

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

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

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

  1. 当目标路由器从隧道接口接收 IP 数据包时,外部 IP 报头和 GRE 报头将被移除。

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

路由器上允许的源隧道和目标隧道数

ACX 路由器在通过 GRE 传输 IPv4 或 IPv6 有效负载数据包的路由器之间支持多达 64 条 GRE 隧道。

配置限制

ACX 系列路由器目前不提供某些 GRE 隧道功能。在 ACX 路由器上配置 GRE 时,请注意以下限制:

  • 不支持的功能 — ACX 路由器上的 GRE 不支持 以下功能:

    • 基于 GRE 的虚拟路由

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

    • 基于 GRE 隧道的 MPLS

    • GRE 激活验证

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

    • BGP 动态隧道

    • RFC 1701 和 RFC 1702

    • RFC 2890 — GRE 的密钥和序列号扩展

    • 作为交付标头的 IPv6

    • GRE 路径 MTU 发现

    • NNI 为 ECMP 时的负载平衡

    • GRE 接口上的接口统计信息

    • GRE 隧道上的服务和防火墙等级

  • 路由协议 — ACX 路由器不支持 GRE 接口上的路由协议。您需要禁用 [编辑协议] 层次结构下的 GRE 接口上的路由。例如

    注意:

    此限制适用于所有路由协议(如 OSPF、ISIS)。

配置通用路由封装隧道

隧道通过将数据包封装在传输协议(称为 IP 封装协议)中,为通过其他公共网络传输数据包提供专用、安全的路径。通用路由封装 (GRE) 是一种 IP 封装协议,用于通过网络传输数据包。信息通过 GRE 隧道从一个网络发送到另一个网络。

GRE 隧道是通过在现有物理端点和其他逻辑端点上运行的可路由隧道端点来实现的。GRE 隧道将一个端点连接到另一个端点,并在它们之间提供清晰的数据路径。

本主题将介绍:

配置 GRE 隧道端口

要配置路由器上的 GRE 隧道,请将路由器上的网络端口或上行链路端口转换为用于隧道服务的 GRE 隧道端口。每个名为 gr-fpc/pic/port的物理隧道端口都可以有一个或多个逻辑接口,每个都是一个 GRE 隧道。

转换为 GRE 隧道端口后,物理端口不能用于网络流量。

要配置路由器上的 GRE 隧道端口,您需要创建逻辑隧道接口,并将带宽(以每秒千兆位)保留给隧道服务。在 tunnel-services bandwidth (1g | 10g) [edit chassis fpc slot-number pic number] 层次结构级别包括语句。

要配置 GRE 隧道端口,请使用路由器上任何未使用的物理端口创建逻辑隧道接口,如下所示:

这也创建了一个 gr 接口。

有关在 MPC 上配置隧道接口的信息,请参阅 MX 系列路由器上的隧道接口配置概述

将隧道配置为使用通用路由封装

通常,GRE 隧道端口在配置好后就会启动,只要存在有效的隧道源地址或接口正常运行,就会保持正常运行。您可以在端口上配置的每个逻辑接口配置为 GRE 隧道的源或端点。

要配置隧道端口以使用 GRE:

  1. 使用逻辑接口名称和地址配置物理 GRE 端口:
    • 对于基于 GRE 的 IPv4,请指定协议家族 inet

    • 对于基于 GRE 的 IPv6,请指定协议家族 inet6

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

GRE 激活时间概述

通用路由封装 (GRE) 隧道接口没有用于检测隧道何时关闭的内置机制。您可以启用激活消息作为检测机制。

为激活消息启用 GRE 隧道接口时,接口会定期向远程端点发送激活请求数据包。如果 GRE 隧道的数据路径转发在所有点均正确工作,则保持有效响应数据包将返回到发起方。这些激活消息由路由引擎处理。

您可以在物理或逻辑 GRE 隧道接口上配置激活消息。如果在物理接口上配置,则作为物理接口一部分的所有逻辑接口上都会发送激活消息。如果在单个逻辑接口上配置了保持显示只会在该逻辑接口上发送。

您可以配置保持运行消息的发送频率以及接口在将隧道标记为关闭之前等待保持激活响应的时间长度。

激活请求数据包如图 1 所示。

图 1:Keepalive 请求数据包 Keepalive Request Packet

激活有效负载包括一种信息,可确保将激活响应正确地传递到负责 GRE 激活流程的应用程序。

外部 GRE 报头包括:

  • 源 IP 地址 — 发起激活请求的端点的 IP 地址

  • 目标 IP 地址 — 接收激活请求的端点的 IP 地址

  • GRE 协议 ID — IP

内部 GRE 报头包括:

  • 源 IP 地址 — 接收激活请求的端点的 IP 地址

  • 目标 IP 地址 — 发起激活请求的端点的 IP 地址

  • GRE 协议 ID — 数据包转发引擎识别为 GRE 激活数据包的值

注意:

从 Junos OS 17.3R1 版开始,您可以在 MX 系列路由器上配置 IPv6 通用路由封装 (GRE) 隧道接口。这样,您可以通过 IPv6 网络运行 GRE 隧道。可封装在 IPv6 GRE 隧道中的数据包有效负载族包括 IPv4、IPv6、MPLS 和 ISO。不支持 IPv6 交付数据包分片和重组。

要配置 IPv6 GRE 隧道接口,请在层级指定 destination [interfaces gr-0/0/0 unit 0 tunnel] IPv6 地址source

GRE IPv6 不支持 Keepalive。

配置 GRE 激活时间

为 GRE 隧道接口配置保持时间和保持时间

通过在层次结构级别包含语句和hold-time语句[edit protocols oam gre-tunnel interface interface-name],您可以在通用路由封装 (GRE) 隧道接口keepalive-time上配置 keepalives。

注意:

要在 GRE 接口上正确运行 keepalives,还必须在层次结构级别包含语句family inet[edit interfaces interface-name unit unit]。如果未包含此语句,接口将被标记为关闭。

要配置 GRE 隧道接口:

  1. 在层次结构级别配置 GRE 隧道接口 [edit interfaces interface-name unit unit-number] ,其中接口名称为 gr-x/y/z,并将系列设置为 inet
  2. 按照在 PE 和 CE 路由器之间配置 GRE 隧道接口 或根据要求在 PE 路由器之间配置 GRE 隧道接口中的说明,配置其余 GRE 隧道接口 选项。

要为 GRE 隧道接口配置激活时间:

  1. 在 GRE 隧道接口的 [edit protocols] 层级配置操作、管理和维护 (OAM) 协议。

  2. 为 OAM 协议配置 GRE 隧道接口选项。

  3. 为 GRE 隧道接口配置 1 到 50 秒的保持时间。

  4. 配置 5 到 250 秒的保持时间。请注意,暂侯时间必须至少是激活时间的两倍。

显示 GRE 激活时间配置

目的

在 GRE 隧道接口上,将配置的 keepalive 时间值显示为 10,将时间值保留为 30(例如 gr-1/1/10.1)。

行动

要显示 GRE 隧道接口上的配置值,请 show oam gre-tunnel[edit protocols] 层级运行命令:

在 GRE 隧道接口上显示 Keepalive 时间信息

目的

当保持时间和保持时间参数以及保留时间过期时,显示 GRE 隧道接口的当前状态信息。

行动

要验证 GRE 隧道接口(例如 gr-3/3/0.3)上的当前状态信息,请运行 show interfaces gr-3/3/0.3 terseshow interfaces gr-3/3/0.3 extensive 操作命令。

show interfaces gr-3/3/0.3 terse

show interfaces gr-3/3/0.3 extensive

注意:

暂侯时间到期时:

  • 即使接口无法发送或接收流量,GRE 隧道也会保持运行状态。

  • 状态LinkUpGre keepalives adjacency state将。Down

意义

保留时间和保持时间参数的 GRE 隧道接口的当前状态信息将在暂侯时间到期时按预期显示。

在 GRE 隧道上启用分段

要启用通用路由封装 (GRE) 隧道中的 IPv4 数据包分片,请将该隧道的 clear-dont-fragment-bit 语句和最大传输单元 (MTU) 设置作为层级现有 GRE 配置的 [edit interfaces] 一部分:

无论数据包大小如何,此语句都清除数据包标头中的不分片 (DF) 位。如果数据包大小超过隧道 MTU 值,则数据包在封装之前会分片。AS 或多服务 PIC 上可配置的最大 MTU 大小为 9192 字节。

注意:

clear-dont-fragment-bit 语句仅在 MX 系列路由器和除 M320 路由器之外的所有 M 系列路由器上受支持。

注意:

在 SRX 平台上,仅当设备处于数据包或选择性数据包模式时,才支持清除 GRE 隧道上的 DF 位;流模式不支持此功能。因此,在流模式下,尽管在 GRE 接口上配置了 clear-dont-fragment-bit 超过 DF 位的 GRE 接口 MTU 的数据包,但会丢弃。

仅对封装在基于 IPv4 的 GRE 隧道中的 IPv4 数据包启用分片。

注意:

此配置仅在 AS 或多服务接口上的 GRE 隧道上受支持。如果作为标准隧道 PIC 接口上的封装类型提交 gre-fragmentation ,当 PIC 联机时,将显示以下控制台日志消息:

数据包转发引擎会更新 GRE 封装数据包的外部 IP 报头中的 IP 识别字段,以便在分片后可以重组数据包。之前需要配置 clear-dont-fragment-bit 语句或带有 allow-fragmentation 语句的隧道密钥的 CLI 约束检查不再实施。

在启用 MPLS 协议家族的接口上配置 clear-dont-fragment-bit 语句时,必须指定一个 MTU 值。此 MTU 值不得大于支持的最大值 (9192)。