第 3 层 VPN 中的路由实例
本主题讨论在第 3 层 VPN 中配置路由实例
第 3 层 VPN 中的路由实例
路由实例是路由表、接口和路由协议参数的集合。接口集属于路由表,路由协议参数控制路由表中的信息。每个路由实例都有一个唯一的名称和相应的 IP 单播表。
要在 JUNOS 软件中实施第 3 层 VPN,请为每个 VPN 配置一个路由实例。仅在 PE 路由器上配置路由实例。每个 VPN 路由实例均由以下组件构成:
VRF 表 — 在每个 PE 路由器上,您为每个 VPN 配置一个 VRF 表。
使用 VRF 表的一组接口 — 每个直接连接的 CE 路由器的 逻辑接口 必须与 VRF 表相关联。如果 VPN 中的多个 CE 路由器直接连接到 PE 路由器,则可以将多个接口与同一 VRF 表关联。
策略规则 — 这些规则可控制路由从 VRF 表导入和导出路由。
一个或多个路由协议,用于将 CE 路由器的路由安装到 VRF 表中 — 您可以使用 BGP、OSPF 和 RIP 路由协议,并且可以使用静态路由。
在 3 层 VPN 中的路由实例的环路接口上配置逻辑单元
对于第 3 层 VPN(VRF 路由实例),您可以将环路接口上的逻辑单元配置到您在路由器上配置的每个 VRF 路由实例中。通过将 VRF 路由实例与环路接口上的逻辑单元相关联,您可以轻松识别 VRF 路由实例。
这样做对故障排除很有帮助:
它允许您从第 3 层 VPN 中的本地 PE 路由器对远程 CE 路由器进行 ping。有关更多信息,请参阅 示例:故障排除第 3 层 VPN。
它能确保路径最大传输单元 (MTU) 检查源自 VRF 或虚拟路由器路由实例的信息流是否正常运行。有关详细信息,请参阅 配置路径 MTU 检查 VPN 路由实例。
您也可为回传接口上的逻辑单元配置防火墙过滤器;此配置允许您过滤与之关联的 VRF 路由实例的流量。
以下介绍防火墙过滤器如何影响 VRF 路由实例,具体取决于它们是在默认环路接口、VRF 路由实例还是两者的某种组合上配置。“默认环路接口”是指 lo0.0
(与默认路由表相关联),而“VRF 回传接口”是指 lo0.n
在 VRF 路由实例中配置的接口。
如果在默认环路接口上配置过滤器 A 和 VRF 回传接口上的过滤器 B,则 VRF 路由实例将使用过滤器 B。
如果在默认环路接口上配置过滤器 A 但未在 VRF 回传接口上配置过滤器,则 VRF 路由实例不会使用过滤器。
如果在默认回传接口上配置过滤器 A 但未配置 VRF 回传接口,则 VRF 路由实例将使用过滤器 A。对于 MX80 设备,行为略有不同:如果在默认回传接口上配置过滤器但未配置 VRF 回传接口,则 VRF 路由实例仅使用分配给默认环路的输入过滤器(不会使用默认回传的输出过滤器)。
对于某些 ACX 系列通用城域网路由器(ACX1000、ACX2000、ACX4000 和 ACX5000),默认回传过滤器必须处于与其过滤器的入口流量相同的路由或虚拟路由和转发 (VRF) 中。也就是说,在这些设备上,默认回传过滤器不能用于通过属于不同路由实例的接口的信息流。
要在环路接口上配置逻辑单元,请包括以下 unit
语句:
unit number { family inet { address address; } }
您可以在以下层次结构级别中包含此语句:
[edit interfaces lo0]
[edit logical-systems logical-system-name interfaces lo0]
要将防火墙过滤器与环路接口上的逻辑单元相关联,请包括以下 filter
语句:
filter { input filter-name; }
您可以在以下层次结构级别中包含此语句:
[edit interfaces lo0 unit unit-number family inet]
[edit logical-systems logical-system-name interfaces lo0 unit unit-number family inet]
要在 lo0.n
VRF 路由实例的配置中包括接口(其中 n
指定逻辑单元),请包括以下语句:
interface lo0.n;
您可以在以下层次结构级别中包含此语句:
[edit routing-instances routing-instance-name]
[edit logical-systems logical-system-name routing-instances routing-instance-name]
在 VPN 中的 PE 路由器上配置路由实例
您需要为参与 VPN 的每个 PE 路由器上的每个 VPN 配置路由实例。本节中概述的配置过程适用于第 2 层 VPN、第 3 层 VPN 和 VPLS。其他配置章节中的相应部分介绍了特定于每种 VPN 类型的配置步骤。
要为 VPN 配置路由实例,请包括以下语句:
description text; instance-type type; interface interface-name; route-distinguisher (as-number:number | ip-address:number); vrf-import [ policy-names ]; vrf-export [ policy-names ]; vrf-target { export community-name; import community-name; }
您可以在以下层次结构级别中包含以下语句:
[edit routing-instances routing-instance-name]
[edit logical-systems logical-system-name routing-instances routing-instance-name]
要配置 VPN 路由实例,请执行以下部分中的步骤:
配置 VPN 的路由实例名称
VPN 的路由实例名称最多可为 128 个字符,并且可以包含字母、数字和连字符。在 Junos OS 9.0 及更高版本中,您不能再指定 default
为实际路由实例名称。您也不能使用任何特殊字符(! @ # $ % ^ & * , +< >: ;)在路由实例名称中。
在 Junos OS 9.6 及更高版本中,只有在未配置逻辑系统的情况下,才能在路由实例名称中包含斜杠 (/)。也就是说,如果明确配置了默认以外的逻辑系统,则不能将斜线字符包含在路由实例名称中。
使用 语句指定路由实例名称 routing-instance
:
routing-instance routing-instance-name {...}
您可以在以下层次结构级别中包含此语句:
[edit]
[edit logical-systems logical-system-name]
配置说明
要提供路由实例的文本说明,请包括该 description
语句。如果文本包含一个或多个空格,请用引号 (“ ”) 括起来。命令输出 show route instance detail
中显示您包括的任何描述性文本,不影响路由实例的操作。
要配置文本说明,请包括语 description
句:
description text;
您可以在以下层次结构级别中包含此语句:
[edit routing-instances routing-instance-name]
[edit logical-systems logical-system-name routing-instances routing-instance-name]
配置实例类型
您配置的实例类型因配置第 2 层 VPN、第 3 层 VPN、VPLS 或虚拟路由器而异。通过包括语句指定 instance-type
实例类型:
要在 PE 路由器上启用第 2 层 VPN 路由,请包括该
instance-type
语句并指定值l2vpn
:instance-type l2vpn;
要在 PE 路由器上启用 VPLS 路由,请包括该
instance-type
语句并指定值vpls
:instance-type vpls;
第 3 层 VPN 要求每个 PE 路由器都有一个 VPN 路由和转发 (VRF) 表,用于在 VPN 内分配路由。要在 PE 路由器上创建 VRF 表,请包括语
instance-type
句并指定值vrf
:instance-type vrf;
注意:VRF 路由实例不支持基于路由引擎的采样。
要启用虚拟路由器路由实例,请包括语
instance-type
句并指定值virtual-router
:instance-type virtual-router;
您可以在以下层次结构级别中包含此语句:
[edit routing-instances routing-instance-name]
[edit logical-systems logical-system-name routing-instances routing-instance-name]
为 VPN 路由配置接口
在每个 PE 路由器上,您必须配置 VPN 流量在 PE 和 CE 路由器之间传送的接口。
下面介绍如何为 VPN 配置接口的部分:
VPN 路由通用配置
本节中所述的配置适用于所有类型的 VPN。对于第 3 层 VPN 和载波载体 VPN,请先完成本节中所述的配置,然后再继续执行特定于这些主题的接口配置部分。
要为 VPN 路由配置接口,请包括以下 interface
语句:
interface interface-name;
您可以在以下层次结构级别中包含此语句:
[edit routing-instances routing-instance-name]
[edit logical-systems logical-system-name routing-instances routing-instance-name]
以以下格式指定接口名称的物理和逻辑部分:
physical.logical
例如,在 at-1/2/1.2
中, at-1/2/1
是接口名称的物理部分, 2
是逻辑部分。如果不指定接口名称的逻辑部分,则默认设置值0
。
逻辑接口只能与一个路由实例相关联。如果在[edit protocols]
层次结构级别上配置协议的主实例时指定interfaces all
路由协议,并且在层次结构级别或[edit logical-systems logical-system-name routing-instances routing-instance-name]
层次结构级别上配置 VPN 路由[edit routing-instances routing-instance-name]
的特定接口,则后一个接口语句优先,而接口仅用于 VPN。
如果在[edit protocols]
[edit routing-instances routing-instance-name]
层次结构级别和层级或[edit logical-systems logical-system-name routing-instances routing-instance-name]
层级显式配置同一接口名称,则提交配置的尝试将失败。
为第 3 层 VPN 配置接口
在层级配置第 3 层 VPN 接口时,在配置逻辑接口 [edit interfaces]
时也必须进行配置 family inet
:
[edit interfaces] interface-name { unit logical-unit-number { family inet; } }
为载波至载波 VPN 配置接口
配置载波至载波 VPN 时,除了为 PE 和 CE 路由器之间的接口配置语句之外family inet
,还需要family mpls
配置语句。对于载波至载波 VPN,配置逻辑接口如下:
[edit interfaces] interface-name { unit logical-unit-number { family inet; family mpls; } }
如果在逻辑接口上配置 family mpls
,然后为非载波运营商路由实例配置此接口, family mpls
则该语句将自动从逻辑接口的配置中删除,因为不需要。
在 VPN 接口上配置单播 RPF
对于承载 IP 版本 4 或版本 6(IPv4 或 IPv6) 流量的 VPN 接口,可通过配置单播反向路径转发 (RPF) 来减少拒绝服务 (DoS) 攻击的影响。单播 RPF 有助于确定攻击源,并拒绝启用单播 RPF 的接口上意外源地址的数据包。
您可以在 VPN 接口上配置单播 RPF,方法是在接口上启用单播 RPF 并在层次结构级别上[edit routing-instances routing-instance-name]
包括interface
语句。
您无法在面向核心的接口上配置单播 RPF。您只能在 PE 路由器的 CE 路由器到 PE 路由器接口上配置单播 RPF。但是,对于虚拟路由器路由实例,您在路由实例中指定的所有接口上都支持单播 RPF。
有关如何在 VPN 接口上配置单播 RPF 的信息,请参阅 了解单播 RPF(路由器)。
配置路由区分器
您在 PE 路由器上配置的每个路由实例都必须有一个与之关联的独特路由区分符。VPN 路由实例需要路由区分符来帮助 BGP 区分从不同 VPN 接收的潜在相同网络层可访问性信息 (NLRI) 消息。如果使用相同的路由识别器配置不同的 VPN 路由实例,则提交失败。
对于第 2 层 VPN 和 VPLS,如果已配置语 l2vpn-use-bgp-rules
句,则必须为参与特定路由实例的每个 PE 路由器配置唯一路由区分符。
对于其他类型的 VPN,建议为参与路由实例的每个 PE 路由器使用唯一的路由区分符。尽管对于相同 VPN 路由实例(第 2 层 VPN 和 VPLS 除外),您可以在所有 PE 路由器上使用相同的路由区分符),但如果使用唯一路由区分符,则可以确定路由源自 VPN 中的 CE 路由器。
要在 PE 路由器上配置路由区分符,请包括以下 route-distinguisher
语句:
route-distinguisher (as-number:number | ip-address:number);
有关可包含此语句的层次结构级别列表,请参阅此语句的语句摘要部分。
路由区分器是一个 6 字节值,您可以在以下格式之一中指定:
as-number
:number
,其中as-number
为自治系统 (AS) 编号(2 字节值),是number
任何 4 字节值。AS 编号的范围为 1 到 65,535。我们建议您使用互联网编号分配机构 (IANA) 分配的非专用 AS 编号,最好是互联网服务提供商 (ISP) 自己的或客户自己的 AS 编号。ip-address
:number
,ip-address
IP 地址在哪里(4 字节值),是number
任何 2 字节值。IP 地址可以是任何全球唯一的单播地址。我们建议您使用语句中配置的router-id
地址,即分配的前缀范围内的非私有地址。
配置自动路由识别器
如果在[edit routing-options]
层级配置route-distinguisher-id
语句,将自动将路由区分器分配给路由实例。如果除语句外route-distinguisher-id
还配置语route-distinguisher
句,则为route-distinguisher
取代所生成route-distinguisher-id
的值而配置的值。
要自动分配路由区分器,请包括以下 route-distinguisher-id
语句:
route-distinguisher-id ip-address;
您可以在以下层次结构级别中包含此语句:
[edit routing-options]
[edit logical-systems logical-system-name routing-options]
1 类路由识别器将使用格式 ip-address:number
自动分配给路由实例。IP 地址由 route-distinguisher-id
语句指定,并且路由实例的编号为唯一。
在 VPN 中配置虚拟路由器路由实例
虚拟路由器路由实例(如 VRF 路由实例)为每个实例维护单独的路由和转发表。但是,虚拟路由器路由实例不需要 VRF 路由实例所需的许多配置步骤。具体来说,您不需要在服务提供商路由器之间配置路由区分符、路由表策略( vrf-export
、 vrf-import
和 route-distinguisher
语句)或 MPLS。
通过包括以下语句来配置虚拟路由器路由实例:
description text; instance-type virtual-router; interface interface-name; protocols { ... }
您可以在以下层次结构级别中包含以下语句:
[edit routing-instances routing-instance-name]
[edit logical-systems logical-system-name routing-instances routing-instance-name]
以下部分介绍如何配置虚拟路由器路由实例:
在服务提供商路由器之间配置路由协议
服务提供商路由器需要能够交换路由信息。您可以为层次结构级别的虚拟路由器路由实例 protocols
语句配置 [edit routing-instances routing-instance-name]
配置配置以下协议:
BGP
IS-IS
自民党
OSPF
协议无关组播 (PIM)
把
您也可配置静态路由。
虚拟路由器路由实例不支持 IBGP 路由反射。
如果在虚拟路由器实例下配置 LDP,则默认情况下,LDP 路由放置在路由实例的 inet.0 和 inet.3 路由表中(例如示例.inet.0 和示例.inet.3)。要将 LDP 路由限制为仅路由实例的 inet.3 表,请包括以下 no-forwarding
语句:
no-forwarding;
您可以在以下层次结构级别中包含此语句:
[edit routing-instances routing-instance-name protocols ldp]
[edit logical-systems logical-system-name routing-instances routing-instance-name protocols ldp]
仅将 LDP 路由限制为 inet.3 路由表时,inet.0 路由表中的相应 IGP 路由可重新分配并通告到其他路由协议中。
有关路由表的信息,请参阅 了解 Junos OS 路由表。
在参与的路由器之间配置逻辑接口
您必须为参与路由实例的每个客户路由器以及参与路由实例的每个 P 路由器配置一个接口。每个虚拟路由器路由实例都需要为参与实例的所有 P 路由器提供自己的单独逻辑接口。要为虚拟路由器实例配置接口,请包括以下 interface
语句:
interface interface-name;
您可以在以下层次结构级别中包含此语句:
[edit routing-instances routing-instance-name]
[edit logical-systems logical-system-name routing-instances routing-instance-name]
以以下格式指定接口名称的物理和逻辑部分:
physical.logical
例如,在 at-1/2/1.2
中, at-1/2/1
是接口名称的物理部分, 2
是逻辑部分。如果未指定接口名称的逻辑部分,则 0
默认设置。
您还必须在层次结构级别上配置接口 [edit interfaces]
。
在提供商路由器之间提供这种逻辑接口的一种方法是,在它们之间配置隧道。您可以在提供商路由器之间配置 IP 安全 (IPsec)、通用路由封装 (GRE) 或 IP-IP 隧道,从而终止虚拟路由器实例中的隧道。
有关如何配置隧道和接口的信息,请参阅 Junos OS 路由设备服务接口库。
配置 VPN 路由实例的路径 MTU 检查
默认情况下,M 系列路由器(M320 路由器除外)禁用 VPN 路由实例的最大传输单元 (MTU) 检查,并为 M320 路由器启用。在 M 系列路由器上,您可以为在 VRF 路由实例和虚拟路由器路由实例上路由的单播流量的传出接口配置路径 MTU 检查。
启用 MTU 检查时,当遍历路由实例的数据包超过 MTU 大小且已设置位时,路由平台将 do-not-fragment
发送互联网控制消息协议 (ICMP) 消息。ICMP 消息使用 VRF 本地地址作为其源地址。
要使 MTU 检查在路由实例中工作,您必须在层次结构级别中[edit chassis]
包括vrf-mtu-check
语句,并且至少将一个包含 IP 地址的接口分配给路由实例。
有关路径 MTU 检查的详细信息,请参阅 Junos OS 路由设备管理库。
要配置路径 MTU 检查,请执行以下部分中所述的任务:
启用 VPN 路由实例的路径 MTU 检查
要对在 VRF 或虚拟路由器路由实例上路由的单播流量的传出接口启用路径检查,请在层次结构级别中[edit chassis]
包含vrf-mtu-check
语句:
[edit chassis] vrf-mtu-check;
将 IP 地址分配给 VPN 路由实例
为了确保路径 MTU 检查正常运行,每个 VRF 或虚拟路由器路由实例至少必须有一个 IP 地址。如果 IP 地址与路由实例无关,则不能发送 ICMP 回复消息。
通常,VRF 或虚拟路由器路由实例 IP 地址从与为该路由实例配置的接口相关联的 IP 地址之间提取。如果与 VRF 或虚拟路由器路由实例关联的接口均未配置 IP 地址,则需要显式配置具有 IP 地址的逻辑环路接口。然后,此接口必须与路由实例相关联。有关详细信息,请参阅 在第 3 层 VPN 中的路由实例环路接口上配置逻辑单元 。