用于第 3 层 VPN 的基于下一跳的隧道
本主题介绍如何配置动态通用路由封装 (GRE) 隧道和动态 MPLS over UDP 隧道以支持隧道复合下一跃点。它还提供有关配置反向路径转发以防止反欺骗的信息。
示例:配置基于下一跃点的动态 GRE 隧道
此示例说明如何配置动态通用路由封装 (GRE) 隧道,该隧道包含隧道复合下一跃点 (CNH),而不是接口下一跃点。与基于接口的动态 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 隧道,请在层次结构级别包含 next-hop-based-tunnel
语句 [edit routing-options dynamic-tunnels gre]
。
现有的动态隧道功能需要完整的静态配置。目前,从通告路由中的对等设备接收的隧道信息将被忽略。从 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 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/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 10.127.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
小一
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 10.127.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.127.0.0/16
将负载均衡策略导出到转发表。
[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.0.2; gre; destination-networks { 10.127.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 是否配置为在数据包转发引擎转发表上维护到转发下一跃点的间接下一跃点绑定。
行动
在操作模式下, show krt indirect-next-hop 在设备 PE1 和设备 PE2 上运行命令。
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 具有到设备 PE1 的基于接口的动态 GRE 隧道。
故障 排除
要对基于下一跃点的动态隧道进行故障排除,请参阅:
命令疑难解答
问题
基于下一跃点的动态 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 交换机上配置的每个动态隧道,将创建一个隧道复合下一跃点、一个间接下一跃点和一个转发下一跃点来解析隧道目标路由。您还可以使用策略控制通过在层次结构级别包含 forwarding-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 版开始,在 PTX 系列路由器和具有单向 MPLS-over-UDP 隧道的 QFX10000 上,您必须为远程 PE 设备配置一个用于 MPLS-over-UDP 数据包的输入过滤器,以及一个用于解封装 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
对于基于 UDP 的单向 MPLS 隧道:
-
仅支持 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 隧道,通过动态 IPv4 UDP 隧道传输 MPLS 流量,这些隧道在支持运营商的 PE 设备之间建立。通过此增强功能,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),并且 MPLS-over-UDP 隧道类型标志符合统一的 ISSU 和 NSR。
-
精简模式下的虚拟 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
小一
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 系列)配置 inet-import 策略以通过 解析动态隧道目标路由。
[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 隧道与基于 UDP 的 MPLS 隧道之间的实现差异。
[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.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/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 是否配置为在数据包转发引擎转发表上维护到转发下一跃点的间接下一跃点绑定。
行动
在操作模式下, show krt indirect-next-hop 在设备 PE1 和设备 PE2 上运行命令。
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 基于 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 Green 中,路由器 G 使用隧道 T1 到达主机 P,使用隧道 T2 到达主机 R 和 S,并在隧道 T1 和 T2 之间完成负载平衡以到达多宿主主机 Q。在 VPN Blue 中,路由器 G 使用隧道 T1 到达主机 P 和 R,使用隧道 T2 到达主机 Q 和 T。
在以下情况下,反向路径转发的检查通过:
数据包来自其指定隧道上的合法来源。
VPN Green 中的主机 P 使用隧道 T1 向主机 X 发送数据包。由于路由器 G 可以通过隧道 T1 到达主机 P,因此它允许数据包传递数据包并将其转发到主机 X。
数据包来自其指定隧道上的多宿主源。
VPN Green 中的主机 Q 在服务器 A 和 B 上是多宿主的,可以通过隧道 T1 和 T2 到达路由器 G。主机 Q 使用隧道 T1 向主机 Y发送数据包,并使用隧道 T2 向主机 X 发送数据包。由于路由器 G 可以通过隧道 T1 和 T2 到达主机 Q,因此它允许数据包分别传递并转发给主机 Y 和 X。
默认情况下,第 3 层 VPN 未启用反欺骗保护。要为基于下一跃点的动态隧道启用反欺骗,请在层次结构级别包含 ip-tunnel-rpf-check
语句 [edit routing-instances routing-instance-name routing-options forwarding-table]
。反向路径转发检查仅适用于 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 路由实例具有标签交换接口 (LSI)(使用
vrf-table-label
)或虚拟隧道 (VT) 接口时,反欺骗保护有效。如果 VRF 路由实例上有标签,则per-next-hop
不支持反欺骗保护。仅适用于
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 路由实例支持反欺骗。要为动态隧道启用反欺骗,请在层次结构级别包含 ip-tunnel-rpf-check
语句 [edit routing-instances routing-instance-name routing-options forwarding-table]
。
拓扑
图 4 展示了一个启用了反欺骗保护的示例网络拓扑。路由器 R0、R1 和 R2 分别连接到主机 Host0、Host1 和主机 2。两个基于下一跃点的通用路由封装 (GRE) 动态隧道(隧道 1 和隧道 2)分别将路由器 R0 与路由器 R1 和 R2 连接。VRF 路由实例在每个路由器及其连接的主机设备之间运行。
例如,路由器 0 上通过基于下一跳的动态 GRE 隧道(隧道 2)从路由器 R2 接收三个数据包(数据包 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(即非预定隧道),因此默认情况下,数据包 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 路由实例配置与主机 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.3和命令 show 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 路由实例上启用配置的反向路径转发检查。
更改历史记录表
功能支持由您使用的平台和版本决定。使用功能资源管理器确定您的平台是否支持某个 功能 。