通用路由封装 (GRE)
了解 GRE、GRE 隧道、封装和解封装以及 GRE 的配置。
通用路由封装 (GRE) 是一种虚拟点对点链路,可在隧道中封装数据流量。以下主题讨论GRE的隧道、封装和解封装过程、配置GRE和验证GRE的工作原理。
GRE 概述
GRE 通过封装(或隧道传输)数据包,提供专用路径,用于通过其他公共网络传输数据包。
GRE 对数据包进行封装,并将其重定向到设备,该设备对数据包进行解封并路由到最终目的地。这使得源交换机和目标交换机能够像彼此之间建立虚拟点对点连接一样运行(因为 GRE 应用的外部报头对封装的有效负载数据包是透明的)。例如,GRE 隧道允许 RIP 和 OSPF 等路由协议通过互联网将数据包从一台交换机转发到另一台交换机。此外,GRE 隧道可以封装组播数据流,以便在互联网上传输。
GRE 在 RFC 2784 中进行了描述(早期的 RFC 1701 和 1702 已过时)。交换机支持 RFC 2784,但不完全支持。
作为 隧道源路由器,交换机封装有效负载数据包,以便通过隧道传输到目标网络。有效负载数据包首先封装在 GRE 数据包中,然后将 GRE 数据包封装在交付协议中。执行 隧道远程路由器 角色的交换机提取隧道数据包,并将数据包转发到其目标。请注意,您可以使用一个防火墙术语来终止 QFX5100 交换机上的多个 GRE 隧道。
查看 特定于平台的 GRE 行为 部分,了解与您的模板相关的注释。
GRE 隧道
系统通过路由表中建立的路由将数据路由到 GRE 端点。(这些路由可以通过 RIP 或 OSPF 等路由协议进行静态配置或动态学习。)GRE 端点收到数据包时,该数据包将被解封并再次路由到其目标地址。
GRE 隧道是 无状态的,也就是说,隧道的端点不包含有关远程隧道端点的状态或可用性的信息。因此,如果远程端点无法访问,作为隧道源运行的交换机路由器无法将 GRE 隧道接口的状态更改为故障。
有关 GRE 隧道的详细信息,请参阅:
交换机上的封装和解封装
封装 — 作为隧道源路由器运行的交换机封装和转发 GRE 数据包,如下所示:
当交换机收到要通过隧道传输的数据包(有效负载)时,会将数据包发送至隧道接口。
隧道接口将数据封装在 GRE 数据包中,并添加一个外部 IP 报头。
IP 数据包根据外部 IP 报头中的目的地址进行转发。
解封装 — 作为隧道远程路由器运行的交换机处理 GRE 数据包,如下所示:
当目标交换机从隧道接口收到 IP 数据包时,外部 IP 报头和 GRE 报头将被移除。
数据包会根据内部 IP 报头进行路由。
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 确定了这些约束。
| 端点类型 | 入口接口 | 出口接口 |
| 源(封装) |
内部报头 |
外部标头 |
| 远程(解封装) |
无法过滤入口接口上的数据包 |
内部报头 |
使用防火墙过滤器对 GRE 流量进行解封装
您还可以使用防火墙过滤器对交换机上的 GRE 流量进行解封装。此功能在可扩展性、性能和灵活性方面具有显著优势,因为您无需创建隧道接口即可执行解封装。例如,您可以使用一个防火墙术语终止来自多个源 IP 地址的多个隧道。有关如何为此目的配置防火墙过滤器的信息,请参阅配置 防火墙过滤器以解封装 GRE 流量 。
配置通用路由封装 (GRE) 隧道
通用路由封装 (GRE) 通过封装(或隧道传输)数据包,提供专用路径,用于通过其他公共网络传输数据包。GRE 隧道通过封装或解封装流量的隧道端点来完成。
使用 GRE 确认对特定功能的平台和版本支持。
您还可以使用防火墙过滤器对 GRE 流量进行解封装。此功能在可扩展性、性能和灵活性方面具有显著优势,因为您无需创建隧道接口即可执行解封装。例如,您可以使用一个防火墙术语终止来自多个源 IP 地址的多个隧道。有关此功能的更多信息,请参阅 配置防火墙过滤器以解封装 GRE 流量。
要在交换机上配置 GRE 隧道端口:
-
确定交换机上要转换为 GRE 隧道端口的网络端口或上行链路端口。
-
将端口配置为 GRE 隧道服务的隧道端口:
[edit chassis]user@switch# set fpc slot pic pic-number tunnel-port port-number tunnel-services
对于 QFX10000,默认情况下会创建 gr-0/0/0 接口。此外,您无需配置该 set fpc slot pic pic-number tunnel-port port-number tunnel-services语句。
本主题将介绍如下内容:
配置 GRE 隧道
要配置 GRE 隧道接口,请执行以下作:
在 QFX10002 和 QFX10008 交换机上,如果使用底层 ECMP 下一跃点(而非单播下一跃点)配置 GRE 隧道,则 GRE 隧道封装将失败,网络流量将被丢弃。
QFX10000 交换机的 GRE 实施中目前不支持间接出口下一跃点。
验证通用路由封装隧道是否工作正常
目的
验证通用路由封装 (GRE) 接口是否正在发送隧道流量。
行动
使用命令 show interfaces 显示有关指定 GRE 接口的状态信息。
user@switch> show interfaces gr-0/0/0.0
Physical interface: gr-0/0/0, Enabled, Physical link is Up
Interface index: 132, SNMP ifIndex: 26
Type: GRE, Link-level type: GRE, MTU: Unlimited, Speed: 800mbps
Device flags : Present Running
Interface flags: Point-To-Point SNMP-Traps
Input rate : 0 bps (0 pps)
Output rate : 0 bps (0 pps)
Logical interface gr-0/0/0.0 (Index 68) (SNMP ifIndex 47)
Flags: Point-To-Point SNMP-Traps 16384
IP-Header 10.1.1.2:10.1.1.1:47:df:64:0000000000000000 Encapsulation: GRE-NULL
Input packets : 0
Output packets: 0
Protocol inet, MTU: 1476
Flags: None
Addresses, Flags: Is-Primary
Local: 10.0.0.0
意义
输出指示 GRE 接口 gr-0/0/0 已开启。输出显示物理接口的名称以及此接口的流量统计信息---物理接口上接收和传输输入和输出字节和数据包的数量和速率。
特定于平台的 GRE 行为
使用 通用路由封装 (GRE) 来确认平台和版本对特定功能的支持。
使用下表查看平台的特定于平台的行为:
| 平台 | 差异 |
|---|---|
| QFX 系列交换机 |
|
| EX 系列交换机 | 支持 GRE 的 EX 系列交换机:
|