通用路由封装 (GRE)
通用路由封装 (GRE) 是一种虚拟的点对点链路,用于将数据流量封装在隧道中。以下主题讨论 GRE 的隧道、封装和解封装过程、配置 GRE 以及验证 GRE 的工作原理。
了解通用路由封装
通用路由封装 (GRE) 通过封装(或隧道)数据包,提供通过其他公共网络传输数据包的专用路径。
本主题介绍:
GRE概述
GRE 封装数据包并将其重定向到对数据包进行解封装并将其路由到最终目的地的设备。这允许源交换机和目标交换机像彼此具有虚拟点对点连接一样运行(因为 GRE 应用的外部标头对封装的有效负载数据包是透明的)。例如,GRE 隧道允许 RIP 和 OSPF 等路由协议通过互联网将数据包从一台交换机转发到另一台交换机。此外,GRE 隧道可以封装组播数据流,以便在互联网上传输。
GRE 在 RFC 2784 中有描述(过时的早期 RFC 1701 和 1702)。这些交换机支持 RFC 2784,但不完全支持 RFC 2784。(有关限制的列表,请参阅 配置限制。
作为 隧道源路由器,交换机封装有效负载数据包,以便通过隧道传输到目标网络。有效负载数据包首先封装在 GRE 数据包中,然后 GRE 数据包封装在传递协议中。充当 隧道远程路由器 角色的交换机提取隧道数据包并将数据包转发到其目标。请注意,您可以使用一个防火墙术语来终止QFX5100交换机上的多个 GRE 隧道。
GRE 隧道
系统通过路由表中建立的路由将数据路由到 GRE 端点。(这些路由可以通过 RIP 或 OSPF 等路由协议进行静态配置或动态学习。当 GRE 端点收到数据包时,该数据包将被解封并再次路由到其目标地址。
GRE 隧道是 无状态的,也就是说,隧道的端点不包含有关远程隧道端点的状态或可用性的信息。因此,如果无法访问远程端点,则作为隧道源路由器运行的交换机无法将 GRE 隧道接口的状态更改为 down。
有关 GRE 隧道的详细信息,请参阅:
交换机上的封装和解封装
封装 — 作为隧道源路由器运行的交换机按如下方式封装和转发 GRE 数据包:
当交换机收到要通过隧道传输的数据包(有效负载)时,会将数据包发送到隧道接口。
隧道接口将数据封装在 GRE 数据包中,并添加外部 IP 报头。
IP 数据包根据外部 IP 报头中的目标地址进行转发。
解封装 — 作为隧道远程路由器运行的交换机按如下方式处理 GRE 数据包:
当目标交换机从隧道接口接收 IP 数据包时,将移除外部 IP 报头和 GRE 报头。
数据包基于内部 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 分类器,在出口端口上应用 CoS 分类器和重写规则,以控制已解封装的 GRE 数据包从出口端口传出。
将防火墙过滤器应用于 GRE 流量
防火墙过滤器提供规则,用于定义是允许、拒绝还是转发在交换机上通过接口的数据包。(有关详细信息,请参阅 EX 系列交换机的防火墙过滤器概述。)由于 GRE 执行的封装和解封装,您在何处可以应用防火墙过滤器来过滤隧道数据包以及哪个标头将受到影响方面受到限制。 表 1 确定了这些约束。
终端节点类型 |
入口接口 | 出口接口 |
源(封装) |
内部标头 |
外部标头 |
远程(解封装) |
无法过滤入口接口上的数据包 |
内部标头 |
使用防火墙过滤器解封装 QFX5100、QFX10000 和 OCX 系列交换机上的 GRE 流量
您还可以使用防火墙过滤器来解封装交换机上的 GRE 流量。此功能在可扩展性、性能和灵活性方面具有显著优势,因为您无需创建隧道接口即可执行解封装。例如,您可以使用一个防火墙术语终止来自多个源 IP 地址的多个隧道。有关如何为此目的配置防火墙过滤器的信息,请参阅 配置防火墙过滤器以解封装 GRE 流量 。
配置限制
表 2 列出了 GRE 不支持的功能。
EX 交换机 | QFX 交换机 |
GRE 隧道上的 MPLS |
GRE 隧道上的 MPLS |
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 隧道端口,请执行以下操作:
-
确定交换机上要转换为 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 已打开。输出显示物理接口的名称和此接口的流量统计信息---物理接口上接收和传输输入和输出字节及数据包的数量和速率。