重叠 VPN
使用路由表组配置重叠 VPN
在 3 层 VPN 中,客户边缘路由器通常是多个 VPN 的成员。此示例说明了如何配置支持支持多个 VPN 的 客户边缘 路由器的 PE 路由器。 支持这种配置使用称为路由表组的 Junos OS 功能(有时也称为路由信息库 [RIB] 组),此功能允许将路由安装到多个路由表中。路由表组是路由表列表,协议应将其路由安装到其中。
您可为默认实例在 [edit routing-options]
层次结构级别定义路由表组。您不能在 层次结构级别配置路由 [edit routing-instances routing-options]
表组;否则会导致提交错误。
定义路由表组后,可用于多个协议。您还可以将路由表组应用于静态路由。本部分中的配置示例包括这两种类型的配置。
图 1 说明了本部分配置示例的拓扑。本部分中的配置说明了连接到相同 PE 路由器客户边缘路由器之间的本地连接。如果路由器 PE1 仅连接到路由器 CE2 (VPN AB),则无需任何额外配置。以下各节中的配置语句允许 VPN AB 路由器 CE2 与 VPN A 路由器 CE1 和 VPN B 路由器 CE3 通信,而 VPN A 路由器 CE3 直接连接到路由器 PE1。源自远程 PE 路由器(本例中为 PE2 路由器)的 VPN 路由放置在全局 3 层 VPN 路由表 (bgp.l3vpn.inet.0) 中,并按 VRF 导入策略配置规定将具有相应路由目标的路由导入路由表中。目标是从本地填充的单个 VPN 路由表中选择路由。
路由器 PE1 是执行所有过滤和配置修改的地方。因此,仅显示 PE1 的 VPN 配置。路由器客户边缘 VPN 没有任何相关信息,因此您可以正常配置它们。

以下部分讲解了配置重叠 VPN 的多种方法。
以下部分演示了用于配置重叠 VPN 的不同情景,具体取决于 PE 与 客户边缘 路由器之间的路由协议。对于所有这些示例,您需要配置路由表组。
- 配置路由表组
- 在 PE 路由器与路由器客户边缘路由
- 在 PE BGP与 客户边缘 路由器之间配置路由
- 在 PE OSPF 与路由器客户边缘配置路由
- 在 PE 与 BGP 路由器OSPF配置静态、客户边缘路由
配置路由表组
此示例中,路由表组在四个配置情景中很常见。路由表组用于将路由(包括接口、静态、OSPF 和 BGP 路由)安装到默认实例和其他实例的几个路由表中。在路由表组定义中,第一个路由表称为主路由表。(通常,主路由表是如果不配置路由表组,将安装路由的表。其他路由表称为辅助路由表。)
此配置中的路由表组安装路由,如下所示:
vpna-vpnab
将路由安装到路由表中 VPN-A.inet.0 和 VPN-AB.inet.0。vpnb-vpnab
将路由安装到路由表中 VPN-B.inet.0 和 VPN-AB.inet.0。vpnab-vpna_and_vpnb
将路由安装到路由表中 VPN-AB.inet.0、VPN-A.inet.0 和 VPN-B.inet.0。
配置路由表组:
[edit] routing-options { rib-groups { vpna-vpnab { import-rib [ VPN-A.inet.0 VPN-AB.inet.0 ]; } vpnb-vpnab { import-rib [ VPN-B.inet.0 VPN-AB.inet.0 ]; } vpnab-vpna_and_vpnb { import-rib [ VPN-AB.inet.0 VPN-A.inet.0 VPN-B.inet.0 ]; } } }
在 PE 路由器与路由器客户边缘路由
要配置 PE1 路由器与 CE1、CE2 和 CE3 路由器之间的静态路由,您必须为 VPN A、VPN B 和 VPN AB 配置路由实例(您可以在每个实例下配置静态路由):
配置 VPN A 的路由实例
在路由器 PE1 上,配置 VPN A:
[edit] routing-instances { VPN-A { instance-type vrf; interface fe-1/0/0.0; route-distinguisher 10.255.14.175:3; vrf-import vpna-import; vrf-export vpna-export; routing-options { interface-routes { rib-group inet vpna-vpnab; } static { route 10.255.14.155/32 next-hop 192.168.197.141; route 10.255.14.185/32 next-hop 192.168.197.178; } } } }
该 interface-routes
语句将 VPN A 的接口路由安装到路由表组内定义的路由表中 vpna-vpnab
。
语句 static
配置 VPN-A.inet.0 路由表中安装的静态路由。第一个静态路由用于路由器 CE1 (VPN A),第二个路由用于路由器 CE2(位于 VPN AB 中)。
下一跳跃不在 VPN A 中。除非此路由表中安装了来自路由实例 VPN AB 的接口路由,否则路由不能安装在 192.168.197.178
10.255.14.185/32
VPN-A.inet.0 中。包括 interface-routes
VPN AB 配置中的语句可提供此下一跳跃。同样,将 interface-routes
VPN AB 配置中的语句安装到 192.168.197.141
VPN-AB.inet.0 中。
配置 VPN AB 的路由实例
在路由器 PE1 上,配置 VPN AB:
[edit] routing instances { VPN-AB { instance-type vrf; interface fe-1/1/0.0; route-distinguisher 10.255.14.175:9; vrf-import vpnab-import; vrf-export vpnab-export; routing-options { interface-routes { rib-group vpnab-vpna_and_vpnb; } static { route 10.255.14.185/32 next-hop 192.168.197.178; route 10.255.14.155/32 next-hop 192.168.197.141; route 10.255.14.186/32 next-hop 192.168.197.242; } } } }
在此配置中,VPN-AB.inet.0 路由表中安装了以下静态路由:
10.255.14.185/32
用于路由器 CE2(位于 VPN AB 中)10.255.14.155/32
用于路由器 CE1(VPN A 中)10.255.14.186/32
适用于路由器 CE3(VPN B 中)
下一跃点且 192.168.197.141
192.168.197.242
不属于 VPN AB。路由不能安装在 10.255.14.155/32
VPN-AB.inet.0 中,除非此路由表中安装了来自 VPN A 和 VPN B 的 10.255.14.186/32
接口路由。VPN A 和 VPN B 路由实例中的接口路由配置将提供以下下一跳跃。
配置 VPN B 的路由实例
在路由器 PE1 上,配置 VPN B:
[edit] routing instances { VPN-B { instance-type vrf; interface fe-1/0/2.0; route-distinguisher 10.255.14.175:10; vrf-import vpnb-import; vrf-export vpnb-export; routing-options { interface-routes { rib-group inet vpnb-vpnab; } static { route 10.255.14.186/32 next-hop 192.168.197.242; route 10.255.14.185/32 next-hop 192.168.197.178; } } } }
为 VPN B 配置路由实例时,这些静态路由放置在 VPNB.inet.0 中:
10.255.14.186/32
适用于路由器 CE3(VPN B 中)10.255.14.185/32
用于路由器 CE2(位于 VPN AB 中)
下一跳跃不属于 VPN B。除非此路由表中安装了来自 VPN AB 的接口路由,否则路由不能安装在 192.168.197.178
10.255.14.185/32
VPN-B.inet.0 中。VPN AB 中的接口路由配置提供此下一跳跃。
配置 VPN 策略
您为重叠 VPN 配置的 和策略语句与常规 VPN 的策略语句相同,但您在每个 VRF 导出策略中包括 vrf-import
vrf-export
from interface
该语句。此语句将强制每个 VPN 仅声明源自该 VPN 的路由。例如,VPN A 的路由源自 VPN A 和 VPN AB。如果不包含语句,VPN A 通告自己的路由以及 VPN AB 的路由,因此远程 PE 路由器收到相同路由的多个 from interface
通告。包括该语句将限制每个 VPN 仅公布其始发路由,并允许您过滤掉从其他路由表中导入的路由, from interface
以用于本地连接。
在此配置示例中, vpnab-import
策略接受来自 VPN A、VPN B 和 VPN AB 的路由。该 vpna-export
策略仅导出在 VPN A 中发起的路由。同样, vpnb-export
和 vpnab-export
策略仅导出在相应 VPN 中发起的路由。
在路由器 PE1 上,配置以下 VPN 导入和导出策略:
[edit] policy-options { policy-statement vpna-import { term a { from { protocol bgp; community VPNA-comm; } then accept; } term b { then reject; } } policy-statement vpnb-import { term a { from { protocol bgp; community VPNB-comm; } then accept; } term b { then reject; } } policy-statement vpnab-import { term a { from { protocol bgp; community [ VPNA-comm VPNB-comm ]; } then accept; } term b { then reject; } } policy-statement vpna-export { term a { from { protocol static; interface fe-1/0/0.0; } then { community add VPNA-comm; accept; } } term b { then reject; } } policy-statement vpnb-export { term a { from { protocol static; interface fe-1/0/2.0; } then { community add VPNB-comm; accept; } } term b { then reject; } } policy-statement vpnab-export { term a { from { protocol static; interface fe-1/1/0.0; } then { community add VPNB-comm; community add VPNA-comm; accept; } } term b { then reject; } } community VPNA-comm members target:69:1; community VPNB-comm members target:69:2; }
在路由器 PE1 上,应用 VPN 导入和导出策略:
[edit] routing-instances { VPN-A { instance-type vrf; interface fe-1/0/0.0; route-distinguisher 10.255.14.175:3; vrf-import vpna-import; vrf-export vpna-export; routing-options { static { rib-group vpna-vpnab; route 10.255.14.155/32 next-hop 192.168.197.141; route 10.255.14.185/32 next-hop 192.168.197.178; } } } VPN-AB { instance-type vrf; interface fe-1/1/0.0; route-distinguisher 10.255.14.175:9; vrf-import vpnab-import; vrf-export vpnab-export; routing-options { static { rib-group vpnab-vpna_and_vpnb; route 10.255.14.185/32 next-hop 192.168.197.178; } } } VPN-B { instance-type vrf; interface fe-1/0/2.0; route-distinguisher 10.255.14.175:10; vrf-import vpnb-import; vrf-export vpnb-export; routing-options { static { rib-group vpnb-vpnab; route 10.255.14.186/32 next-hop 192.168.197.242; } } } }
对于 VPN A,在 层级包含 语句,以将静态路由直接安装到路由表组内定义的 routing-options
[edit routing-instances routing-instance-name]
路由表中 vpna-vpnab
。对于 VPN AB,配置将静态路由直接安装到路由表组 和 中定义的路由 vpnab-vpna
表中 vpnab-vpnb
。对于 VPN B,配置将静态路由直接安装到路由表组内定义的路由表中 vpnb-vpnab
。
在 PE BGP 与路由器客户边缘配置路由
在此配置示例中,VPN A BGP组将从该会话BGP的路由安装到路由表组内定义的 vpna-site1
vpna-vpnab
路由表中。对于 VPN AB, vpnab-site1
组将从 BGP学到的路由安装到路由表组内定义的 vpnab-vpna_and_vpnb
路由表中。对于 VPN B,组将从 BGP学到的路由 vpnb-site1
安装到路由表组内定义的 vpnb-vpnab
路由表中。此配置不需要接口路由。
VRF 导入和导出策略类似于 在 PE和 客户边缘 路由器之间配置静态路由中定义的策略,但导出协议BGP而非静态路由。在所有 vrf-export
策略上,均使用 from protocol bgp
语句。
在路由器 PE1 上,BGP PE 路由器与 客户边缘路由器之间的配置策略:
[edit] routing-instances { VPN-A { instance-type vrf; interface fe-1/0/0.0; route-distinguisher 10.255.14.175:3; vrf-import vpna-import; vrf-export vpna-export; protocols { bgp { group vpna-site1 { family inet { unicast { rib-group vpna-vpnab; } } peer-as 1; neighbor 192.168.197.141; } } } } VPN-AB { instance-type vrf; interface fe-1/1/0.0; route-distinguisher 10.255.14.175:9; vrf-import vpnab-import; vrf-export vpnab-export; protocols { bgp { group vpnab-site1 { family inet { unicast { rib-group vpnab-vpna_and_vpnb; } } peer-as 9; neighbor 192.168.197.178; } } } } VPN-B { instance-type vrf; interface fe-1/0/2.0; route-distinguisher 10.255.14.175:10; vrf-import vpnb-import; vrf-export vpnb-export; protocols { bgp { group vpnb-site1 { family inet { unicast { rib-group vpnb-vpnab; } } neighbor 192.168.197.242 { peer-as 10; } } } } } }
在 PE OSPF 与 客户边缘 路由器之间配置路由
在此配置示例中,从 VPN A OSPF的路由将安装到路由表组定义的 vpna-vpnab
路由表中。对于 VPN AB,从 OSPF学到的路由将安装到路由表组定义的 vpnab-vpna_and_vpnb
路由表中。对于 VPN B,从 OSPF获悉的路由将安装到路由表组定义的 vpnb-vpnab
路由表中。
VRF 导入和导出策略类似于 在 PE 和 客户边缘 路由器之间配置静态路由和在 PE 和 客户边缘 路由器之间配置 BGP中定义的策略,但导出协议为 OSPF 而不是 BGP 或静态路由。因此,在所有 vrf-export
策略上,您均使用 from protocol ospf
语句而不是 from protocol <static | bgp>
语句。
在路由器 PE1 上,OSPF PE 路由器与 客户边缘 路由器之间的配置策略:
[edit] routing-instances { VPN-A { instance-type vrf; interface fe-1/0/0.0; route-distinguisher 10.255.14.175:3; vrf-import vpna-import; vrf-export vpna-export; protocols { ospf { rib-group vpna-vpnab; export vpna-import; area 0.0.0.0 { interface fe-1/0/0.0; } } } } VPN-AB { instance-type vrf; interface fe-1/1/0.0; route-distinguisher 10.255.14.175:9; vrf-import vpnab-import; vrf-export vpnab-export; protocols { ospf { rib-group vpnab-vpna_and_vpnb; export vpnab-import; area 0.0.0.0 { interface fe-1/1/0.0; } } } } VPN-B { instance-type vrf; interface fe-1/0/2.0; route-distinguisher 10.255.14.175:10; vrf-import vpnb-import; vrf-export vpnb-export; protocols { ospf { rib-group vpnb-vpnab; export vpnb-import; area 0.0.0.0 { interface fe-1/0/2.0; } } } } }
在 PE 与 BGP 路由器OSPF配置静态、客户边缘路由
本部分将展示如何使用静态路由、路由和 客户边缘 组合配置 PE 路由器与 BGP 路由器之间的OSPF:
路由器 PE1 和路由器 CE1 之间的连接使用静态路由。
路由器 PE1 和路由器 CE2 之间的连接使用BGP。
路由器 PE1 和路由器 CE3 之间的连接使用OSPF。
此处为 VPN AB 的配置还包括路由 CE1 的静态路由。
在路由器 PE1 上,配置静态路由、路由BGP与OSPF路由器客户边缘组合:
[edit] routing-instances { VPN-A { instance-type vrf; interface fe-1/0/0.0; route-distinguisher 10.255.14.175:3; vrf-import vpna-import; vrf-export vpna-export; routing-options { static { rib-group vpna-vpnab; route 10.255.14.155/32 next-hop 192.168.197.141; } } } VPN-AB { instance-type vrf; interface fe-1/1/0.0; route-distinguisher 10.255.14.175:9; vrf-import vpnab-import; vrf-export vpnab-export; protocols { bgp { group vpnab-site1 { family inet { unicast { rib-group vpnab-vpna_and_vpnb; } } export to-vpnab-site1; peer-as 9; neighbor 192.168.197.178; } } } } VPN-B { instance-type vrf; interface fe-1/0/2.0; route-distinguisher 10.255.14.175:10; vrf-import vpnb-import; vrf-export vpnb-export; protocols { ospf { rib-group vpnb-vpnab; export vpnb-import; area 0.0.0.1 { interface t3-0/3/3.0; } } } } } policy-options { policy-statement to-vpnab-site1 { term a { from protocol static; then accept; } term b { from protocol bgp; then accept; } term c { then reject; } } }
使用自动路由导出配置重叠 VPN
多个路由实例的一个问题是如何在路由实例之间导出路由。您可以为需要将路由导出Junos OS每个路由实例配置路由表组,以在多任务中完成此操作。有关如何使用路由表组配置重叠 VPN 的信息,请参阅 使用路由表组配置重叠 VPN。
但是,使用路由表组有一些限制:
路由表组配置很复杂。您必须为每个将导出路由的路由实例定义唯一的路由表组。
您还必须为每个将导出路由的协议配置唯一的路由表组。
要限制(有时甚至消除)在多个路由实例拓扑中配置路由表组的功能,您可以使用 语句提供 auto-export
的功能。
该语句对于配置重叠 VPN(其中一个或多个 VRF 路由实例在其策略中列出同一社区路由目标)的 VPN 配置 auto-export
vrf-import
特别有用。语句通过检查现有策略配置,找出将路由从导出到和导入路由 auto-export
的路由表。
该 auto-export
语句在引用给定路由目标社区的路由实例之间自动导出路由。配置语句时,将基于 在系统上配置的 和 策略构建 auto-export
VRF vrf-import
vrf-export
目标树。如果路由实例在其策略中引用路由目标,则路由目标将被添加到 vrf-import
目标的导入列表。如果引用其策略中的特定路由目标,则路由目标将被添加到 vrf-export
该目标的导出列表中。路由目标:有一个导入者与单个出口企业匹配,或者不会忽略任何导入者或出口者。
对导出路由目标的路由表的更改。发生路由更改时,将路由实例的策略 vpn-export
应用于路由。如果允许,则路由导入导出策略所设置路由目标的所有导入表中( vrf-import
受策略限制)。
以下各节介绍如何配置重叠 VPN,除了路由表组之外,还使用语句进行实例间 auto-export
导出:
使用自动和自动路由导出BGP重叠 VPN
以下示例为重叠 VPN 提供了配置,其中BGP PE 和 客户边缘路由器之间使用。
配置路由实例 VPN-A
:
[edit] routing-instances { VPN-A { instance-type vrf; interface fe-1/0/0.0; route-distinguisher 10.255.14.175:3; vrf-import vpna-import; vrf-export vpna-export; routing-options { auto-export; } protocols { bgp { group vpna-site1 { peer-as 1; neighbor 192.168.197.141; } } } } }
配置路由实例 VPN-AB
:
[edit] routing-instances { VPN-AB { instance-type vrf; interface fe-1/1/0.0; route-distinguisher 10.255.14.175:9; vrf-import vpnab-import; vrf-export vpnab-export; routing-options { auto-export; } protocols { bgp { group vpnab-site1 { peer-as 9; neighbor 192.168.197.178; } } } } }
对于此配置 auto-export
,语句将替换路由表组配置提供的功能。但是,有时需要额外配置。
由于用于配置导入和导出矩阵语句的策略和策略基于实例进行配置,因此您必须能够启用或禁用它们用于单播和多播,才能在配置组播网络层可达性信息 vrf-import
vrf-export
auto-export
(NLRI) 时。
配置重叠 VPN 和其他表
您可能需要在重叠 VPN 之间使用语句,但需要将从 VRF 表中学习的路由子集安装到 auto-export
inet.0 表中或路由实例中。inet.2。
要支持此类情景(在 和 策略中并非包含所需全部信息),您可使用其他路由表组配置 vrf-import
vrf-export
额外的路由表列表。
要添加 从 和 VPN-A
VPN-AB
到 inet.0 的路由,您需要包括以下附加配置语句:
配置路由选项:
[edit] routing-options { rib-groups { inet-access { import-rib inet.0; } } }
配置路由实例 VPN-A
:
[edit] routing-instances { VPN-A { routing-options { auto-export { family inet { unicast { rib-group inet-access; } } } } } }
配置路由实例 VPN-AB
:
[edit] routing-instances { VPN-AB { routing-options { auto-export { family inet { unicast { rib-group inet-access; } } } } } }
此配置中的路由表组与 Junos OS 中的通常使用方式不同。路由表组通常需要将导出路由表引用为路由表组的主导入路由表。对于此配置,此限制不适用。路由表组用作导出路由的附加表列表。
配置所有 VRF 实例的自动路由导出
以下配置允许您为配置组中所有路由 auto-export
实例配置 语句:
[edit] groups { vrf-export-on { routing-instances { <*> { routing-options { auto-export; } } } } } apply-groups vrf-export-on;