配置 GRE 隧道接口
了解通用路由封装
通用路由封装 (GRE) 通过封装(或隧道)数据包,提供专用、安全的路径,用于通过其他公共网络传输数据包。
本主题介绍:
GRE概述
GRE 封装数据包并将其重定向到对数据包进行解封装并将其路由到最终目的地的设备。这允许源路由器和目标路由器像彼此具有虚拟点对点连接一样运行(因为 GRE 应用的外部标头对封装的有效负载数据包是透明的)。例如,GRE 隧道允许 RIP 和 OSPF 等路由协议通过互联网将数据包从一个路由器转发到另一个路由器。此外,GRE 隧道可以封装组播数据流,以便在互联网上传输。
GRE 在 RFC 2784 中有描述(过时的早期 RFC 1701 和 1702)。路由器支持 RFC 2784,但不完全支持。(有关限制的列表,请参阅 配置限制。
作为 隧道源路由器,路由器封装有效负载数据包,以便通过隧道传输到目标网络。有效负载数据包首先封装在 GRE 数据包中,然后 GRE 数据包封装在传递协议中。执行 隧道远程路由器 角色的路由器提取隧道数据包并将数据包转发到其目标。
不支持 ACX1100-AC 和 ACX500 路由器上的 GRE、NAT 和 IPSec 服务的服务链。
ACX2200路由器不支持 GRE 第 2 层。
在 WAN 接口上配置 GRE 隧道时,ACX 路由器支持 OSPF 路由协议。
GRE 隧道
系统通过路由表中建立的路由将数据路由到 GRE 端点。(这些路由可以通过 RIP 或 OSPF 等路由协议进行静态配置或动态学习。当 GRE 端点收到数据包时,该数据包将被解封并再次路由到其目标地址。
GRE 隧道是 无状态的,也就是说,隧道的端点不包含有关远程隧道端点的状态或可用性的信息。因此,如果无法访问远程端点,则作为隧道源路由器运行的路由器无法将 GRE 隧道接口的状态更改为 down。
有关 GRE 隧道的详细信息,请参阅:
路由器上的封装和解封装
封装 — 作为隧道源路由器运行的路由器按如下方式封装和转发 GRE 数据包:
当路由器收到要通过隧道传输的数据包(有效负载)时,会将数据包发送到隧道接口。
隧道接口将数据封装在 GRE 数据包中,并添加外部 IP 报头。
IP 数据包根据外部 IP 报头中的目标地址进行转发。
解封装 — 作为隧道远程路由器运行的路由器按如下方式处理 GRE 数据包:
当目标路由器从隧道接口接收到 IP 数据包时,将移除外部 IP 报头和 GRE 报头。
数据包基于内部 IP 标头进行路由。
路由器上允许的源隧道和目标隧道数
ACX 路由器在通过 GRE 传输 IPv4 或 IPv6 有效负载数据包的路由器之间支持多达 64 个 GRE 隧道。
配置限制
某些 GRE 隧道功能目前在 ACX 系列路由器上不可用。在 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 接口上禁用路由。例如
[edit] user@host# show protocols ospf { area 0.0.0.0 { interface all; interface gr-0/0/10.0 { disable; } } }
注意:此限制适用于所有路由协议(如 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 隧道端口 ,请使用路由器上任何未使用的物理端口创建逻辑隧道接口,如下所示:
user@host# edit chassis fpc 0 { pic 0 { tunnel-services { port port-number; } } }
这也创建了一个gr-接口。
配置隧道以使用通用路由封装
通常,GRE 隧道端口会在配置后立即启动,只要存在有效的隧道源地址或接口正在运行,它就会一直保持启动状态。您在端口上配置的每个逻辑接口都可以配置为 GRE 隧道的源或端点。
要将隧道端口配置为使用 GRE,请执行以下操作:
GRE 激活时间概述
通用路由封装 (GRE) 隧道接口没有用于检测隧道何时关闭的内置机制。您可以启用激活消息作为检测机制。
为激活消息启用 GRE 隧道接口时,该接口会定期向远程端点发送激活请求数据包。如果 GRE 隧道的数据路径转发在所有点都正常工作,则激活响应数据包将返回给发起方。这些激活消息由路由引擎处理。
您可以在物理或逻辑 GRE 隧道接口上配置激活消息。如果在物理接口上配置,则会在属于物理接口的所有逻辑接口上发送激活消息。如果在单个逻辑接口上配置,则仅在该逻辑接口上发送激活。
您可以配置发送激活消息的频率,以及在将隧道标记为操作关闭之前接口等待激活响应的时间长度。
激活请求数据包如图 1 所示。
激活有效负载包含的信息可确保激活响应正确传递到负责 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 隧道接口,请在层次结构级别指定 IPv6 地址 source
destination
[interfaces gr-0/0/0 unit 0 tunnel]
。
GRE IPv6 不支持激活。
参见
配置 GRE 激活时间
配置 GRE 隧道接口的激活时间和保持时间
通过在层次结构级别包含keepalive-time
[edit protocols oam gre-tunnel interface interface-name]
语句和hold-time
语句,可以在通用路由封装 (GRE) 隧道接口上配置激活。
为了在 GRE 接口上正确操作激活,还必须在[edit interfaces interface-name unit unit]
层次结构级别包含family inet
该语句。如果未包含此语句,则接口将标记为关闭。
要配置 GRE 隧道接口,请执行以下操作:
要为 GRE 隧道接口配置激活时间,请执行以下操作:
在 GRE 隧道接口的层次结构级别配置
[edit protocols]
操作、管理和维护 (OAM) 协议。[edit] user@host# edit protocols oam
为 OAM 协议配置 GRE 隧道接口选项。
[edit protocols oam] user@host# edit gre-tunnel interface interface-name
为 GRE 隧道接口配置 1 到 50 秒的激活时间。
[edit protocols oam gre-tunnel interface interface-name] user@host# set keepalive-time seconds
配置 5 到 250 秒的保持时间。请注意,保持时间必须至少是激活时间的两倍。
[edit protocols oam gre-tunnel interface interface-name] user@host# set hold-time seconds
显示 GRE 激活时间配置
在 GRE 隧道接口上显示激活时间信息
目的
当 GRE 隧道接口上配置了激活时间和保持时间参数以及保留时间到期时,显示该接口的当前状态信息。
行动
要验证 GRE 隧道接口上的当前状态信息(例如 gr-3/3/0.3),请运行 show interfaces gr-3/3/0.3 terse
和 show interfaces gr-3/3/0.3 extensive
操作命令。
显示接口 gr-3/3/0.3 简洁
user@host> show interfaces gr-3/3/0.3 terse Interface Admin Link Proto Local Remote gr-3/3/0.3 up up inet 192.0.2.1/24 mpls
显示接口 GR-3/3/0.3 广泛
user@host> show interfaces gr-3/3/0.3 extensive Logical interface gr-3/3/0.3 (Index 73) (SNMP ifIndex 594) (Generation 900) Flags: Point-To-Point SNMP-Traps 0x4000 IP-Header 10.1.19.11:10.1.19.12:47:df:64:0000000000000000 Encapsulation: GRE-NULL Gre keepalives configured: On, Gre keepalives adjacency state: down ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Traffic statistics: Input bytes : 15629992 Output bytes : 15912273 Input packets: 243813 Output packets: 179476 Local statistics: Input bytes : 15322586 Output bytes : 15621359 Input packets: 238890 Output packets: 174767 Transit statistics: Input bytes : 307406 0 bps Output bytes : 290914 0 bps Input packets: 4923 0 pps Output packets: 4709 0 pps Protocol inet, MTU: 1476, Generation: 1564, Route table: 0 Flags: Sendbcast-pkt-to-re Addresses, Flags: Dest-route-down Is-Preferred Is-Primary ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Destination: 192.0.2/24, Local: 192.0.2.1, Broadcast: 192.0.2.255, Generation: 1366 Protocol mpls, MTU: 1464, Maximum labels: 3, Generation: 1565, Route table: 0
当保留时间到期时:
即使接口无法发送或接收流量,GRE 隧道也会保持运行。
Link
状态将是Up
和Gre keepalives adjacency state
Down
将是 。
意义
保留时间到期时,具有激活时间和保留时间参数的 GRE 隧道接口的当前状态信息将按预期显示。
在 GRE 隧道上启用分段
要在通用路由封装 (GRE) 隧道中启用 IPv4 数据包分段,请将隧道的语句和最大传输单元 (MTU) 设置作为 clear-dont-fragment-bit
层次结构级别现有 [edit interfaces]
GRE 配置的一部分:
[edit interfaces] gr-fpc/pic/port { unit logical-unit-number { clear-dont-fragment-bit; ... family inet { mtu 1000; ... } } }
此语句清除数据包标头中的不分段 (DF) 位,而不考虑数据包大小。如果数据包大小超过隧道 MTU 值,则数据包在封装之前将被分段。可在 AS 或多服务 PIC 上配置的最大 MTU 大小为 9192 字节。
该 clear-dont-fragment-bit
语句仅在 MX 系列路由器和除 M320 路由器之外的所有 M 系列路由器上受支持。
在 SRX 平台上,仅当设备处于数据包或选择性数据包模式时,才支持清除 GRE 隧道上的 DF 位;此功能在流模式下不受支持。因此,在流模式下,尽管已在 GRE 接口上配置了 DF clear-dont-fragment-bit
位,但如果数据包已设置为,但如果已设置了 DF 位,则会丢弃该数据包。
只有在封装在基于 IPv4 的 GRE 隧道中的 IPv4 数据包上才会启用分段。
此配置仅在 AS 或多服务接口上的 GRE 隧道上受支持。如果在标准隧道 PIC 接口上以 gre-fragmentation
封装类型提交,则在 PIC 联机时将显示以下控制台日志消息:
gr-fpc/pic/port: does not support this encapsulation
数据包转发引擎更新 GRE 封装数据包的外部 IP 标头中的 IP 标识字段,以便在分段后可以重组数据包。以前要求您使用该 clear-dont-fragment-bit
语句配置 allow-fragmentation
语句或隧道密钥的 CLI 约束检查不再强制执行。
在启用了 MPLS 协议家族的接口上配置 clear-dont-fragment-bit
语句时,必须指定 MTU 值。此 MTU 值不得大于支持的最大值 (9192)。