使用 VRF 表创建独特的 VPN 路由
了解虚拟路由和转发表
为了将 VPN 的路由与公共互联网或其他 VPN 中的路由分隔开来,PE 路由器会为每个 VPN 创建一个单独的路由表,称为 VPN 路由和转发 (VRF) 表。PE 路由器为每个连接到 CE 路由器的 VPN 创建一个 VRF 表。属于该 VPN 的任何客户或站点只能访问该 VPN 的 VRF 表中的路由。
图 1 显示了在 PE 路由器上创建的 VRF 表。这三台 PE 路由器可连接到位于两个不同 VPN 中的 CE 路由器,因此每个 PE 路由器会创建两个 VRF 表,每个 VPN 一个。
每个 VRF 表均由从与该 VRF 路由实例关联的直接连接的 CE 站点接收的路由,以及从通过 BGP 社区过滤并在同一 VPN 中的其他 PE 路由器接收的路由进行填充。
每个 PE 路由器还维护一个全局路由表 (inet.0),以到达提供商核心网络内外的其他路由器。
每个客户连接(即每个 逻辑接口)都与一个 VRF 表相关联。对于来自客户站点的数据包,仅会查询与该站点关联的 VRF 表。
您可以对路由器进行配置,以便在 VRF 表中找不到指向目标的下一跃点时,路由器会在用于 Internet 访问的全局路由表中执行查找。
Junos OS 对 VPN 使用以下路由表:
-
bgp.l3vpn.0 — 存储从其他 PE 路由器获知的路由。当 PE 路由器中有匹配的 VRF 导入策略时,bgp.l3vpn.0 路由表中的路由将被复制到第 3 层 VRF 中。此表仅存在于 PE 路由器上,并且不存储从直接连接的 CE 路由器接收的路由。
当一个 PE 路由器收到来自其他 PE 路由器的路由时,它会将该路由放入其 bgp.l3vpn.0 路由表中。使用 inet.3 路由表中的信息解析路由。生成的路由将转换为 IPv4 格式,如果与 VRF 导入策略匹配,则重新分发到 PE 路由器上的所有 routing-instance-name.inet.0 路由表。
bgp.l3vpn.0 表还用于解析连接 PE 路由器的 MPLS 隧道上的路由。这些路由存储在 inet.3 路由表中。PE 到 PE 路由器连接必须存在于 inet.3 中(而不仅仅是 inet.0 中),才能正确解析 VPN 路由。
当路由器播发非本地 VPN-IPv4 单播路由,且路由器是路由反射器或正在执行外部对等互连时,VPN-IPv4 单播路由会自动导出到 VPN 路由表 (bgp.l3vpn.0) 中。这使路由器能够从 bgp.l3vpn.0 路由表执行路径选择和播发。
要确定是否将路由添加到 bgp.l3vpn.0 路由表,Junos OS 会根据 PE 路由器上配置的所有 VPN 的 VRF 实例导入策略进行检查。如果 VPN-IPv4 路由与其中一个策略匹配,则该路由将被添加到 bgp.l3vpn.0 路由表中。要显示 bgp.l3vpn.0 路由表中的路由,请使用 show route table bgp.l3vpn.0 命令。
-
routing-instance-name.inet.0 — 将所有从直接连接的 CE 路由器接收的单播 IPv4 路由存储在一个路由实例(即单个 VPN 中)中,并将所有显式配置的静态路由存储在路由实例中。这是 VRF 表,仅存在于 PE 路由器上。例如,对于名为 VPN-A 的路由实例,该实例的路由表名为 VPN-A.inet.0。
当 CE 路由器向 PE 路由器播发时,PE 路由器会将路由放入相应的 routing-instance-name.inet.0 路由表中,如果通过 VRF 导出策略,则将路由播发至其他 PE 路由器。除此之外,此策略使用与 CE 所属的 VPN 站点对应的路由识别符(路由目标)标记路由。标签也会随路由一起分配和分发。 bgp.l3vpn.0 路由表不参与此过程。
routing-instance-name.inet.0 表还存储与该 VPN 的 VRF 导入策略匹配的远程 PE 路由器通告的路由。PE 路由器从其 bgp.l3vpn.0 表中重新分配了这些路由。
路由不会从 routing-instance-name.inet.0 表重新分发到 bgp.l3vpn.0 表;而是会直接播发至其他 PE 路由器。
对于每个 routing-instance-name.inet.0 路由表,路由器的数据包转发引擎中保留一个转发表。除了与路由器的 inet.0 和 mpls.0 路由表对应的转发表之外,还会维护此表。与 inet.0 和 mpls.0 路由表一样,.inet.0 路由表中的最佳路由routing-instance-name将放入转转发表中。
要显示 .inet.0 表中的routing-instance-name路由,请使用 show route table routing-instance-name.inet.0 命令。
-
inet.3 — 存储从 LDP 获知的所有 MPLS 路由以及为 VPN 流量执行的 RSVP 信令。仅当未启用流量工程 bgp-igp 选项时,路由表才会存储 MPLS 路由。
要正确解析 VPN 路由, inet.3 表必须包含到 VPN 中所有 PE 路由器的路由。
要显示 inet.3 表中的路由,请使用 show route table inet.3 命令。
-
inet.0 — 存储 PE 路由器之间的 IBGP 会话所获知的路由。要提供对 VPN 站点的 Internet 访问,请将 routing-instance-name.inet.0 路由表配置为包含到 inet.0 路由表的默认路由。
要显示 inet.0 表中的路由,请使用 show route table inet.0 命令。
在 VRF 导入和导出语句中定义的以下路由策略特定于 VRF 表。
-
导入策略 — 应用于从其他 PE 路由器获知的 VPN-IPv4 路由,以确定是否应将路由添加到 PE 路由器的 bgp.l3vpn.0 路由表中。PE 路由器上的每个路由实例都有一个 VRF 导入策略。
-
导出策略 — 应用于通告到其他 PE 路由器的 VPN-IPv4 路由。VPN-IPv4 路由是由本地连接的 CE 路由器通告的 IPv4 路由。
VPN 路由处理与常规 BGP 路由处理在某方面有所不同。在 BGP 中,如果路由未被导入策略明确拒绝,则接受路由。但是,由于需要更多 VPN 路由,因此 Junos OS 不会接受(并因此存储)VPN 路由,除非路由与至少一个 VRF 导入策略匹配。如果没有 VRF 导入策略显式接受路由,则该路由将被丢弃,甚至不会存储在 bgp.l3vpn.0 表中。因此,如果 PE 路由器上发生 VPN 更改(例如添加新的 VRF 表或更改 VRF 导入策略),PE 路由器会向其他 PE 路由器(如果这是 VPN 拓扑的一部分,则向路由反射器)发送 BGP 路由刷新消息,以检索所有 VPN 路由,以便重新评估这些路由以确定是应保留还是丢弃这些路由。
另见
了解 3 层 VPN 中的 VRF 本地化
在第 3 层 VPN 中,为了将 VPN 的路由与公共互联网或其他 VPN 中的路由分隔开来,PE 路由器会为每个 VPN 创建一个单独的路由表,称为虚拟路由和转发 (VRF) 表。每个 VRF 使用路由识别符和路由目标来区分其他 VPN,以便每个 VRF 在公共网络中实现一个 VPN。PE 路由器为每个连接到 CE 路由器的 VPN 创建一个 VRF 表。属于该 VPN 的任何客户或站点只能访问该 VPN 的 VRF 表中的路由。
第 3 层 VPN 部署中的 PE 路由器有两种类型的线卡,托管以下接口:
面向 CE 的接口
面向核心的接口
FPC 可以是面向核心的,也可以是面向 CE 的。
VRF 存在于这些线卡上,目前在 Junos OS 中,所有 VRF 的所有路由都存在于所有线卡上,所有 FPC 上都有链式复合下一跃点。这会耗尽每个线卡中的内存。由于来自面向 CE 的接口的流量仅通过相应的面向 CE 的 FPC 进入,因此所有路由和下一跃点都不必存在于所有线卡上。VRF 本地化提供了一种将 VRF 路由本地化到特定线卡的机制,以帮助最大限度地增加路由器可以处理的路由数。面向 CE 的接口将实例类型 VRF 的所有路由本地化到特定的线卡。如果面向 CE 的接口是 AE、RLSQ 或 IRB 等逻辑接口,则必须配置线卡号才能对路由进行本地化。面向核心的线卡存储所有 VRF 路由。这些卡必须配置为面向核心的 VPN 默认卡或仅面向 VPN 核心的卡。面向核心的线卡存储所有 VRF 的路由,它们属于以下类型:
vpn-core-facing-default — 面向核心的FPC安装VRF路由的所有路由和下一跃点。
vpn-core-facing-only — 面向核心的FPC安装所有路由,不存储VRF路由的下一跃点。
面向核心的 FPC 可以配置为面向核心的默认或仅面向核心的 FPC。
对第 3 层 VPN 使用 VRF 本地化来最大限度利用 VPN 路由
虚拟路由和转发 (VRF) 本地化提供了一种将 VRF 路由本地化到特定线卡的机制,以帮助最大限度地增加路由器可以处理的路由数。面向 CE 的接口将实例类型 VRF 的所有路由本地化到特定的线卡。如果面向 CE 的接口是 AE/RLSQ/IRB 等逻辑接口,则必须将线卡配置为本地化路由。面向核心的线卡存储所有 VRF 路由。这些卡必须配置为仅面向 VPN 核心或面向 VPN 核心的默认卡。要配置 VRF 本地化,请在[edit routing-instances instance-name routing-options]层次结构级别配置localized-fib语句,然后在层次结构级别配置vpn-localization语句[edit chassis fpc fpc-slot]。命令show route vpn-localization显示系统中所有 VRF 的本地化信息。
开始本地化 VRF 表之前:
配置接口。
配置路由和信令协议。
要配置 VRF 本地化,请执行以下作:
示例:对 3 层 VPN 使用 VRF 本地化来提高可扩展性
此示例说明如何在 MX 系列路由器上配置 VRF 本地化,以便提高 MX 系列路由器上的 VPN 可扩展性。
要求
此示例使用以下硬件和软件组件:
-
五个 MX 系列 5G 通用路由平台
-
在所有设备上运行的 Junos OS 14.2 或更高版本
开始之前:
-
配置设备接口。
-
配置 BGP 协议。
概述
从 Junos OS 14.2 版开始,VRF 本地化提供了一种将 VRF 路由本地化到特定线卡的机制,这有助于最大限度地增加路由器可以处理的路由数。面向 CE 的接口将实例类型 VRF 的所有路由本地化到特定的线卡。如果面向 CE 的接口是 AE、RLSQ 或 IRB 等逻辑接口,则必须将线卡配置为本地化路由。面向核心的线卡存储所有 VRF 路由。这些卡必须配置为仅面向 VPN 核心或面向 VPN 核心的默认卡。要配置 VRF 本地化,请在层次结构级别配置localized-fib配置语句,然后在层次结构级别进行配置vpn-localization[edit chassis fpc fpc-slot]。[edit routing-instances instance-name routing-options]命令show route vpn-localization显示系统中所有 VRF 的本地化信息。
配置
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层 [edit] 级的 CLI 中,然后从配置模式进入 commit 。
CE1
set interfaces ge-4/0/0 unit 0 family inet address 192.0.2.2/24
set interfaces ge-4/0/0 unit 0 family inet6 address abcd:a:a:a:1::2/126
set protocols bgp group vpn1 type external
set protocols bgp group vpn1 export direct
set protocols bgp group vpn1 peer-as 10
set protocols bgp group vpn1 neighbor 192.0.2.1 family inet unicast
set protocols bgp group vpn1 neighbor abcd:a:a:a:1::1 family inet6 unicast
set policy-options policy-statement direct from protocol direct
set policy-options policy-statement direct then accept
set policy-options policy-statement load-balancing-policy then load-balance per-packet
set routing-options autonomous-system 100
set routing-options forwarding-table export load-balancing-policy
PE1型
set chassis redundancy graceful-switchover
set chassis aggregated-devices ethernet device-count 16
set chassis fpc 8 vpn-localization vpn-core-facing-only
set chassis network-services enhanced-ip
set interfaces ge-2/0/0 unit 0 family inet address 192.0.2.1/24
set interfaces ge-2/0/0 unit 0 family inet6 address abcd:a:a:a:1::1/126
set interfaces ge-8/1/0 gigether-options 802.3ad ae0
set interfaces ge-8/1/9 gigether-options 802.3ad ae0
set interfaces ae0 unit 0 family inet address 192.0.2.3/24
set interfaces ae0 unit 0 family iso
set interfaces ae0 unit 0 family mpls
set interfaces lo0 unit 1 family inet address 10.255.19.254/24
set interfaces lo0 unit 1 family inet6 address abcd::10:0:1:1/128
set policy-options policy-statement direct from protocol direct
set policy-options policy-statement direct then accept
set policy-options policy-statement load-balancing-policy then load-balance per-packet
set protocols rsvp interface ae0.0
set protocols mpls ipv6-tunneling
set protocols mpls icmp-tunneling
set protocols mpls label-switched-path pe1-pe2-p2mp-1 from 10.255.19.254
set protocols mpls label-switched-path pe1-pe2-p2mp-1 to 10.255.19.251
set protocols mpls label-switched-path pe1-pe2-p2mp-1 link-protection
set protocols mpls label-switched-path pe1-pe2-p2mp-1 p2mp vpn1-p2mp
set protocols mpls label-switched-path pe1-pe3-p2mp-1 from 10.255.19.254
set protocols mpls label-switched-path pe1-pe3-p2mp-1 to 10.255.19.203
set protocols mpls label-switched-path pe1-pe3-p2mp-1 link-protection
set protocols mpls label-switched-path pe1-pe3-p2mp-1 p2mp vpn1-p2mp
set protocols mpls interface ae0.0
set protocols bgp group mpbg type internal
set protocols bgp group mpbg local-address 10.255.19.254
set protocols bgp group mpbg family inet unicast
set protocols bgp group mpbg family inet-vpn unicast
set protocols bgp group mpbg family inet6 unicast
set protocols bgp group mpbg family inet6-vpn unicast
set protocols bgp group mpbg family inet-mvpn signaling
set protocols bgp group mpbg family inet6-mvpn signaling
set protocols bgp group mpbg neighbor 10.255.19.253
set protocols ospf traffic-engineering
set protocols ospf area 0.0.0.0 interface ae0.0
set protocols ospf area 0.0.0.0 interface lo0.0 passive
set protocols ldp interface ae0.0
set routing-instances vpn1 instance-type vrf
set routing-instances vpn1 interface ge-2/0/0.0
set routing-instances vpn1 interface lo0.1
set routing-instances vpn1 route-distinguisher 1:1
set routing-instances vpn1 provider-tunnel rsvp-te static-lsp vpn1-p2mp
set routing-instances vpn1 vrf-target target:1:1
set routing-instances vpn1 vrf-table-label
set routing-instances vpn1 routing-options multipath
set routing-instances vpn1 routing-options localized-fib
set routing-instances vpn1 protocols bgp group grp1 type external
set routing-instances vpn1 protocols bgp group grp1 export direct
set routing-instances vpn1 protocols bgp group grp1 peer-as 100
set routing-instances vpn1 protocols bgp group grp1 neighbor 192.0.2.2 family inet unicast
set routing-instances vpn1 protocols bgp group grp1 neighbor abcd:a:a:a:1::2 family inet6 unicast
set routing-instances vpn1 protocols mvpn
set routing-options nonstop-routing
set routing-options autonomous-system 10
set routing-options forwarding-table export load-balancing-policy
set routing-options forwarding-table chained-composite-next-hop ingress l3vpn extended-space
磷
set chassis aggregated-devices ethernet device-count 16
set interfaces ge-1/0/1 gigether-options 802.3ad ae0
set interfaces ge-1/0/3 gigether-options 802.3ad ae0
set interfaces ge-1/1/1 gigether-options 802.3ad ae1
set interfaces ae0 unit 0 family inet address 192.0.2.4/24
set interfaces ae0 unit 0 family iso
set interfaces ae0 unit 0 family mpls
set interfaces ae1 unit 0 family inet address 198.51.100.2/24
set interfaces ae1 unit 0 family iso
set interfaces ae1 unit 0 family mpls
set routing-options autonomous-system 10
set routing-options forwarding-table export load-balancing-policy
set protocols rsvp interface ae0.0
set protocols rsvp interface ae1.0
set protocols mpls ipv6-tunneling
set protocols mpls icmp-tunneling
set protocols mpls interface ae0.0
set protocols mpls interface ae1.0
set protocols bgp group mpbg type internal
set protocols bgp group mpbg local-address 10.255.19.253
set protocols bgp group mpbg family inet unicast
set protocols bgp group mpbg family inet-vpn unicast
set protocols bgp group mpbg family inet6 unicast
set protocols bgp group mpbg family inet6-vpn unicast
set protocols bgp group mpbg family inet-mvpn signaling
set protocols bgp group mpbg family inet6-mvpn signaling
set protocols bgp group mpbg cluster 10.255.19.253
set protocols bgp group mpbg neighbor 10.255.19.254
set protocols bgp group mpbg neighbor 10.255.19.251
set protocols bgp group mpbg neighbor 10.255.19.203
set protocols ospf traffic-engineering
set protocols ospf area 0.0.0.0 interface lo0.0 passive
set protocols ospf area 0.0.0.0 interface ae0.0
set protocols ospf area 0.0.0.0 interface ae1.0
set protocols ldp interface ae0.0
set protocols ldp interface ae1.0
set policy-options policy-statement load-balancing-policy then load-balance per-packet
PE2
set chassis redundancy graceful-switchover
set chassis aggregated-devices ethernet device-count 16
set interfaces ge-4/2/1 gigether-options 802.3ad ae1
set interfaces ge-4/2/5 unit 0 family inet address 198.51.100.3/24
set interfaces ge-4/2/5 unit 0 family inet6 address abcd:a:a:a:2::1/126
set interfaces ae1 unit 0 family inet address 198.51.100.1/24
set interfaces ae1 unit 0 family iso
set interfaces ae1 unit 0 family mpls
set interfaces lo0 unit 2 family inet address 10.255.19.251/24
set interfaces lo0 unit 2 family inet6 address abcd::203:0:113:2/128
set policy-options policy-statement direct from protocol direct
set policy-options policy-statement direct then accept
set policy-options policy-statement load-balancing-policy then load-balance per-packet
set protocols rsvp interface ae1.0
set protocols mpls ipv6-tunneling
set protocols mpls icmp-tunneling
set protocols mpls label-switched-path pe2-pe1-p2mp-1 from 10.255.19.251
set protocols mpls label-switched-path pe2-pe1-p2mp-1 to 10.255.19.254
set protocols mpls label-switched-path pe2-pe1-p2mp-1 link-protection
set protocols mpls label-switched-path pe2-pe1-p2mp-1 p2mp vpn1-p2mp
set protocols mpls label-switched-path pe2-pe3-p2mp-1 from 10.255.19.251
set protocols mpls label-switched-path pe2-pe3-p2mp-1 to 10.255.19.203
set protocols mpls label-switched-path pe2-pe3-p2mp-1 link-protection
set protocols mpls label-switched-path pe2-pe3-p2mp-1 p2mp vpn1-p2mp
set protocols mpls interface ae1.0
set protocols bgp group mpbg type internal
set protocols bgp group mpbg local-address 10.255.19.251
set protocols bgp group mpbg family inet unicast
set protocols bgp group mpbg family inet-vpn unicast per-prefix-label
set protocols bgp group mpbg family inet6 unicast
set protocols bgp group mpbg family inet6-vpn unicast per-prefix-label
set protocols bgp group mpbg family inet-mvpn signaling
set protocols bgp group mpbg family inet6-mvpn signaling
set protocols bgp group mpbg neighbor 10.255.19.253
set protocols ospf traffic-engineering
set protocols ospf area 0.0.0.0 interface lo0.0 passive
set protocols ospf area 0.0.0.0 interface ae1.0
set protocols ldp interface ae1.0
set routing-instances vpn1 instance-type vrf
set routing-instances vpn1 interface ge-4/2/5.0
set routing-instances vpn1 route-distinguisher 1:1
set routing-instances vpn1 provider-tunnel rsvp-te static-lsp vpn1-p2mp
set routing-instances vpn1 vrf-target target:1:1
set routing-instances vpn1 vrf-table-label
set routing-instances vpn1 routing-options multipath
set routing-instances vpn1 protocols bgp group grp1 type external
set routing-instances vpn1 protocols bgp group grp1 export direct
set routing-instances vpn1 protocols bgp group grp1 peer-as 200
set routing-instances vpn1 protocols bgp group grp1 neighbor 198.51.100.4 family inet unicast
set routing-instances vpn1 protocols bgp group grp1 neighbor abcd:a:a:a:2::2 family inet6 unicast
set routing-instances vpn1 protocols mvpn
set routing-options nonstop-routing
set routing-options autonomous-system 10
set routing-options forwarding-table export load-balancing-policy
CE2 认证
set interfaces ge-0/0/5 unit 0 family inet address 198.51.100.4/24
set interfaces ge-0/0/5 unit 0 family inet6 address abcd:a:a:a:2::2/126
set protocols bgp group vpn1 type external
set protocols bgp group vpn1 export direct
set protocols bgp group vpn1 export vpn1
set protocols bgp group vpn1 peer-as 10
set protocols bgp group vpn1 neighbor 198.51.100.3 family inet unicast
set protocols bgp group vpn1 neighbor abcd:a:a:a:2::1 family inet6 unicast
set policy-options policy-statement direct from protocol direct
set policy-options policy-statement direct then accept
set policy-options policy-statement load-balancing-policy then load-balance per-packet
set routing-options autonomous-system 200
set routing-options forwarding-table export load-balancing-policy
配置设备 PE1
分步过程
下面的示例要求您在各个配置层级中进行导航。有关 CLI 导航的信息,请参阅 在配置模式下使用 CLI 编辑器。
要配置设备 PE1,请执行以下作:
-
指定要创建的聚合以太网接口数量,将 FPC 配置为仅面向 VPN 核心的接口,并启用增强型 IP 网络服务。
[edit chassis] user@PE1# set redundancy graceful-switchover user@PE1# set aggregated-devices ethernet device-count 16 user@PE1# set fpc 8 vpn-localization vpn-core-facing-only user@PE1# set network-services enhanced-ip -
配置接口。
[edit interfaces] user@PE1# set ge-2/0/0 unit 0 family inet address 192.0.2.1/24 user@PE1# set ge-2/0/0 unit 0 family inet6 address abcd:a:a:a:1::1/126 user@PE1# set ge-8/1/0 gigether-options 802.3ad ae0 user@PE1# set ge-8/1/9 gigether-options 802.3ad ae0 user@PE1# set ae0 unit 0 family inet address 192.0.2.3/24 user@PE1# set ae0 unit 0 family iso user@PE1# set ae0 unit 0 family mpls user@PE1# set lo0 unit 1 family inet address 10.255.19.254/24 user@PE1# set lo0 unit 1 family inet6 address abcd::10:0:1:1/128 -
配置策略选项以对数据包进行负载平衡。
[edit policy-options policy-statement] user@PE1# set direct from protocol direct user@PE1# set direct then accept user@PE1# set load-balancing-policy then load-balance per-packet -
在接口上配置 RSVP 协议。
[edit protocols rsvp] user@PE1# set interface ae0.0 -
配置 MPLS 协议。
[edit protocols mpls] user@PE1# set ipv6-tunneling user@PE1# set icmp-tunneling user@PE1# set label-switched-path pe1-pe2-p2mp-1 from 10.255.19.254 user@PE1# set label-switched-path pe1-pe2-p2mp-1 to 10.255.19.251 user@PE1# set label-switched-path pe1-pe2-p2mp-1 link-protection user@PE1# set label-switched-path pe1-pe2-p2mp-1 p2mp vpn1-p2mp user@PE1# set label-switched-path pe1-pe3-p2mp-1 from 10.255.19.254 user@PE1# set label-switched-path pe1-pe3-p2mp-1 to 10.255.19.203 user@PE1# set label-switched-path pe1-pe3-p2mp-1 link-protection user@PE1# set label-switched-path pe1-pe3-p2mp-1 p2mp vpn1-p2mp user@PE1# set interface ae0.0 -
为 mpbg 组配置 BGP 协议。
[edit protocols bgp group mpbg] user@PE1# set type internal user@PE1# set local-address 10.255.19.254 user@PE1# set family inet unicast user@PE1# set family inet-vpn unicast user@PE1# set family inet6 unicast user@PE1# set family inet6-vpn unicast user@PE1# set family inet-mvpn signaling user@PE1# set family inet6-mvpn signaling user@PE1# set neighbor 10.255.19.253 -
配置 OSPF 协议。
[edit protocols ospf] user@PE1# set traffic-engineering user@PE1# set area 0.0.0.0 interface ae0.0 user@PE1# set area 0.0.0.0 interface lo0.0 passive -
在接口上配置 LDP 协议。
[edit protocols] user@PE1# set ldp interface ae0.0 -
创建实例类型并在接口上配置路由实例。
[edit routing-instances vpn1] user@PE1# set instance-type vrf user@PE1# set interface ge-2/0/0.0 user@PE1# set interface lo0.1 -
配置路由识别符,并为提供商隧道 RSVP-TE 配置静态 LSP。
[edit routing-instances vpn1] user@PE1# set route-distinguisher 1:1 user@PE1# set provider-tunnel rsvp-te static-lsp vpn1-p2mp -
为路由实例配置 VRF 目标和 VRF 目标标签。
[edit routing-instances vpn1] user@PE1# set vrf-target target:1:1 user@PE1# set vrf-table-label -
为路由实例配置多路径路由选项,并为路由实例配置本地化 fib 路由选项。
[edit routing-instances vpn1 routing-options] user@PE1# set multipath user@PE1# set localized-fib -
为路由实例配置 BGP 协议组。
[edit routing-instances vpn1 protocols bgp group grp1] user@PE1# set type external user@PE1# set export direct user@PE1# set peer-as 100 user@PE1# set neighbor 192.0.2.2 family inet unicast user@PE1# set neighbor abcd:a:a:a:1::2 family inet6 unicast -
配置 MVPN 协议。
[edit routing-instances vpn1] user@PE1# set protocols mvpn -
为路由选项配置不间断活动路由和自治系统编号。
[edit routing-options] user@PE1# set nonstop-routing user@PE1# set autonomous-system 10 -
配置转发表负载均衡策略,并为转发表的 L3VPN 的链式复合下一跃点配置扩展空间。
[edit routing-options] user@PE1# set forwarding-table export load-balancing-policy user@PE1# set forwarding-table chained-composite-next-hop ingress l3vpn extended-space
结果
在配置模式下,输入show chassis、show interfaces、show routing-instancesshow policy-optionsshow protocols和show routing-options命令,以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。
user@PE1# show chassis
redundancy {
graceful-switchover;
}
aggregated-devices {
ethernet {
device-count 16;
}
}
fpc 8 {
vpn-localization vpn-core-facing-only;
}
network-services enhanced-ip;
user@PE1# show interfaces
ge-2/0/0 {
unit 0 {
family inet {
address 192.0.2.1/24;
}
family inet6 {
address abcd:a:a:a:1::1/126;
}
}
}
ge-8/1/0 {
gigether-options {
802.3ad ae0;
}
}
ge-8/1/9 {
gigether-options {
802.3ad ae0;
}
}
ae0 {
unit 0 {
family inet {
address 192.0.2.3/24;
}
family iso;
family mpls;
}
}
lo0 {
unit 1 {
family inet {
address 10.255.19.254/24;
}
family inet6 {
address abcd::10:0:1:1/128;
}
}
}
user@PE1# show policy-options
policy-statement direct {
from protocol direct;
then accept;
}
policy-statement load-balancing-policy {
then {
load-balance per-packet;
}
}
user@PE1# show routing-options
nonstop-routing;
autonomous-system 10;
forwarding-table {
export load-balancing-policy;
chained-composite-next-hop {
ingress {
l3vpn extended-space;
}
}
}
user@PE1# show routing-instances
vpn1 {
instance-type vrf;
interface ge-2/0/0.0;
interface lo0.1;
route-distinguisher 1:1;
provider-tunnel {
rsvp-te {
static-lsp vpn1-p2mp;
}
}
vrf-target target:1:1;
vrf-table-label;
routing-options {
multipath;
localized-fib;
}
protocols {
bgp {
group grp1 {
type external;
export direct;
peer-as 100;
neighbor 192.0.2.2 {
family inet {
unicast;
}
}
neighbor abcd:a:a:a:1::2 {
family inet6 {
unicast;
}
}
}
}
mvpn;
}
}
user@PE1# show protocols
rsvp {
interface ae0.0;
}
mpls {
ipv6-tunneling;
icmp-tunneling;
label-switched-path pe1-pe2-p2mp-1 {
from 10.255.19.254;
to 10.255.19.251;
link-protection;
p2mp vpn1-p2mp;
}
label-switched-path pe1-pe3-p2mp-1 {
from 10.255.19.254;
to 10.255.19.203;
link-protection;
p2mp vpn1-p2mp;
}
interface ae0.0;
}
bgp {
group mpbg {
type internal;
local-address 10.255.19.254;
family inet {
unicast;
}
family inet-vpn {
unicast;
}
family inet6 {
unicast;
}
family inet6-vpn {
unicast;
}
family inet-mvpn {
signaling;
}
family inet6-mvpn {
signaling;
}
neighbor 10.255.19.253;
}
}
ospf {
traffic-engineering;
area 0.0.0.0 {
interface ae0.0;
interface lo0.0 {
passive;
}
}
}
ldp {
interface ae0.0;
}
如果完成设备配置,请从配置模式输入 commit 。
验证
确认配置工作正常。
验证 VRF 本地化
目的
验证 VRF 在第 3 层 VPN 中的本地化。
行动
在作模式下,为设备 PE1 运行 show route vpn-localization 命令。
user@PE1> show route vpn-localization
Routing table: vpn1.inet, Localized
Index: 7, Address Family: inet, Localization status: Complete
Local FPC's: 2 8
Routing table: vpn1.inet6, Localized
Index: 7, Address Family: inet6, Localization status: Complete
Local FPC's: 2 8
Routing table: vpn2.inet, Non-localized
Index: 8, Address Family: inet, Localization status: Complete
Local FPC's: All
Routing table: vpn2.inet6, Non-localized
Index: 8, Address Family: inet6, Localization status: Complete
Local FPC's: All
意义
输出显示所有 VRF 的本地化信息。
验证 VPN 的 VRF 本地化
目的
验证 VPN 的 VRF 本地化。
行动
在作模式下,运行 show route vpn-localization vpn-name vpn-name 命令。
user@PE1> show route vpn-localization vpn-name vpn1
Routing table: vpn1.inet, Localized
Index: 7, Address Family: inet, Localization status: Complete
Local FPC's: 2 8
Routing table: vpn1.inet6, Localized
Index: 7, Address Family: inet6, Localization status: Complete
Local FPC's: 2 8
意义
输出显示 VPN 的 VPN 本地化。
根据 IP 报头过滤第 3 层 VPN 中的数据包
在路由实例的配置中包含语 vrf-table-label 句,可以将内部标签映射到特定的 VRF 路由表;此类映射允许检查出口 VPN 路由器上封装的 IP 报头。您可能需要启用此功能,以便执行以下任一作:
在共享介质中的 PE 路由器到 CE 设备接口上转发流量,其中 CE 设备是不具备 IP 功能的第 2 层交换机(例如,城域以太网交换机)。
第一次查找是在 VPN 标签上进行的,以确定要引用的 VRF 表,第二次查找是在 IP 报头上,以确定如何将数据包转发到共享介质上的正确终端主机。
在出口 PE 路由器上执行出口过滤。
对 VPN 标签进行第一次查找以确定要引用的 VRF 路由表,第二次查找对 IP 报头进行确定如何过滤和转发数据包。您可以通过在 VRF 接口上配置输出过滤器来启用此功能。
在 VRF 路由表的配置中包含该
vrf-table-label语句时,将创建标签交换接口 (LSI) 逻辑接口标签并将其映射到 VRF 路由表。此类 VRF 路由表中的任何路由都使用已分配给 VRF 路由表的 LSI 逻辑接口标签进行播发。当此 VPN 的数据包到达面向核心的接口时,它们将被视为已到达 LSI 接口的封闭 IP 数据包,然后根据正确的表进行转发和过滤。
要根据 IP 报头过滤流量,请包含 vrf-table-label 以下语句:
vrf-table-label { source-class-usage; }
您可以在以下层级包含语句:
[edit routing-instances routing-instance-name][edit logical-systems logical-system-name routing-instances routing-instance-name]
您可以为 IPv4 和 IPv6 第 3 层 VPN 添加 vrf-table-label 语句。如果包含双堆栈 VRF 路由表(其中同时支持 IPv4 和 IPv6 路由)的语句,则该语句将同时应用于 IPv4 和 IPv6 路由,并且将为两组路由播发相同的标签。
您还可以通过添加source-class-usage选项来为使用vrf-table-label语句配置的第 3 层 VPN 配置 SCU 计费。在[edit routing-instances routing-instance-name vrf-table-label]层次结构级别包括source-class-usage语句。source-class-usage此层次结构级别的语句仅对vrf实例类型(第 3 层 VPN)支持。语句不支持 vrf-table-label DCU。有关更多信息,请参阅启用源类和目标类用法。
以下章节提供了有关基于 IP 标头的流量过滤的更多信息:
- 出口过滤选项
- 在聚合和 VLAN 接口上支持基于 IP 的过滤
- 支持 ATM 和帧中继接口,用于基于 IP 的过滤
- 支持以太网、SONET/SDH 和 T1/T3/E3 接口进行基于 IP 的过滤
- 支持 SONET/SDH 和 DS3/E3 通道化增强型智能排队接口,用于基于 IP 的过滤
- 支持多链路 PPP 和多链路帧中继接口,用于基于 IP 的过滤
- 支持基于 IP 的空顶标签数据包过滤
- 基于 IP 的过滤的一般限制
出口过滤选项
您可以通过在[edit routing-instances instance-name]层次结构级别包含vrf-table-label语句来启用出口过滤(允许出口第 3 层 VPN PE 路由器同时对 VPN 标签和 IP 报头执行查找)。对于 CE 路由器到 PE 路由器的接口包含此语句没有限制,但对其他接口类型存在一些限制,如本主题后续部分所述。
您还可以通过在配备隧道服务物理接口卡 (PIC) 的路由平台上配置 VPN 隧道 (VT) 接口来启用出口过滤。以这种方式启用出口过滤时,对所使用的面向核心的接口类型没有限制。对使用的 CE 路由器到 PE 路由器接口类型也没有限制。
在聚合和 VLAN 接口上支持基于 IP 的过滤
vrf-table-label表 1 中汇总的路由器支持通过聚合接口和 VLAN 接口使用语句。
接口 |
不带增强型 FPC 的 M Series 路由器 |
具有增强型 FPC 的 M Series 路由器 |
M320 路由器 |
T Series 路由器 |
|---|---|---|---|---|
聚合 |
不 |
是的 |
是的 |
是的 |
VLAN |
不 |
是的 |
是的 |
是的 |
M120 路由器上的聚合千兆以太网、10 千兆以太网和 VLAN 物理接口不支持该 vrf-table-label 语句。
支持 ATM 和帧中继接口,用于基于 IP 的过滤
vrf-table-label表 2 中汇总的路由器支持通过异步传输模式 (ATM) 和帧中继接口使用语句。
接口 |
不带增强型 FPC 的 M Series 路由器 |
具有增强型 FPC 的 M Series 路由器 |
M320 路由器 |
T Series 路由器 |
|---|---|---|---|---|
ATM1 |
不 |
不 |
不 |
不 |
ATM2 智能排队 (IQ) |
不 |
是的 |
是的 |
是的 |
帧中继 |
不 |
是的 |
是的 |
是的 |
通道化 |
不 |
不 |
不 |
不 |
包含 vrf-table-label 语句时,请注意 ATM 或帧中继接口的以下限制:
vrf-table-label该语句在 ATM 接口上受支持,但存在以下限制:ATM 接口可以在 M320 路由器和 T Series 路由器上配置,也可以在具有增强型 FPC 的 M Series 路由器上配置。
接口只能是从 P 路由器接收流量的 PE 路由器接口。
路由器必须具有 ATM2 IQ PIC。
vrf-table-label该语句在帧中继封装接口上也受支持,但存在以下限制:可以在 M320 路由器和 T Series 路由器上以及具有增强型 FPC 的 M Series 路由器上配置帧中继接口。
接口只能是从 P 路由器接收流量的 PE 路由器接口。
支持以太网、SONET/SDH 和 T1/T3/E3 接口进行基于 IP 的过滤
vrf-table-label 表 3 中汇总的路由器支持通过以太网、SONET/SDH 和 T1/T3/E3 接口使用语句。
接口 |
不带增强型 FPC 的 M Series 路由器 |
具有增强型 FPC 的 M Series 路由器 |
M320 路由器 |
T Series 路由器 |
|---|---|---|---|---|
以太网 |
是的 |
是的 |
是的 |
是的 |
SONET/SDH |
是的 |
是的 |
是的 |
是的 |
T1/T3/E3 |
是的 |
是的 |
是的 |
是的 |
在没有增强型 FPC 的 M Series 路由器上,只有以下以太网 PIC 支持该 vrf-table-label 语句:
1 端口千兆以太网
2 端口千兆以太网
4 端口快速以太网
支持 SONET/SDH 和 DS3/E3 通道化增强型智能排队接口,用于基于 IP 的过滤
仅对具有增强型 III FPC 的 M120 和 M320 路由器支持指定通道化 IQE 接口的 vrf-table-label 语句,如 表 4 所示。
接口 |
具有增强型 III FPC 的 M120 路由器 |
具有增强型 III FPC 的 M320 路由器 |
|---|---|---|
OC12系列 |
是的 |
是的 |
STM4型 |
是的 |
是的 |
OC3型 |
是的 |
是的 |
STM1型 |
是的 |
是的 |
DS3 |
是的 |
是的 |
E3 |
是的 |
是的 |
支持以下 IQE 1 类 PIC:
1 端口 OC12/STM4 IQE,带 SFP
4 端口 OC3/STM1 IQE,带 SFP
带 BNC 的 4 端口 DS3/E3 IQE
2 端口通道化 OC3/STM1 IQE,带 SFP,无 SONET 分区
1 端口通道化 OC12/STM4 IQE,带 SFP,无 SONET 分区
以下约束适用于使用逻辑系统的路由器配置:
多端口 IQE PIC 接口约束 — 在多端口 IQE PIC(如带 SFP 的 2 端口通道化 OC3/STM1 IQE)上,如果端口 1 接口配置为具有自己的路由实例的一个逻辑系统,而端口 2 接口配置为具有自己的路由实例的不同逻辑系统,使得端口 1 和端口 2 上都有面向核心的逻辑接口, 这样,就无法在两个逻辑系统中对 routing-instance 配置
vrf-table-label语句。仅支持一组 LSI 标签;配置了语句的最后一个路由实例vrf-table-label已提交。跨逻辑系统的帧中继封装和逻辑接口 约束 — 与具有逻辑系统的多端口 PIC 类似,如果尝试在一个逻辑系统中配置具有帧中继封装的 IQE PIC 的一个逻辑接口,并在第二个逻辑系统中的同一 IQE PIC 上配置另一个逻辑接口,则该配置将不适用于所有
vrf-table-label语句配置的实例。它仅适用于在其中一个逻辑系统中配置的实例。
出现上述两种限制的原因是,路由器配置在每个逻辑系统的数据包转发引擎中维护一个 LSI 树,这在所有流中是通用的。然后调整流通道表查找以指向 LSI 树。如果采用多端口 1 类 IQE PIC,则所有物理接口共享同一流。因此,逻辑接口(无论是否多端口)显然共享同一个流。因此,LSI 绑定处于流级别。因此,不支持在同一流下配置逻辑接口以面向核心,并使用语 vrf-table-label 句支持一组不同的路由实例。
支持多链路 PPP 和多链路帧中继接口,用于基于 IP 的过滤
vrf-table-label 表 5 中汇总的路由器支持通过多链路点对点协议 (MLPPP) 和多链路帧中继 (MLFR) 接口使用语句。
接口 |
不带增强型 FPC 的 M Series 路由器 |
具有增强型 FPC 的 M Series 路由器 |
M320 |
T Series 路由器 |
MX 系列路由器 |
|---|---|---|---|---|---|
MLPPP |
不 |
是的 |
不 |
不 |
不 |
端到端 MLFR (FRF.15) |
不 |
是的 |
不 |
不 |
不 |
UNI/NNI MLFR (FRF.16) |
不 |
不 |
不 |
不 |
不 |
M Series 路由器必须具有 AS PIC 才能支持 vrf-table-label 通过 MLPPP 和 MLFR 接口的声明。 vrf-table-label M120 路由器不支持基于 MLPPP 接口的声明。
支持基于 IP 的空顶标签数据包过滤
对于接收具有空顶标签的 MPLS 数据包的面向核心的接口,您可以在配置中包含该 vrf-table-label 语句,该标签可能由某些供应商的设备传输。只能在 M320 路由器、M10i 路由器和 T Series Core 路由器上使用以下 PIC 之一接收这些数据包:
1 端口千兆以太网,支持 SFP
2 端口千兆以太网,支持 SFP
支持 SFP 的 4 端口千兆以太网
带 SFP 的 10 端口千兆以太网
1 端口 SONET STM4
4 端口 SONET STM4
1 端口 SONET STM16
1 端口 SONET STM16(非 SFP)
4 端口 SONET STM16
1 端口 SONET STM64
以下 PIC 可以接收顶部为空标签的数据包,但仅当安装在 M120 路由器或具有增强型 III FPC 的 M320 路由器中时:
1 端口 10 千兆以太网
1 端口 10 千兆以太网 IQ2
基于 IP 的过滤的一般限制
包含 vrf-table-label 语句时,存在以下限制:
防火墙过滤器无法应用于配置了语句的路由实例中包含的
vrf-table-label接口。对于从 PE 路由器发送到 CE 路由器的数据包,MPLS 报头中的生存时间 (TTL) 值不会复制回 IP 报头。
不能将语
vrf-table-label句包含在还包含虚拟环路隧道接口的路由实例配置中;在这种情况下,提交作将失败。包含该语句时,如果面向核心的接口满足以下任一条件,则带有标签交换接口 (LSI) 标签的 MPLS 数据包将不会在逻辑接口级别计算在逻辑接口级别:
自动柜员机
帧中继
配置了 VLAN 的以太网
配置了 VLAN 的聚合以太网
对于基于 LMNR、Stoli 和 I 芯片的数据包转发引擎,如果 PE 路由器到 P 路由器的接口是以下任一接口,则不能在 VRF 路由实例的配置中包含该语句:
注意:当 PE 路由器到 P 路由器接口是基于 Junos Trio 的数据数据包转发引擎上的隧道接口时,支持该
vrf-table-label语句,因此没有限制。聚合 SONET/SDH 接口
通道化接口
隧道接口(例如,通用路由封装 [GRE] 或 IP 安全性 [IPsec])
电路交叉连接 (CCC) 或平移交叉连接 (TCC) 封装接口
逻辑隧道接口
虚拟专用 LAN 服务 (VPLS) 封装接口
注意:支持所有 CE 路由器到 PE 路由器和 PE 路由器到 CE 路由器接口。
如果 PE 路由器到 P 路由器的 PIC 是以下 PIC 之一,则不能在 VRF 路由实例的配置中包含该
vrf-table-label语句:10 端口 E1
8 端口快速以太网
12 端口快速以太网
48 端口快速以太网
ATM2 IQ 以外的 ATM PIC
M Series 路由器上的智能排队 2 (IQ2)、增强型 IQ (IQE) 和增强型 IQ2 (IQ2E) PIC 不支持标签交换接口 (LSI) 流量统计信息。
另见
为 VPN 配置标签分配和替换策略
您可以控制 MPLS 入口和 AS 边界路由器 (ASBR) 上的标签播发。标签可以按下一跃点(默认情况下)或按表分配(通过配置 vrf-table-label 语句)。此选项会影响给定路由实例的所有路由。您还可以通过指定标签分配策略来配置策略,以便基于每个路由生成标签。
要为路由实例指定标签分配策略,请配置 label 语句并使用 分配 选项指定标签分配策略:
label { allocation label-allocation-policy; }
您可以在以下层级配置此语句:
[edit routing-instances routing-instance-name routing-options][edit logical-systems logical-system-name routing-instances routing-instance-name routing-options]
[edit logical-systems]层次结构级别不适用于 ACX 系列路由器。
要配置标签分配策略,请在[edit policy-options policy-statement policy-statement-name term term-name then]层次结构级别包含label-allocation语句。您可以将标签分配模式配置为按下一跃点或按表。
对于 VPN 选项 B ASBR,将把传输路由的标签替换为本地虚拟隧道标签或 vrf-table-label 标签。在 ASBR 上配置 VRF 表时(这种类型的配置在选项 B 模型中并不常见),ASBR 不会为传输路由生成 MPLS 交换或交换和推送状态。相反,ASBR 会重新播发本地虚拟隧道或 vrf 表标签标签,并根据 IP 转发表转发该传输流量。标签替换有助于保护瞻博网络路由器上的标签。
但是,这种类型的标签替换会有效地中断 MPLS 转发路径,该路径在使用 MPLS OAM 命令(如 LSP ping)时变得可见。您可以通过指定标签替换策略来配置每个路由的标签替换方式。
要为路由实例指定标签替换策略,请配置 label 语句并使用 替换 选项指定标签替换策略:
label { substitution label-substitution-policy; }
您可以在以下层级配置此语句:
[edit routing-instances routing-instance-name routing-options][edit logical-systems logical-system-name routing-instances routing-instance-name routing-options]
[edit logical-systems]层次结构级别不适用于 ACX 系列路由器。
标签替换策略用于确定是否应在 ASBR 路由器上替换标签。策略作的结果要么是 接受 (执行标签替换),要么是 拒绝 (不执行标签替换)。默认行为为 accept。以下 set 命令示例说明了如何配置 拒绝 标签替换策略: set policy-options policy-statement no-label-substitution term default then reject。
