第 3 层 VPN 基于下一跳的隧道
本主题介绍配置动态通用路由封装 (GRE) 隧道和动态 MPLS-over-UDP 隧道以支持隧道复合下一跳跃。它还提供了有关配置反向路径转发以防止反欺骗的信息。
示例:配置基于下一跃点的动态 GRE 隧道
此示例说明如何配置包含隧道复合下一跃点 (CNH) 而不是下一跳跃接口的动态通用路由封装 (GRE) 隧道。基于下一跳跃的动态 GRE 隧道比基于接口的动态 GRE 隧道具有扩展优势。
要求
此示例使用以下硬件和软件组件:
五个带 MPC 和 MIC 的 MX 系列路由器。
在 PE 路由器上运行的 Junos OS 16.2 或更高版本。
开始之前:
配置设备接口,包括环路接口。
-
为设备配置路由器 ID 和自治系统编号。
与远程 PE 设备建立内部 BGP (IBGP) 会话。
在设备之间建立 OSPF 对等互联。
概述
从 Junos OS 版本 16.2 开始,动态通用路由封装 (GRE) 隧道支持为配置的每个 GRE 隧道创建通道复合下一跳跃。
默认情况下,对于配置的每个新的动态 GRE 隧道,将创建一个对应的逻辑隧道接口。这称为基于接口的动态隧道,是创建动态隧道的默认模式。在基于接口的动态隧道上,可在设备上配置的隧道数量取决于设备上支持的接口总数。基于下一跳跃的动态 GRE 隧道消除了对物理接口的依赖,GRE 隧道封装作为下一跳跃指令实施,而无需创建逻辑隧道接口。这为可在设备上创建的动态隧道数量提供了扩展优势。
从 Junos OS 17.1 版开始,在带有 MPC 和 MIC 的 MX 系列路由器上,基于下一跳跃的动态 GRE 隧道的扩展限制也随之增加。增加的扩展值有利于数据中心网络,其中需要网关路由器通过 IP 基础架构与多个服务器通信;例如,在 Contrail 网络中。
在给定时间点,可以将基于下一跳跃的动态隧道或基于默认接口的动态 GRE 隧道存在于设备上。从一个隧道模式切换到另一个隧道模式可删除现有隧道,并根据支持的扩展限制在新的隧道模式下创建新隧道。同样,在给定时间点,对于同一隧道目标,基于下一跳跃的隧道封装类型可以是 GRE 或 UDP。
要启用基于下一跳跃的动态 GRE 隧道,请在层次结构级别中[edit routing-options dynamic-tunnels gre]
包含语next-hop-based-tunnel
句。
现有动态通道功能需要完整的静态配置。目前,从通告路由中的对等设备接收的隧道信息将被忽略。从 Junos OS 17.4R1 版开始,在 MX 系列路由器上,基于下一跳跃的动态 GRE 隧道使用 BGP 封装扩展社区发出信号。BGP 导出策略用于指定隧道类型、通告发送方侧隧道信息,以及解析和传送接收方通道信息。通道是根据接收的类型通道公共组创建的。
BGP 支持多个通道封装。接收多个功能后,基于下一跳跃的动态隧道将根据配置的 BGP 策略和隧道优先级创建。隧道优先级应在隧道两端保持一致,以便设置隧道。默认情况下,MPLS-over-UDP (MPLSoUDP) 隧道优先于 GRE 隧道。如果存在动态隧道配置,则该配置优先于接收的隧道公共组。
配置基于下一跳跃的动态 GRE 隧道时,请注意以下注意事项:
动态隧道创建在 IBGP 协议下一跳跃解析进程中触发。
允许从基于下一跳跃的隧道模式切换到基于接口的隧道模式(反之亦然),这会影响每个模式中支持的 IP 隧道扩展值方面的网络性能。
基于下一跳跃的动态隧道配置不支持 RSVP 自动网状隧道。
此功能支持基于全新 IPv4 映射-IPv6 下一跳跃的动态 GRE 隧道创建。
基于下一跳跃的动态 GRE 隧道配置不支持以下功能:
RSVP 自动网状
逻辑系统
发送方(MX 系列)侧的每通道流量统计信息收集
隧道接口上的 QoS 实施,例如管制和整形。
路径最大传输单元发现
GRE 关键功能
GRE 激活消息的 GRE 操作、管理和维护 (OAM)。
拓扑
图 1 说明了动态 GRE 隧道上第 3 层 VPN 场景。客户边缘 (CE) 设备、CE1 和 CE2 分别连接到提供商边缘 (PE) 设备、PE1 和 PE2。PE 设备连接到提供商设备 (设备 P1),内部 BGP (IBGP) 会话将两个 PE 设备互连。PE 设备之间配置了两个动态 GRE 隧道。从设备 PE1 到设备 PE2 的动态隧道基于下一跳跃隧道模式,从设备 PE2 到设备 PE1 的动态隧道基于接口隧道模式。

基于下一跳跃的动态 GRE 隧道处理方式如下:
-
配置基于下一跳跃的动态 GRE 隧道后,将为 inet.3 路由表中的协议下一跳跃创建带有隧道 CNH 的隧道目标掩码路由。只有当动态隧道配置被删除时,此 IP 通道路由才会被撤销。
隧道 CNH 属性包括:
-
禁用第 3 层 VPN CNH 时 — 源和目标地址、封装字符串和 VPN 标签。
-
当启用第 3 层 VPN CNH 和每前缀 VPN 标签分配时 — 源地址、目标地址和封装字符串。
-
启用第 3 层 VPN CNH 并禁用每前缀 VPN 标签分配 — 源地址、目标地址和封装字符串。此情况下的路由会添加至带有辅助路由的另一个虚拟路由和转发表。
-
-
PE 设备使用 IBGP 会话互连。远程 BGP 邻接方的 IBGP 路由下一跳跃是协议下一跳跃,使用隧道掩码路由与隧道下一跳跃解析。
-
在隧道复合下一跳跃上解析下一跳跃后,将创建带有下一跳跃转发的间接下一跳跃。
-
通道 CNH 用于转发间接下一跳跃的下一跳跃。
配置
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,移除任何换行符,更改与网络配置匹配所需的任何详细信息,将命令复制并粘贴到层级的 CLI 中 [edit]
,然后从配置模式进入 commit
。
CE1
set interfaces ge-0/0/0 unit 0 family inet address 10.0.0.1/8 set interfaces lo0 unit 0 family inet address 10.127.0.1/8 set routing-options router-id 10.127.0.1 set routing-options autonomous-system 65200 set protocols bgp group ce1-pe1 export export-loopback-direct set protocols bgp group ce1-pe1 peer-as 65100 set protocols bgp group ce1-pe1 neighbor 10.0.0.2 set policy-options policy-statement export-loopback-direct term term-1 from interface lo0.0 set policy-options policy-statement export-loopback-direct term term-1 from route-filter 10.127.0.1/8 exact set policy-options policy-statement export-loopback-direct term term-1 then accept
CE2
set interfaces ge-0/0/0 unit 0 family inet address 203.0.113.2/24 set interfaces lo0 unit 0 family inet address 10.127.0.5/32 set routing-options router-id 10.127.0.5 set routing-options autonomous-system 65200 set protocols bgp group ce1-pe1 export export-loopback-direct set protocols bgp group ce1-pe1 peer-as 100 set protocols bgp group ce1-pe1 neighbor 203.0.113.1 set policy-options policy-statement export-loopback-direct term term-1 from interface lo0.0 set policy-options policy-statement export-loopback-direct term term-1 from route-filter 10.127.0.5/8 exact set policy-options policy-statement export-loopback-direct term term-1 then accept
PE1
set interfaces ge-0/0/0 unit 0 family inet address 10.0.0.2/8 set interfaces ge-0/0/1 unit 0 family inet address 192.0.2.1/24 set interfaces ge-0/0/1 unit 0 family mpls set interfaces lo0 unit 0 family inet address 10.127.0.2/32 set routing-options static route 10.33.0.0/16 next-hop 192.0.2.2 set routing-options router-id 10.127.0.2 set routing-options autonomous-system 65100 set routing-options dynamic-tunnels gre next-hop-based-tunnel set routing-options dynamic-tunnels gre-dyn-tunnel-to-pe2 source-address 10.127.0.2 set routing-options dynamic-tunnels gre-dyn-tunnel-to-pe2 gre set routing-options dynamic-tunnels gre-dyn-tunnel-to-pe2 destination-networks 172.16.0.0/16 set protocols bgp group IBGP type internal set protocols bgp group IBGP local-address 10.127.0.2 set protocols bgp group IBGP family inet-vpn unicast set protocols bgp group IBGP neighbor 10.127.0.4 set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set routing-instances L3VPN-Over-GRE-PE1 instance-type vrf set routing-instances L3VPN-Over-GRE-PE1 interface ge-0/0/0.0 set routing-instances L3VPN-Over-GRE-PE1 route-distinguisher 10.127.0.2:1 set routing-instances L3VPN-Over-GRE-PE1 vrf-target target:600:1 set routing-instances L3VPN-Over-GRE-PE1 protocols bgp group pe1-ce1 peer-as 65200 set routing-instances L3VPN-Over-GRE-PE1 protocols bgp group pe1-ce1 neighbor 10.0.0.1 as-override
P1
set interfaces ge-0/0/0 unit 0 family inet address 192.0.2.2/24 set interfaces ge-0/0/0 unit 0 family mpls set interfaces ge-0/0/1 unit 0 family inet address 198.51.100.1/24 set interfaces ge-0/0/1 unit 0 family mpls set interfaces lo0 unit 0 family inet address 10.127.0.3/32 set routing-options router-id 10.127.0.3 set routing-options autonomous-system 65100 set protocols ospf area 0.0.0.0 interface ge-0/0/0.0 set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive
PE2
set interfaces ge-0/0/0 unit 0 family inet address 203.0.113.1/24 set interfaces ge-0/0/1 unit 0 family inet address 198.51.100.2/24 set interfaces lo0 unit 0 family inet address 10.127.0.4/32 set routing-options nonstop-routing set routing-options router-id 10.127.0.4 set routing-options autonomous-system 65100 set routing-options dynamic-tunnels gre-dyn-tunnel-to-pe1 source-address 10.127.0.4 set routing-options dynamic-tunnels gre-dyn-tunnel-to-pe1 gre set routing-options dynamic-tunnels gre-dyn-tunnel-to-pe1 destination-networks 172.16.0.0/16 set protocols bgp group IBGP type internal set protocols bgp group IBGP local-address 10.127.0.4 set protocols bgp group IBGP family inet-vpn unicast set protocols bgp group IBGP neighbor 10.127.0.2 set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set routing-instances L3VPN-Over-GRE-PE2 instance-type vrf set routing-instances L3VPN-Over-GRE-PE2 interface ge-0/0/0.0 set routing-instances L3VPN-Over-GRE-PE2 route-distinguisher 10.127.0.4:1 set routing-instances L3VPN-Over-GRE-PE2 vrf-target target:600:1 set routing-instances L3VPN-Over-GRE-PE2 protocols bgp group ebgp peer-as 65200 set routing-instances L3VPN-Over-GRE-PE2 protocols bgp group ebgp neighbor 203.0.113.2 as-override
程序
逐步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 CLI 用户指南中的配置模式下使用 CLI 编辑器。
要配置设备 PE1:
配置设备接口,包括设备的环路接口。
[edit interfaces] user@PE1# set ge-0/0/0 unit 0 family inet address 10.0.0.2/8 user@PE1# set ge-0/0/1 unit 0 family inet address 192.0.2.1/24 user@PE1# set ge-0/0/1 unit 0 family mpls user@PE1# set lo0 unit 0 family inet address 10.127.0.2/8/32
为设备 PE1 的路由配置静态路由,并将设备 P1 配置为下一跳跃目标。
[edit routing-options] user@PE1# set static route 172.16.0.0/16 next-hop 192.0.2.2
为设备 PE1 配置路由器 ID 和自治系统编号。
[edit routing-options] user@PE1# set router-id 10.127.0.2 user@PE1# set autonomous-system 65100
配置 PE 设备之间的 IBGP 对等互连。
[edit protocols] user@PE1# set bgp group IBGP type internal user@PE1# set bgp group IBGP local-address 10.127.0.2 user@PE1# set bgp group IBGP family inet-vpn unicast user@PE1# set bgp group IBGP neighbor 10.127.0.4
在设备 PE1 的所有接口(不包括管理接口)上配置 OSPF。
[edit protocols] user@PE1# set ospf area 0.0.0.0 interface ge-0/0/1.0 user@PE1# set ospf area 0.0.0.0 interface lo0.0 passive
在设备 PE1 上启用基于下一跳跃的动态 GRE 隧道配置。
[edit routing-options] user@PE1# set dynamic-tunnels gre next-hop-based-tunnel
配置从设备 PE1 到设备 PE2 的动态 GRE 隧道参数。
[edit routing-options] user@PE1# set dynamic-tunnels gre-dyn-tunnel-to-pe2 source-address 10.127.0.2 user@PE1# set dynamic-tunnels gre-dyn-tunnel-to-pe2 gre user@PE1# set dynamic-tunnels gre-dyn-tunnel-to-pe2 destination-networks 10.66.77.0/24
将负载平衡策略导出到转发表。
[edit routing-options] user@PE1# set forwarding-table export pplb
在设备 PE1 和其他路由实例参数上配置 VRF 路由实例。
[edit routing-instances] user@PE1# set L3VPN-Over-GRE-PE1 instance-type vrf user@PE1# set L3VPN-Over-GRE-PE1 interface ge-0/0/0.0 user@PE1# set L3VPN-Over-GRE-PE1 route-distinguisher 10.127.0.2:1 user@PE1# set L3VPN-Over-GRE-PE1 vrf-target target:600:1
在路由实例配置中启用 BGP,以便与设备 CE1 对等。
[edit routing-instances] user@PE1# set L3VPN-Over-GRE-PE1 protocols bgp group pe1-ce1 peer-as 65200 user@PE1# set L3VPN-Over-GRE-PE1 protocols bgp group pe1-ce1 neighbor 10.0.0.1 as-override
结果
在配置模式下,输入 show interfaces
、 show routing-options
、 show protocols
和 show routing-instances
命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。
user@PE1# show interfaces ge-0/0/0 { unit 0 { family inet { address 10.0.0.2/8; } } } ge-0/0/1 { unit 0 { family inet { address 192.0.2.1/24; } family mpls; } } lo0 { unit 0 { family inet { address 10.127.0.2/32; } } }
user@PE1# show routing-options static { route 172.16.0.0/16 next-hop 192.0.2.2; } router-id 10.127.0.2; autonomous-system 65100; dynamic-tunnels { gre next-hop-based-tunnel; gre-dyn-tunnel-to-pe2 { source-address 10.127..2; gre; destination-networks { 172.16.0.0/16; } } }
user@PE1# show protocols bgp { group IBGP { type internal; local-address 127.0.0.2; family inet-vpn { unicast; } neighbor 127.0.0.4; } } ospf { area 0.0.0.0 { interface ge-0/0/1.0; interface lo0.0 { passive; } } }
user@PE1# show routing-instances L3VPN-Over-GRE-PE1 { instance-type vrf; interface ge-0/0/0.0; route-distinguisher 127.0.0.2:1; vrf-target target:600:1; protocols { bgp { group pe1-ce1 { peer-as 200; neighbor 10.0.0.1 { as-override; } } } } }
如果完成设备配置,请在配置模式下输入 commit
。
验证
确认配置工作正常。
验证 PE 设备之间的连接
目的
验证设备 PE1 和设备 PE2 之间的 BGP 对等状态,以及从设备 PE2 接收的 BGP 路由。
行动
在操作模式下 show bgp summary ,运行 和 show route receive-protocol bgp ip-address table bgp.l3vpn.0 命令。
user@PE1> show bgp summary Groups: 2 Peers: 2 Down peers: 0 Table Tot Paths Act Paths Suppressed History Damp State Pending bgp.l3vpn.0 2 2 0 0 0 0 Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped... 127.0.0.4 100 139 136 0 0 58:23 Establ bgp.l3vpn.0: 2/2/2/0 L3VPN-Over-GRE-PE1.inet.0: 2/2/2/0 10.0.0.1 200 135 136 0 0 58:53 Establ L3VPN-Over-GRE-PE1.inet.0: 1/1/1/0
user@PE1> show route receive-protocol bgp 10.127.0.4 table bgp.l3vpn.0 bgp.l3vpn.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path 10.127.0.4:1:127.0.0.5/8 * 127.0.0.4 65100 65200 I 10.127.0.4:1:203.0.113.0/24 * 127.0.0.4 65100 I
意义
在第一个输出中,BGP 会话状态
Establ
为 ,这意味着会话已启动且 PE 设备对等。在第二个输出中,设备 PE1 从设备 PE2 中学习了两个 BGP 路由。
验证设备 PE1 上的动态隧道路由
目的
验证 inet.3 路由表中的路由以及设备 PE1 上的动态隧道数据库信息。
行动
在操作模式下 show route table inet.3 ,运行 和 show dynamic-tunnels database terse 命令。
user@PE1> show route table inet.3 inet.3: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 10.127.0.0/8 *[Tunnel/300] 01:01:45 Tunnel 10.127.0.4/8 *[Tunnel/300] 00:10:24 Tunnel Composite
user@PE1> show dynamic-tunnels database terse Table: inet.3 Destination-network: 10.127.0.0/8 Destination Source Next-hop Type Status 10.127.0.4/8 10.127.0.2 0xb395e70 nhid 612 gre Up
意义
在第一个输出中,由于设备 PE1 配置了基于下一跳跃的动态 GRE 隧道,因此为 inet.3 路由表路由条目创建了一个隧道复合路由。
在第二个输出中,从设备 PE1 到设备 PE2 创建的动态 GRE 隧道已启动,并分配了下一跳跃 ID,而不是下一跳跃接口。
验证设备 PE2 上的动态隧道路由
目的
验证 inet.3 路由表中的路由以及设备 PE2 上的动态隧道数据库信息。
行动
在操作模式下 show route table inet.3 ,运行 和 show dynamic-tunnels database terse 命令。
user@PE2> show route table inet.3 inet.3: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 10.127.0.0/8 *[Tunnel/300] 01:06:52 Tunnel 10.127.0.2/8 *[Tunnel/300] 01:04:45 > via gr-0/1/0.32769
user@PE1> show dynamic-tunnels database terse Table: inet.3 Destination-network: 127.0.0.0/8 Destination Source Next-hop Type 10. 10.127.0.2/8 10.127.0.4 gr-0/1/0.32769 gre Up
意义
在第一个输出中,由于设备 PE2 具有基于默认接口的动态 GRE 隧道配置,因此会为 inet.3 路由表路由条目创建新接口。
在第二个输出中,从设备 PE2 到设备 PE1 创建的动态 GRE 隧道将启动,并将新创建的接口名称分配给该隧道。
验证路由是否具有预期的间接下一跳跃标志
目的
验证设备 PE1 和设备 PE2 是否配置为维护数据包转发引擎转发表上的间接下一跳跃以转发下一跳跃绑定。
行动
在操作模式下,在设备 PE1 和设备 PE2 上运行 show krt indirect-next-hop 命令。
user@PE1> show krt indirect-next-hop Indirect Nexthop: Index: 1048574 Protocol next-hop address: 10.127.0.4 RIB Table: bgp.l3vpn.0 Label: Push 299792 Policy Version: 1 References: 2 Locks: 3 0xb2ab630 Flags: 0x0 INH Session ID: 0x0 INH Version ID: 0 Ref RIB Table: unknown Tunnel type: GRE, Reference count: 3, nhid: 612 Destination address: 10.127.0.4, Source address: 10.127.0.2 Tunnel id: 1, VPN Label: Push 299792, TTL action: prop-ttl IGP FRR Interesting proto count : 2 Chain IGP FRR Node Num : 1 IGP Resolver node(hex) : 0xb3c6d9c IGP Route handle(hex) : 0xb1ad230 IGP rt_entry protocol : Tunnel IGP Actual Route handle(hex) : 0x0 IGP Actual rt_entry protocol : Any
user@PE2> show krt indirect-next-hop Indirect Nexthop: Index: 1048574 Protocol next-hop address: 10.127.0.2 RIB Table: bgp.l3vpn.0 Label: Push 299792 Policy Version: 2 References: 2 Locks: 3 0xb2ab630 Flags: 0x2 INH Session ID: 0x145 INH Version ID: 0 Ref RIB Table: unknown Next hop: via gr-0/1/0.32769 Label operation: Push 299792 Label TTL action: prop-ttl Load balance label: Label 299792: None; Label element ptr: 0xb395d40 Label parent element ptr: 0x0 Label element references: 1 Label element child references: 0 Label element lsp id: 0 Session Id: 0x144 IGP FRR Interesting proto count : 2 Chain IGP FRR Node Num : 1 IGP Resolver node(hex) : 0xb3d36e8 IGP Route handle(hex) : 0xb1af060 IGP rt_entry protocol : Tunnel IGP Actual Route handle(hex) : 0x0 IGP Actual rt_entry protocol : Any
意义
在第一个输出中,设备 PE1 具有到设备 PE2 的基于下一跳跃的动态 GRE 隧道。
在第二个输出中,设备 PE2 具有一个基于接口的动态 GRE 隧道,可连接到设备 PE1。
故障 排除
要排除基于下一跳跃的动态隧道的故障,请参阅:
故障排除命令
问题
基于下一跳跃的动态 GRE 隧道配置未生效。
解决 方案
要排除基于下一跳跃的 GRE 隧道配置的故障,请在语句层次结构中[edit routing-options dynamic-tunnels]
使用以下traceoptions
命令:
traceoptions file file-name
traceoptions file size file-size
traceoptions flag all
例如:
[edit routing-options dynamic-tunnels] traceoptions { file gre_dyn_pe1.wri size 4294967295; flag all; }
示例:配置基于下一跳的 MPLS-over-UDP 动态隧道
此示例说明如何配置包含隧道复合下一跳跃的动态 MPLS-over-UDP 隧道。MPLS-over-UDP 功能在设备上支持的 IP 隧道数量上提供了扩展优势。
从 Junos OS 18.3R1 版开始,PTX 系列路由器和 QFX 系列交换机上支持 MPLS-over-UDP 隧道。对于 PTX 路由器或 QFX 交换机上配置的每一个动态隧道,都会创建一个隧道复合下一跳跃、一个间接下一跳跃以及一个转发下一跃点来解析隧道目标路由。您还可以使用策略控制通过在层次结构级别上包括 转发-rib 配置语句 [edit routing-options dynamic-tunnels]
,通过选择的前缀来解决动态隧道问题。
要求
此示例使用以下硬件和软件组件:
-
五个带 MPC 和 MIC 的 MX 系列路由器。
-
在提供商边缘 (PE) 路由器上运行的 Junos OS 16.2 或更高版本。
开始之前:
-
配置设备接口,包括环路接口。
-
为设备配置路由器 ID 和自动系统编号。
-
与远程 PE 设备建立内部 BGP (IBGP) 会话。
-
在设备之间建立 OSPF 对等互联。
概述
从 Junos OS 版本 16.2 开始,动态 UDP 隧道支持为配置的每个 UDP 隧道创建通道复合下一跳跃。这些基于下一跳跃的动态 UDP 隧道称为 MPLS-over-UDP 隧道。默认情况下,MPLS-over-UDP 隧道将启用通道复合下一跳跃。
MPLS-over-UDP 隧道本质上可能是双向或单向隧道。
-
双向 — 当 PE 设备通过两个方向的 MPLS-over-UDP 隧道连接时,称为双向 MPLS-over-UDP 隧道。
-
单向 — 如果两个 PE 设备一个方向通过 MPLS-over-UDP 隧道连接,另一个方向通过 MPLS/IGP 连接,则称为单向 MPLS-over-UDP 隧道。
单向 MPLS-over-UDP 隧道在迁移情景中使用,或者在两个 PE 设备通过两个脱节的网络相互连接的情况下使用。由于单向 MPLS-over-UDP 隧道不存在反向方向通道,因此您必须在远程 PE 设备上配置基于过滤器的 MPLS-over-UDP 解封装,以便转发信息流。
从 Junos OS 版本 18.2R1 开始,在带有单向 MPLS over-UDP 隧道的 PTX 系列路由器和 QFX10000 上,您必须为 MPLS-over-UDP 数据包配置远程 PE 设备,以及解封装 IP 和 UDP 标头以在反向隧道方向转发数据包的操作。
例如,在远程 PE 设备设备设备 PE2 上,单向 MPLS-over-UDP 隧道需要以下配置:
PE2
[edit firewall filter] user@host# set Decap_Filter term udp_decap from protocol udp user@host# set Decap_Filter term udp_decap from destination-port 6635 user@host# set Decap_Filter term udp_decap then count UDP_PKTS user@host# set Decap_Filter term udp_decap then decapsulate mpls-in-udp user@host# set Decap_Filter term def then count def_pkt user@host# set Decap_Filter term def then accept
在上述样本配置中, Decap_Filter 是用于 MPLS over-UDP 解封装的防火墙过滤器的名称。 udp_decap 术语是用于在设备 PE2 面向核心的接口上接受 UDP 数据包的输入过滤器,然后将 MPLS-over-UDP 数据包解封装到 MPLS-over-IP 数据包以进行转发。
您可以使用现有防火墙操作模式命令,例如 show firewall filter
,查看基于过滤器的 MPLS-over-UDP 解封装。
例如:
user@host >show firewall filter Decap_Filter Filter: Decap_Filter Counters: Name Bytes Packets UDP_PKTS 16744 149 def_pkt 13049 136
对于单向 MPLS-over-UDP 隧道:
-
外部标头仅支持 IPv4 地址。基于过滤器的 MPLS-over-UDP 解封装不支持外部标头中的 IPv6 地址。
-
解封后仅支持默认路由实例。
从 Junos OS 17.1 版开始,在带有 MPC 和 MIC 的 MX 系列路由器上,MPLS-over-UDP 隧道的扩展限制有所提高。
从 Junos 19.2R1 版开始,在带有 MPC 和 MIC 的 MX 系列路由器上,运营商支持运营商 (CSC) 架构可通过 MPLS-over-UDP 隧道部署,通过在支持运营商 PE 设备之间建立的动态 IPv4 UDP 隧道承载 MPLS 流量。借助此增强功能,MPLS-over-UDP 隧道提供的扩展优势进一步增强。IPv6 UDP 隧道不支持使用 MPLS-over-UDP 隧道的 CSC 支持。
现有动态通道功能需要完整的静态配置。目前,从通告路由中的对等设备接收的隧道信息将被忽略。从 Junos OS 版本 17.4R1 开始,在 MX 系列路由器上,基于下一跳跃的动态 MPLS-over-UDP 隧道使用 BGP 封装扩展社区发出信号。BGP 导出策略用于指定隧道类型、通告发送方侧隧道信息,以及解析和传送接收方通道信息。通道是根据接收的类型通道公共组创建的。
BGP 支持多个通道封装。接收多个功能后,基于下一跳跃的动态隧道将根据配置的 BGP 策略和隧道优先级创建。隧道优先级应在隧道两端保持一致,以便设置隧道。默认情况下,MPLS-over-UDP 隧道优先于 GRE 隧道。如果存在动态隧道配置,则该配置优先于接收的隧道公共组。
配置基于下一跳跃的动态 MPLS-over-UDP 隧道时,请注意以下注意事项:
-
必须在 PE 设备之间配置 IBGP 会话。
-
允许在基于下一跳跃的动态隧道封装(UDP 和 GRE)之间切换,这会影响每个模式中支持的 IP 隧道扩展值方面的网络性能。
-
对于同一隧道目标,同时具有 GRE 和 UDP 基于下一跳跃的动态隧道封装类型会导致提交失败。
-
对于单向 MPLS-over-UDP 隧道,您必须在远程 PE 设备上显式配置基于过滤器的 MPLS-over-UDP 解封装,以便转发数据包。
-
MPLS-over-UDP 支持平滑路由引擎切换 (GRES),并且符合统一 ISSU 和 NSR 的 MPLS-over-UDP 隧道类型标记。
-
在 Lite 模式下的虚拟 MX (vMX) 上支持 MPLS-over-UDP 隧道。
-
MPLS-over-UDP 隧道支持基于全新 IPv4 映射-IPv6 下一跳跃的动态 GRE 隧道创建。
-
MPLS-over-UDP 隧道支持与 contrail 的互操作性,其中在 MPLS-over-UDP 隧道中,从 contrail vRouter 创建到 MX 网关。为此,需要在从 MX 系列路由器到 Contrail vRouter 的路由中通告以下公共组:
[edit policy-options community] udp members 0x030c:64512:13;
在给定时间点,contrail vRouter(基于下一跳跃的动态 GRE 隧道、MPLS-over-UDP 隧道或 VXLAN)上仅支持一种隧道类型。
-
基于下一跳跃的动态 MPLS-over-UDP 隧道配置不支持以下功能:
-
RSVP 自动网状
-
纯 IPV6 GRE 和 UDP 隧道配置
-
逻辑系统
-
拓扑
图 2 说明了动态 MPLS-over-UDP 隧道上第 3 层 VPN 场景。客户边缘 (CE) 设备、CE1 和 CE2 分别连接到提供商边缘 (PE) 设备、PE1 和 PE2。PE 设备连接到提供商设备(设备 P1),内部 BGP (IBGP) 会话将两个 PE 设备互连。PE 设备之间配置了基于下一跳跃的动态双向 MPL-over-UDP 隧道。

MPLS-over-UDP 隧道处理方式如下:
-
配置 MPLS-over-UDP 隧道后,将为 inet.3 路由表中的隧道创建带有隧道复合下一跳跃的隧道目标掩码路由。只有当动态隧道配置被删除时,此 IP 通道路由才会被撤销。
隧道复合下一跳跃属性包括:
-
当禁用第 3 层 VPN 复合下一跳跃时 — 源和目标地址、封装字符串和 VPN 标签。
-
当启用第 3 层 VPN 复合下一跳跃和每前缀 VPN 标签分配时 — 源地址、目标地址和封装字符串。
-
当启用第 3 层 VPN 复合下一跳跃并禁用每前缀 VPN 标签分配时 — 源地址、目标地址和封装字符串。此情况下的路由会添加至带有辅助路由的另一个虚拟路由和转发表。
-
-
PE 设备使用 IBGP 会话互连。远程 BGP 邻接方的 IBGP 路由下一跳跃是协议下一跳跃,使用隧道掩码路由与隧道下一跳跃解析。
-
在隧道复合下一跳跃上解析协议下一跳跃后,将创建带有下一跳跃转发的间接下一跳跃。
-
通道复合下一跳跃用于转发间接下一跳跃的下一跳跃。
配置
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,移除任何换行符,更改与网络配置匹配所需的任何详细信息,将命令复制并粘贴到层级的 CLI 中 [edit]
,然后从配置模式进入 commit
。
CE1
set interfaces ge-0/0/0 unit 0 family inet address 10.0.0.1/8 set interfaces lo0 unit 0 family inet address 10.127.0.1/32 set routing-options router-id 10.127.0.1 set routing-options autonomous-system 65200 set protocols bgp group ce1-pe1 export export-loopback-direct set protocols bgp group ce1-pe1 peer-as 100 set protocols bgp group ce1-pe1 neighbor 10.0.0.2 set policy-options policy-statement export-loopback-direct term term-1 from interface lo0.0 set policy-options policy-statement export-loopback-direct term term-1 from route-filter 10.127.0.1/32 exact set policy-options policy-statement export-loopback-direct term term-1 then accept
CE2
set interfaces ge-0/0/0 unit 0 family inet address 203.0.113.2/24 set interfaces lo0 unit 0 family inet address 10.127.0.5/32 set routing-options router-id 10.127.0.5 set routing-options autonomous-system 65200 set protocols bgp group ce1-pe1 export export-loopback-direct set protocols bgp group ce1-pe1 peer-as 65100 set protocols bgp group ce1-pe1 neighbor 203.0.113.1 set policy-options policy-statement export-loopback-direct term term-1 from interface lo0.0 set policy-options policy-statement export-loopback-direct term term-1 from route-filter 10.127.0.5/32 exact set policy-options policy-statement export-loopback-direct term term-1 then accept
PE1
set interfaces ge-0/0/0 unit 0 family inet address 10.0.0.2/8 set interfaces ge-0/0/1 unit 0 family inet address 192.0.2.1/24 set interfaces ge-0/0/1 unit 0 family mpls set interfaces lo0 unit 0 family inet address 10.127.0.2/32 set routing-options static route 10.33.0/16 next-hop 192.0.2.2 set routing-options router-id 10.127.0.2 set routing-options autonomous-system 65100 set routing-options forwarding-table export pplb set routing-options dynamic-tunnels gre next-hop-based-tunnel set routing-options dynamic-tunnels udp-dyn-tunnel-to-pe2 source-address 10.127.0.2 set routing-options dynamic-tunnels udp-dyn-tunnel-to-pe2 udp set routing-options dynamic-tunnels udp-dyn-tunnel-to-pe2 destination-networks 10.127.0.0/24 set protocols bgp group IBGP type internal set protocols bgp group IBGP local-address 10.127.0.2 set protocols bgp group IBGP family inet-vpn unicast set protocols bgp group IBGP neighbor 10.127.0.4 set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set routing-instances MPLS-over-UDP-PE1 instance-type vrf set routing-instances MPLS-over-UDP-PE1 interface ge-0/0/0.0 set routing-instances MPLS-over-UDP-PE1 route-distinguisher 10.127.0.2:1 set routing-instances MPLS-over-UDP-PE1 vrf-target target:600:1 set routing-instances MPLS-over-UDP-PE1 protocols bgp group pe1-ce1 peer-as 65200 set routing-instances MPLS-over-UDP-PE1 protocols bgp group pe1-ce1 neighbor 10.0.0.1 as-override
P1
set interfaces ge-0/0/0 unit 0 family inet address 192.0.2.2/24 set interfaces ge-0/0/0 unit 0 family mpls set interfaces ge-0/0/1 unit 0 family inet address 198.51.100.1/24 set interfaces ge-0/0/1 unit 0 family mpls set interfaces lo0 unit 0 family inet address 10.127.0.3/32 set routing-options router-id 10.127.0.3 set routing-options autonomous-system 65100 set protocols ospf area 0.0.0.0 interface ge-0/0/0.0 set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive
PE2
set interfaces ge-0/0/0 unit 0 family inet address 203.0.113.1/24 set interfaces ge-0/0/1 unit 0 family inet address 198.51.100.2/24 set interfaces ge-0/0/1 unit 0 family mpls set interfaces lo0 unit 0 family inet address 10.127.0.4/8 set routing-options nonstop-routing set routing-options router-id 10.127.0.4 set routing-options autonomous-system 65100 set routing-options forwarding-table export pplb set routing-options dynamic-tunnels udp-dyn-tunnel-to-pe1 source-address 10.127.0.4 set routing-options dynamic-tunnels udp-dyn-tunnel-to-pe1 udp set routing-options dynamic-tunnels udp-dyn-tunnel-to-pe1 destination-networks 10.127.0.0/24 set protocols bgp group IBGP type internal set protocols bgp group IBGP local-address 10.127.0.4 set protocols bgp group IBGP family inet-vpn unicast set protocols bgp group IBGP neighbor 10.127.0.2 set protocols ospf area 0.0.0.0 interface ge-0/0/1.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set routing-instances MPLS-over-UDP-PE2 instance-type vrf set routing-instances MPLS-over-UDP-PE2 interface ge-0/0/0.0 set routing-instances MPLS-over-UDP-PE2 route-distinguisher 10.127.0.4:1 set routing-instances MPLS-over-UDP-PE2 vrf-target target:600:1 set routing-instances MPLS-over-UDP-PE2 protocols bgp group ebgp peer-as 65200 set routing-instances MPLS-over-UDP-PE2 protocols bgp group ebgp neighbor 203.0.113.2 as-override
程序
逐步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 CLI 用户指南中的配置模式下使用 CLI 编辑器。
要配置设备 PE1:
-
配置设备接口,包括设备的环路接口。
[edit interfaces] user@PE1# set ge-0/0/0 unit 0 family inet address 10.0.0.2/8 user@PE1# set ge-0/0/1 unit 0 family inet address 192.0.2.1/24 user@PE1# set ge-0/0/1 unit 0 family mpls user@PE1# set lo0 unit 0 family inet address 10.127.0.2/8
-
为设备 PE1 的路由配置静态路由,并将设备 P1 配置为下一跳跃目标。
[edit routing-options] user@PE1# set static route 10.33.0.0/16 next-hop 192.0.2.2
-
为设备 PE1 配置路由器 ID 和自治系统编号。
[edit routing-options] user@PE1# set router-id 10.127.0.2 user@PE1# set autonomous-system 65100
-
(仅限 PTX 系列)配置策略控制,以解决选定前缀上的 MPLS-over-UDP 动态隧道路由。
[edit routing-options dynamic-tunnels] user@PTX-PE1# set forwarding-rib inet.0 inet-import dynamic-tunnel-fwd-route-import
-
(仅限 PTX 系列)配置入网导入策略,以解决通过的动态隧道目标路由。
[edit policy-options] user@PTX-PE1# set policy-statement dynamic-tunnel-fwd-route-import term 1 from route-filter 10.127.0.4/32 exact user@PTX-PE1# set policy-statement dynamic-tunnel-fwd-route-import term 1 then accept user@PTX-PE1# set policy-options policy-statement dynamic-tunnel-fwd-route-import then reject
-
配置 PE 设备之间的 IBGP 对等互连。
[edit protocols] user@PE1# set bgp group IBGP type internal user@PE1# set bgp group IBGP local-address 10.127.0.2 user@PE1# set bgp group IBGP family inet-vpn unicast user@PE1# set bgp group IBGP neighbor 10.127.0.4
-
在设备 PE1 的所有接口(不包括管理接口)上配置 OSPF。
[edit protocols] user@PE1# set ospf area 0.0.0.0 interface ge-0/0/1.0 user@PE1# set ospf area 0.0.0.0 interface lo0.0 passive
-
在设备 PE1 上启用基于下一跳跃的动态 GRE 隧道配置。
注意:此步骤仅适用于说明基于下一跳跃的动态 GRE 隧道与 MPLS-over-UDP 隧道之间的实施差异。
[edit routing-options] user@PE1# set dynamic-tunnels gre next-hop-based-tunnel
-
配置从设备 PE1 到设备 PE2 的 MPLS-over-UDP 隧道参数。
[edit routing-options] user@PE1# set dynamic-tunnels udp-dyn-tunnel-to-pe2 source-address 10.127.0.2 user@PE1# set dynamic-tunnels udp-dyn-tunnel-to-pe2 udp user@PE1# set dynamic-tunnels udp-dyn-tunnel-to-pe2 destination-networks 10.127.0.0/24
-
在设备 PE1 和其他路由实例参数上配置 VRF 路由实例。
[edit routing-instances] user@PE1# set MPLS-over-UDP-PE1 instance-type vrf user@PE1# set MPLS-over-UDP-PE1 interface ge-0/0/0.0 user@PE1# set MPLS-over-UDP-PE1 route-distinguisher 10.127.0.2:1 user@PE1# set MPLS-over-UDP-PE1 vrf-target target:600:1
-
在路由实例配置中启用 BGP,以便与设备 CE1 对等。
[edit routing-instances] user@PE1# set MPLS-over-UDP-PE1 protocols bgp group pe1-ce1 peer-as 65200 user@PE1# set MPLS-over-UDP-PE1 protocols bgp group pe1-ce1 neighbor 10.0.0.1 as-override
结果
在配置模式下,输入 show interfaces
、 show routing-options
、 show protocols
和 show routing-instances
命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。
user@PE1# show interfaces ge-0/0/0 { unit 0 { family inet { address 10.0.0.2/8; } } } ge-0/0/1 { unit 0 { family inet { address 192.0.2.1/24; } family mpls; } } lo0 { unit 0 { family inet { address 10.127.0.2/32; } } }
user@PE1# show routing-options static { route 10.33.0.0/16 next-hop 192.0.2.2; } router-id 10.127.0.2; autonomous-system 65100; forwarding-table { export pplb; } dynamic-tunnels { gre next-hop-based-tunnel; udp-dyn-tunnel-to-pe2 { source-address 10.127.0.2; udp; destination-networks { 10.127.0.0/24; } } }
user@PE1# show protocols bgp { group IBGP { type internal; local-address 10.127.0.2; family inet-vpn { unicast; } neighbor 10.127.0.4; } } ospf { area 0.0.0.0 { interface ge-0/0/1.0; interface lo0.0 { passive; } } }
user@PE1# show routing-instances MPLS-over-UDP-PE1 { instance-type vrf; interface ge-0/0/0.0; route-distinguisher 10.127.0.2:1; vrf-target target:600:1; protocols { bgp { group pe1-ce1 { peer-as 65200; neighbor 10.0.0.1 { as-override; } } } } }
如果完成设备配置,请在配置模式下输入 commit
。
验证
确认配置工作正常。
验证 PE 设备之间的连接
目的
验证设备 PE1 和设备 PE2 之间的 BGP 对等状态,以及从设备 PE2 接收的 BGP 路由。
行动
在操作模式下 show bgp summary ,运行 和 show route receive-protocol bgp ip-address table bgp.l3vpn.0 命令。
user@PE1> show bgp summary Groups: 2 Peers: 2 Down peers: 0 Table Tot Paths Act Paths Suppressed History Damp State Pending bgp.l3vpn.0 2 2 0 0 0 0 Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped... 10.127.0.4 65100 139 136 0 0 58:23 Establ bgp.l3vpn.0: 2/2/2/0 MPLS-over-UDP-PE1.inet.0: 2/2/2/0 10.10.0.1 65200 135 136 0 0 58:53 Establ MPLS-over-UDP-PE1.inet.0: 1/1/1/0
user@PE1> show route receive-protocol bgp 10.127.0.4 table bgp.l3vpn.0 bgp.l3vpn.0: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path 10.127.0.4:1:127.0.0.5/8 * 10.127.0.4 65100 65200 I
意义
-
在第一个输出中,BGP 会话状态
Establ
为 ,这意味着会话已启动且 PE 设备对等。 -
在第二个输出中,设备 PE1 从设备 PE2 中学习了 BGP 路由。
验证设备 PE1 上的动态隧道路由
目的
验证 inet.3 路由表中的路由以及设备 PE1 上的动态隧道数据库信息。
行动
在操作模式下 show route table inet.3,运行 、 show dynamic-tunnels database terse、 show dynamic-tunnels database和 show dynamic-tunnels database summary 命令。
user@PE1> show route table inet.3 inet.3: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 10.127.0.0/24 *[Tunnel/300] 00:21:18 Tunnel 127.0.0.4/8 *[Tunnel/300] 00:21:18 Tunnel Composite
user@PE1> show dynamic-tunnels database terse Table: inet.3 Destination-network: 10.127.0.0/24 Destination Source Next-hop Type Status 10.127.0.4/8 10.127.0.2 0xb395b10 nhid 613 udp Up
user@PE1> show dynamic-tunnels database Table: inet.3 . . . Tunnel to: 10.127.0.4/32 Reference count: 2 Next-hop type: UDP Source address: 10.127.0.2 Tunnel Id: 2 Next hop: tunnel-composite, 0xb395b10, nhid 613 VPN Label: Push 299776 Reference count: 3 Traffic Statistics: Packets 0, Bytes 0 State: Up
user@PE1> show dynamic-tunnels database summary Dynamic Tunnels, Total 1 displayed GRE Tunnel: Active Tunnel Mode, Next Hop Base IFL Based, Total 0 displayed, Up 0, Down 0 Nexthop Based, Total 0 displayed, Up 0, Down 0 RSVP Tunnel: Total 0 displayed UDP Tunnel: Total 1 displayed, Up 1, Down 0
意义
-
在第一个输出中,由于设备 PE1 配置了 MPLS-over-UDP 隧道,因此为 inet.3 路由表路由条目创建了一个隧道复合路由。
-
在剩余输出中,MPLS-over-UDP 隧道显示为隧道封装类型、隧道下一跳跃参数和隧道状态。
验证设备 PE2 上的动态隧道路由
目的
验证 inet.3 路由表中的路由以及设备 PE2 上的动态隧道数据库信息。
行动
在操作模式下,运行 和 show route table inet.3show dynamic-tunnels database terse 命令。
user@PE2> show route table inet.3 inet.3: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 10.127.0.0/24 *[Tunnel/300] 00:39:31 Tunnel 10.127.0.2/32 *[Tunnel/300] 00:24:53 Tunnel Composite
user@PE1> show dynamic-tunnels database terse Table: inet.3 Destination-network: 127.0.0.0/8 Destination Source Next-hop Type Status 10.127.0.2/32 10.127.0.4 0xb395450 nhid 615 udp Up
意义
输出显示 MPLS-over-UDP 隧道创建和分配为下一跳跃接口的下一跳跃 ID,类似于设备 PE1。
验证路由是否具有预期的间接下一跳跃标志
目的
验证设备 PE1 和设备 PE2 是否配置为维护数据包转发引擎转发表上的间接下一跳跃以转发下一跳跃绑定。
行动
在操作模式下,在设备 PE1 和设备 PE2 上运行 show krt indirect-next-hop 命令。
user@PE1> show krt indirect-next-hop Indirect Nexthop: Index: 1048574 Protocol next-hop address: 10.127.0.4 RIB Table: bgp.l3vpn.0 Label: Push 299776 Policy Version: 1 References: 1 Locks: 3 0xb2ab630 Flags: 0x0 INH Session ID: 0x0 INH Version ID: 0 Ref RIB Table: unknown Tunnel type: UDP, Reference count: 3, nhid: 613 Destination address: 10.127.0.4, Source address: 10.127.0.2 Tunnel id: 2, VPN Label: Push 299776, TTL action: prop-ttl IGP FRR Interesting proto count : 1 Chain IGP FRR Node Num : 1 IGP Resolver node(hex) : 0xb3c70dc IGP Route handle(hex) : 0xb1ae688 IGP rt_entry protocol : Tunnel IGP Actual Route handle(hex) : 0x0 IGP Actual rt_entry protocol : Any
user@PE2> show krt indirect-next-hop Indirect Nexthop: Index: 1048575 Protocol next-hop address: 10.127.0.2 RIB Table: bgp.l3vpn.0 Label: Push 299776 Policy Version: 1 References: 2 Locks: 3 0xb2ab740 Flags: 0x0 INH Session ID: 0x0 INH Version ID: 0 Ref RIB Table: unknown Tunnel type: UDP, Reference count: 3, nhid: 615 Destination address: 10.127.0.2, Source address: 10.127.0.4 Tunnel id: 1, VPN Label: Push 299776, TTL action: prop-ttl IGP FRR Interesting proto count : 2 Chain IGP FRR Node Num : 1 IGP Resolver node(hex) : 0xb3d3a28 IGP Route handle(hex) : 0xb1ae634 IGP rt_entry protocol : Tunnel IGP Actual Route handle(hex) : 0x0 IGP Actual rt_entry protocol : Any
意义
输出显示,PE 设备之间会创建基于下一跳跃的动态 MPLS-over-UDP 隧道。
故障 排除
要排除基于下一跳跃的动态隧道的故障,请参阅:
故障排除命令
问题
基于下一跳跃的动态 MPLS-over-UDP 隧道配置未生效。
解决 方案
要排除基于下一跳跃的 MPLS-over-UDP 隧道配置的故障,请在语句层次结构中[edit routing-options dynamic-tunnels]
使用以下traceroute
命令:
-
traceoptions file file-name
-
traceoptions file size file-size
-
traceoptions flag all
例如:
[edit routing-options dynamic-tunnels] traceoptions { file udp_dyn_pe1.wri size 4294967295; flag all; }
基于下一跳的动态隧道的反欺骗保护概述
随着数据中心大规模 IP 隧道部署的兴起,有必要添加安全措施,允许用户限制来自遭到入侵的虚拟机 (VM) 的恶意流量。一种可能的攻击是通过网关路由器从遭到入侵的服务器向任意客户 VPN 注入流量。在这种情况下,对 IP 隧道进行反欺骗检查可确保只有合法来源从其指定 IP 隧道将流量注入数据中心。
基于下一跳跃的动态 IP 隧道为设备上创建的每个动态隧道创建一个隧道复合下一跳跃。由于基于下一跳跃的动态隧道消除了对配置的每个新动态隧道物理接口的依赖性,因此配置基于下一跳跃的动态隧道比可在设备上创建的动态隧道数量具有扩展优势。从 Junos OS 版本 17.1 开始,可以为基于下一跳跃的动态 IP 隧道提供反欺骗功能。借助此增强功能,将实施安全措施,以防止通过网关路由器从遭到入侵的服务器将流量注入任意客户 VPN。
在数据包转发引擎中使用反向路径转发检查实施反欺骗。对于通过隧道进入路由实例的信息流,将执行检查。目前,当网关路由器从隧道接收信息流时,只有目标查找我们完成,并相应地转发数据包。启用反欺骗保护后,除了通道目标查找之外,网关路由器还会对 VPN 中的封装数据包 IP 标头进行源地址查找。这可确保合法来源通过其指定 IP 隧道注入流量。因此,反欺骗保护可确保隧道流量从指定隧道上的合法来源接收。
图 3 展示了具有反欺骗保护要求的示例拓扑。

在此示例中,网关路由器是路由器 G。 路由器 G 有两个 VPN— 绿色和蓝色。服务器 A 和服务器 B 这两台服务器可分别通过基于下一跳跃的动态隧道 T1 和 T2 到达路由器 G 上的绿色和蓝色 VPN。连接到服务器的几台主机和虚拟机(P、Q、R、S 和 T)可以通过网关路由器、路由器 G 到达 VPN。路由器 G 具有绿色和蓝色 VPN 的虚拟路由和转发 (VRF) 表,每个表都填充了这些 VPN 中的虚拟机的可达性信息。
例如,在 VPN 绿色中,路由器 G 使用隧道 T1 到达主机 P,隧道 T2 到达主机 R 和 S,并且在隧道 T1 和 T2 之间进行负载平衡以到达多宿主机 Q。在 VPN Blue 中,路由器 G 使用隧道 T1 到达主机 P 和 R,并使用隧道 T2 到达主机 Q 和 T。
检查将通过反向路径转发::
数据包来自其指定隧道上的合法来源。
VPN 绿色主机 P 使用隧道 T1 将数据包发送至 X 主机。由于路由器 G 可通过隧道 T1 到达主机 P,因此允许数据包通过并将数据包转发至主机 X。
数据包来自其指定隧道上的多宿主源。
VPN 绿色主机 Q 在服务器 A 和 B 上是多宿主,可通过隧道 T1 和 T2 到达路由器 G。主机 Q 使用隧道 T1 发送一个数据包托管 Y,并将一个数据包发送至使用隧道 T2 托管 X 的数据包。由于路由器 G 可通过隧道 T1 和 T2 到达主机 Q,因此允许数据包分别传递并转发至主机 Y 和 X。
默认情况下,第 3 层 VPN 没有启用反欺骗保护。要为基于下一跳跃的动态隧道启用反欺骗,请在层次结构级别中[edit routing-instances routing-instance-name routing-options forwarding-table]
包含ip-tunnel-rpf-check
语句。反向路径转发检查仅应用于 VRF 路由实例。默认模式设置为strict
,来自非设计隧道源的数据包不会通过检查。该ip-tunnel-rpf-check
模式可以设置为loose
,当数据包来自不存在源时,反向路径转发检查将发生故障。可在语句下ip-tunnel-rpf-check
配置可选防火墙过滤器,以计数和记录出现反向路径转发检查故障的数据包。
以下样本输出显示反欺骗配置:
[edit routing-instances routing-instance-name routing-options forwarding-table] ip-tunnel-rpf-check { mode loose; fail-filter filter-name; }
为基于下一跳跃的动态隧道配置反欺骗保护时,请注意以下准则:
反欺骗保护只能针对 IPv4 隧道和 IPv4 数据流量启用。IPv6 隧道和 IPv6 数据流量不支持反欺骗功能。
针对基于下一跳跃的动态隧道的防欺骗可以检测并防止遭到入侵的虚拟机(内部源反向路径转发检查),但不能检测和阻止正在被攻击的服务器。
基于下一跳跃的 IP 隧道可以在 inet.0 路由表上发起并终止。
当 VRF 路由实例具有标签交换接口 (LIS) (使用
vrf-table-label
) 或虚拟隧道 (VT) 接口时,防欺骗保护是有效的。per-next-hop
VRF 路由实例上贴有标签,不支持反欺骗保护。仅
rpf fail-filter
适用于内部 IP 数据包。启用反欺骗检查不会影响设备上基于下一跳跃的动态隧道的扩展限制。
为 VRF 路由实例启用了反欺骗保护的系统资源利用率略高于未启用反欺骗保护的基于下一跃点的动态隧道的利用率。
反欺骗保护需要额外进行源 IP 地址检查,对网络性能的影响微乎其微。
反欺骗保护支持平滑路由引擎切换 (GRES) 和不中断服务的软件升级 (ISSU)。
示例:为基于下一跃点的动态隧道配置反欺骗保护
此示例说明如何为虚拟路由和转发 (VRF) 路由实例配置反欺骗路径转发检查,以便为基于下一跳跃的动态隧道提供反欺骗保护。检查可确保合法来源通过其指定 IP 隧道注入流量。
要求
此示例使用以下硬件和软件组件:
三个带 MIC 的 MX 系列路由器,每个都连接到主机设备。
在一个或所有路由器上运行的 Junos OS 17.1 或更高版本。
开始之前:
在灵活 PIC 集中器上启用通道服务配置。
配置路由器接口。
配置路由器 ID 并为路由器分配自治系统编号。
与隧道端点建立内部 BGP (IBGP) 会话。
在所有路由器上配置 RSVP。
在所有路由器上配置 OSPF 或任何其他内部网关协议。
在两个路由器之间配置两个基于下一跳跃的动态 IP 隧道。
为每个路由器到主机连接配置 VRF 路由实例。
概述
从 Junos OS 版本 17.1 开始,反欺骗功能被添加到基于下一跳跃的动态 IP 隧道中,在该隧道中,将使用数据包转发引擎中的反向路径转发对通过隧道到路由实例的信息流执行检查。
目前,当网关路由器从隧道接收信息流时,仅在转发之前完成目标地址查找。借助反欺骗保护,网关路由器可对 VPN 中的封装数据包 IP 标头进行源地址查找,以确保合法源通过其指定 IP 隧道注入流量。这称为严格模式,是反欺骗保护的默认行为。要从非设计隧道传递信息流,反向路径转发检查在丢失模式下启用。对于从不存在源接收的信息流,在严格和松散模式下,反向路径转发检查均失败。
VRF 路由实例支持反欺骗。要为动态隧道启用反欺骗,请在层次结构级别中[edit routing-instances routing-instance-name routing-options forwarding-table]
包含ip-tunnel-rpf-check
语句。
拓扑
图 4 展示了启用了反欺骗保护的示例网络拓扑。路由器 R0、R1 和 R2 分别连接到主机 Host0、Host1 和 Host2。两个通用路由封装 (GRE) 基于下一跳跃的动态隧道,隧道 1 和隧道 2 – 分别将路由器 R0 与路由器 R1 和 R2 连接。VRF 路由实例在每个路由器及其连接的主机设备之间运行。

例如,路由器 0 从路由器 R2 到基于下一跳跃的动态 GRE 隧道(隧道 2)在路由器 0 上接收三个数据包(数据包 A、B 和 C)。这些数据包的源 IP 地址为 172.17.0.2(数据包 A)、172.18.0.2(数据包 B) 和 172.20.0.2(数据包 C)。
数据包 A 和 B 的源 IP 地址分别属于主机 2 和主机 1。数据包 C 是一个不存在的源隧道。此示例中的指定隧道为隧道 2,非设计隧道为隧道 1。因此,数据包的处理方式如下:
Packet A— 由于来源来自指定隧道(隧道 2),数据包 A 会通过反向路径转发检查,并处理以进行通过隧道 2 的转发。
Packet B—由于源来自隧道 1(这是一个非指定隧道),因此默认情况下,Packet B 会在严格模式下出现反向路径转发检查故障。如果启用了松散模式,则允许数据包 B 进行转发。
Packet C—由于源是不存在的隧道源,数据包 C 会故障进行反向路径转发检查,并且数据包不会被转发。
配置
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,移除任何换行符,更改与网络配置匹配所需的任何详细信息,将命令复制并粘贴到层级的 CLI 中 [edit]
,然后从配置模式进入 commit
。
路由器 R0
set interfaces ge-0/0/0 unit 0 family inet address 192.0.2.1/24 set interfaces ge-0/0/1 unit 0 family inet address 198.51.100.1/24 set interfaces ge-0/0/2 vlan-tagging set interfaces ge-0/0/2 unit 0 vlan-id 1 set interfaces ge-0/0/2 unit 0 family inet address 172.16.0.1/16 set interfaces lo0 unit 0 family inet address 10.1.1.1/32 set routing-options router-id 10.1.1.1 set routing-options autonomous-system 100 set routing-options dynamic-tunnels gre next-hop-based-tunnel set routing-options dynamic-tunnels T1 source-address 192.0.2.1 set routing-options dynamic-tunnels T1 gre set routing-options dynamic-tunnels T1 destination-networks 192.0.2.0/24 set routing-options dynamic-tunnels T2 source-address 198.51.100.1 set routing-options dynamic-tunnels T2 gre set routing-options dynamic-tunnels T2 destination-networks 198.51.100.0/24 set protocols rsvp interface all set protocols rsvp interface fxp0.0 disable set protocols bgp group IBGP type internal set protocols bgp group IBGP local-address 10.1.1.1 set protocols bgp group IBGP family inet-vpn unicast set protocols bgp group IBGP neighbor 20.1.1.1 set protocols bgp group IBGP neighbor 30.1.1.1 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 all set routing-instances VPN1 instance-type vrf set routing-instances VPN1 interface ge-0/0/2.0 set routing-instances VPN1 route-distinguisher 100:100 set routing-instances VPN1 vrf-target target:100:1 set routing-instances VPN1 vrf-table-label set routing-instances VPN1 routing-options forwarding-table ip-tunnel-rpf-check mode strict set routing-instances VPN1 protocols bgp group External type external set routing-instances VPN1 protocols bgp group External family inet unicast set routing-instances VPN1 protocols bgp group External peer-as 200 set routing-instances VPN1 protocols bgp group External neighbor 172.16.0.1
路由器 R1
set interfaces ge-0/0/0 unit 0 family inet address 192.0.2.2/24 set interfaces ge-0/0/1 vlan-tagging set interfaces ge-0/0/1 unit 0 vlan-id 2 set interfaces ge-0/0/1 unit 0 family inet address 172.18.0.1/16 set interfaces lo0 unit 0 family inet address 20.1.1.1/32 set routing-options router-id 20.1.1.1 set routing-options autonomous-system 100 set routing-options dynamic-tunnels gre next-hop-based-tunnel set routing-options dynamic-tunnels T1 source-address 192.0.2.2 set routing-options dynamic-tunnels T1 gre set routing-options dynamic-tunnels T1 destination-networks 192.0.2.0/24 set protocols rsvp interface all set protocols rsvp interface fxp0.0 disable set protocols bgp group IBGP type internal set protocols bgp group IBGP local-address 20.1.1.1 set protocols bgp group IBGP family inet-vpn unicast set protocols bgp group IBGP neighbor 30.1.1.1 set protocols bgp group IBGP neighbor 10.1.1.1 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 all set routing-instances VPN2 instance-type vrf set routing-instances VPN2 interface ge-0/0/1.0 set routing-instances VPN2 route-distinguisher 100:200 set routing-instances VPN2 vrf-target target:200:1 set routing-instances VPN2 vrf-table-label
R 2
set interfaces ge-0/0/1 unit 0 family inet address 198.51.100.2/24 set interfaces ge-0/0/2 vlan-tagging set interfaces ge-0/0/2 unit 0 vlan-id 3 set interfaces ge-0/0/2 unit 0 family inet address 172.17.0.1/16 set interfaces lo0 unit 0 family inet address 30.1.1.1/32 set routing-options router-id 30.1.1.1 set routing-options autonomous-system 100 set routing-options dynamic-tunnels gre next-hop-based-tunnel set routing-options dynamic-tunnels T2 source-address 198.51.100.2 set routing-options dynamic-tunnels T2 gre set routing-options dynamic-tunnels T2 destination-networks 198.51.100.0/24 set protocols rsvp interface all set protocols rsvp interface fxp0.0 disable set protocols bgp group IBGP type internal set protocols bgp group IBGP local-address 30.1.1.1 set protocols bgp group IBGP family inet-vpn unicast set protocols bgp group IBGP neighbor 20.1.1.1 set protocols bgp group IBGP neighbor 10.1.1.1 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 all set routing-instances VPN3 instance-type vrf set routing-instances VPN3 interface ge-0/0/2.0 set routing-instances VPN3 route-distinguisher 100:300 set routing-instances VPN3 vrf-target target:300:1 set routing-instances VPN3 vrf-table-label
程序
逐步过程
以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅 CLI 用户指南中的配置模式下使用 CLI 编辑器。
要配置路由器 R0:
配置路由器 R0 的接口,包括回传接口。
[edit interfaces] user@R0# set ge-0/0/0 unit 0 family inet address 192.0.2.1/24 user@R0# set ge-0/0/1 unit 0 family inet address 198.51.100.1/24 user@R0# set ge-0/0/2 vlan-tagging user@R0# set ge-0/0/2 unit 0 vlan-id 1 user@R0# set ge-0/0/2 unit 0 family inet address 172.16.0.1/16 user@R0# set lo0 unit 0 family inet address 10.1.1.1/32
为路由器 R0 分配路由器 ID 和自治系统编号。
[edit routing-options] user@R0# set router-id 10.1.1.1 user@R0# set autonomous-system 100
配置路由器之间的 IBGP 对等互连。
[edit protocols] user@R0# set bgp group IBGP type internal user@R0# set bgp group IBGP local-address 10.1.1.1 user@R0# set bgp group IBGP family inet-vpn unicast user@R0# set bgp group IBGP neighbor 20.1.1.1 user@R0# set bgp group IBGP neighbor 30.1.1.1
在路由器 R0 的所有接口(不包括管理接口)上配置 OSPF。
[edit protocols] user@R0# set ospf traffic-engineering user@R0# set ospf area 0.0.0.0 interface lo0.0 passive user@R0# set ospf area 0.0.0.0 interface all
在路由器 R0 的所有接口(不包括管理接口)上配置 RSVP。
[edit protocols] user@R0# set rsvp interface all user@R0# set rsvp interface fxp0.0 disable
在路由器 R0 上启用基于下一跳跃的动态 GRE 隧道配置。
[edit routing-options] user@R0# set dynamic-tunnels gre next-hop-based-tunnel
配置从路由器 R0 到路由器 R1 的动态 GRE 隧道参数。
[edit routing-options] user@R0# set dynamic-tunnels T1 source-address 192.0.2.1 user@R0# set dynamic-tunnels T1 gre user@R0# set dynamic-tunnels T1 destination-networks 192.0.2.0/24
配置从路由器 R0 到路由器 R2 的动态 GRE 隧道参数。
[edit routing-options] user@R0# set dynamic-tunnels T2 source-address 198.51.100.1 user@R0# set dynamic-tunnels T2 gre user@R0# set dynamic-tunnels T2 destination-networks 198.51.100.0/24
在路由器 R0 上配置虚拟路由和转发 (VRF) 路由实例,并将连接到主机 1 的接口分配给 VRF 实例。
[edit routing-instances] user@R0# set VPN1 instance-type vrf user@R0# set VPN1 route-distinguisher 100:100 user@R0# set VPN1 vrf-target target:100:1 user@R0# set VPN1 vrf-table-label user@R0# set VPN1 interface ge-0/0/2.0
为 VRF 路由实例配置与 Host 1 的外部 BGP 会话。
[edit routing-instances] user@R0# set VPN1 protocols bgp group External type external user@R0# set VPN1 protocols bgp group External family inet unicast user@R0# set VPN1 protocols bgp group External peer-as 200 user@R0# set VPN1 protocols bgp group External neighbor 172.16.0.1
为路由器 R0 上的 VRF 路由实例配置反欺骗保护。这支持对路由器 0 上的基于下一跳跃的动态隧道 T1 和 T2 进行反向路径转发检查。
[edit routing-instances] user@R0# set VPN1 routing-options forwarding-table ip-tunnel-rpf-check mode strict
结果
在配置模式下,输入 show interfaces
、 show routing-options
、 show protocols
和 show routing-options
命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。
user@R0# show interfaces ge-0/0/0 { unit 0 { family inet { address 192.0.2.1/24; } } } ge-0/0/1 { unit 0 { family inet { address 198.51.100.1/24; } } } ge-0/0/2 { vlan-tagging; unit 0 { vlan-id 1; family inet { address 172.16.0.1/16; } } } lo0 { unit 0 { family inet { address 10.1.1.1/32; } } }
user@R0# show routing-options router-id 10.1.1.1; autonomous-system 100; dynamic-tunnels { gre next-hop-based-tunnel; T1 { source-address 192.0.2.1; gre; destination-networks { 192.0.2.0/24; } } T2 { source-address 198.51.100.1; gre; destination-networks { 198.51.100.0/24; } } }
user@R0# show protocols rsvp { interface all; interface fxp0.0 { disable; } } bgp { group IBGP { type internal; local-address 10.1.1.1; family inet-vpn { unicast; } neighbor 20.1.1.1; neighbor 30.1.1.1; } } ospf { traffic-engineering; area 0.0.0.0 { interface lo0.0 { passive; } interface all; } }
user@R0# show routing-instances VPN1 { instance-type vrf; interface ge-0/0/2.0; route-distinguisher 100:100; vrf-target target:100:1; vrf-table-label; routing-options { forwarding-table { ip-tunnel-rpf-check { mode strict; } } } protocols { bgp { group External { type external; family inet { unicast; } peer-as 200; neighbor 172.16.0.1; } } } }
验证
确认配置工作正常。
验证基本配置
目的
验证路由器 R0 和路由器 R1 和 R2 之间的 OSPF 和 BGP 对等状态。
行动
在操作模式下 show ospf neighbor ,运行 和 show bgp summary命令。
user@R0> show ospf neighbor Address Interface State ID Pri Dead 192.0.2.2 ge-0/0/0.0 Full 20.1.1.1 128 32 198.51.100.2 ge-0/0/1.0 Full 30.1.1.1 128 32 user@R0> show bgp summary Groups: 2 Peers: 3 Down peers: 1 Table Tot Paths Act Paths Suppressed History Damp State Pending bgp.l3vpn.0 0 0 0 0 0 0 Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped... 20.1.1.1 100 182 178 0 0 1:20:27 Establ bgp.l3vpn.0: 0/0/0/0 30.1.1.1 100 230 225 0 0 1:41:51 Establ bgp.l3vpn.0: 0/0/0/0 172.16.0.1 200 0 0 0 0 1:42:08 Establ
意义
OSPF 和 BGP 会话在路由器 R0、R1 和 R2 之间启动并运行。
验证动态隧道配置
目的
验证路由器 R0 和路由器 R1 和 R2 之间基于下一跳跃的动态 GRE 隧道的状态。
行动
在操作模式下,运行 和 show route table inet.3show dynamic-tunnels database terse 命令。
user@R0> show route table inet.3 inet.3: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 192.0.2.0/24 *[Tunnel/300] 01:47:57 Tunnel 192.0.2.2/24 *[Tunnel/300] 01:47:57 Tunnel Composite 198.51.100.0/24 *[Tunnel/300] 01:47:57 Tunnel 198.51.100.2/24 *[Tunnel/300] 01:47:57 Tunnel Composite
user@R0> show dynamic-tunnels database terse Table: inet.3 Destination-network: 192.0.2.0/24 Destination Source Next-hop Type Status 192.0.2.2/24 192.0.2.1 0xb395e70 nhid 612 gre Up Destination-network: 198.51.100.0/24 Destination Source Next-hop Type Status 198.51.100.2 198.51.100.1 0xb395e70 nhid 612 gre Up
意义
两个基于下一跳跃的动态 GRE 隧道(隧道 1 和隧道 2)已开启。
验证反欺骗保护配置
目的
验证路由器 R0 上的 VRF 路由实例中是否已启用反向路径转发检查。
行动
在操作模式下,运行 show krt table VPN1.inet.0 detail。
user@R0> show krt table VPN1.inet.0 detail KRT tables: VPN1.inet.0 : GF: 1 krt-index: 8 ID: 0 kernel-id: 8 flags: (null) tunnel rpf config data : enable, strict, filter [0], 0x2 tunnel rpf tlv data : enable, strict, filter [0], 0x4 unicast reverse path: disabled fast-reroute-priority: 0 Permanent NextHops Multicast : 0 Broadcast : 0 Receive : 0 Discard : 0 Multicast Discard: 0 Reject : 0 Local : 0 Deny : 0 Table : 0
意义
配置的反向路径转发检查在严格模式的 VRF 路由实例上启用。