了解具有 RSVP-流量工程点对多点提供商隧道的 BGP MVPN 中基于发送方的 RPF
在 BGP 组播 VPN (MVPN)(也称为多协议 BGP 新一代组播 VPN)中,基于发送方的反向路径转发 (RPF) 有助于防止多个提供商边缘 (PE) 路由器向核心发送流量,从而防止重复流量发送至客户。在下图中,在出口设备 PE3 和设备 PE4 上配置的基于发送方的 RPF 可防止向客户发送重复流量。
仅具有 RSVP 点到多点提供商隧道的 MPLS BGP MVPN 支持基于发件人的 RPF(和热根备用)。仅支持 SPT 和 SPT-RPT MVPN 模式。
当点对多点提供商隧道与标签交换接口 (LSI) 搭配使用时,基于发送方的 RPF 不起作用。Junos OS 仅为每个 VRF 分配一个 LSI 标签,并将此标签用于所有点对多点隧道。因此,出口接收的标签并不表示发送 PE 路由器。LSI 标签目前无法扩展为每个点对多点隧道创建唯一标签。因此,虚拟隧道接口 (vt) 必须用于通过点对多点提供商隧道实现基于发送方的 RPF 功能。
或者,LSI 接口可以继续用于单播目的,虚拟隧道接口可以配置为仅用于组播。
概述
通常,重要的是要避免(或从中恢复)多个 PE 路由器向核心发送重复流量,因为这可能会导致向客户发送重复流量。基于发送方的 RPF 有一个仅限于 BGP MVPN 的用例。由于以下原因,用例范围有限:
-
本机 PIM 的传统 RPF 检查基于传入接口。此 RPF 检查可防止环路,但不会阻止 LAN 上的多个转发器。之所以使用传统的 RPF,是因为当前的组播协议要么可以避免 LAN 上的重复项,要么具有数据驱动事件,以便在检测到重复项后解决重复项。
-
在 PIM 稀疏模式下,正常协议作的 LAN 上可能会出现重复。该协议具有数据驱动机制(PIM 断言消息),可以在重复发生时检测并加以解决。
-
在 PIM 双向模式下,将对所有 LAN 执行指定转发器 (DF) 选择,以避免重复。
-
草稿 Rosen MVPN 使用 PIM 断言机制,因为草稿 Rosen MVPN 的核心网络类似于 LAN。
基于发送方的 RPF 是与 BGP MVPN 搭配使用的解决方案,因为 BGP MVPN 使用数据驱动事件解决方案和双向模式 DF 选择的替代方法。之所以如此,是因为一方面,核心网络并不完全是 LAN。在 MVPN 场景中,可以确定哪个 PE 路由器发送了流量。Junos OS 仅使用此信息转发从正确的 PE 路由器发送的流量。使用基于发送方的 RPF 增强了 RPF 检查,以检查数据是否到达正确的传入虚拟隧道 (vt-) 接口,以及数据是否从正确的上游 PE 路由器发送。
具体来说,数据到达时,外部标头中必须带有正确的 MPLS 标签,用于通过核心封装数据。标签标识隧道,如果隧道为点对多点,则标识上游 PE 路由器。
基于发件人的 RPF 不能替代单转发器选择,而是一种补充功能。在一台 PE 设备 (PE1) 上配置比在另一台 PE 设备 (PE2) 上配置更高的主环路地址(或路由器 ID)可确保 PE1 成为单转发器选择的胜出者。该语句使 unicast-umh-election 单播路由优先级确定单转发器选择。如果未使用单转发器选择或不足以防止核心中的重复,则建议使用基于发送方的 RPF。
对于 RSVP 点到多点提供商隧道,传输标签标识发送 PE 路由器因为在路由实例中配置 MVPN 协议时,默认情况下禁用点对多点提供商MVPNs. PHP隧道时,必须禁用倒数第二个跃点弹出 (PHP)。标签标识隧道和(因为 RSVP-流量工程隧道是点对多点的)发送 PE 路由器。
RFC 6513,第 9.1.1 节 MPLS/BGP IP VPN 中的组播 中介绍了基于发送方的 RPF 机制。
互联网草案 draft-morin-l3vpn-mvpn-fast-故障切换-05 中所述的热根备用技术组 播 VPN 快速上行故障切换 是一种出口 PE 路由器功能,其中出口 PE 路由器向主 PE 路由器和备份上游 PE 路由器发送源树 C 组播加入消息。这样,流量的多个副本可以通过提供商核心流向出口 PE 路由器。基于发送方的 RPF 和热根备用可配合使用,以支持 实时 BGP MVPN 流量。这是一种基于 MPLS 的组播方案,用于传输任务关键型专业广播电视和 IPTV 流量。许多此类部署的关键要求是网络设备(包括入口和出口 PE 路由器)的完全冗余。在某些情况下,需要采用实时-实时方法,这意味着两个重复的流量流将沿不同的路径通过网络发送。将此技术与基于发送方的转发相结合时,出口 PE 路由器会接收两个实时流量流,而出口 PE 路由器会将单个流转发到客户网络。网络中的任何故障都可以在出口 PE 路由器上本地修复。有关热根备用的更多信息,请参阅 热根备用。
基于发件人的 RPF 可防止将重复项发送给客户,即使提供商网络中存在重复项。由于热根备用配置,或者单转发器选择不足以防止重复,提供商中可能存在重复。单转发器选择用于防止与核心网络重复,而基于发送方的 RPF 可防止与客户重复,即使核心网络中存在重复项。在某些情况下,单转发器选择无法阻止重复流量到达出口 PE 路由器。这方面的一个示例(在 RFC 6513 的第 9.3.1 节中进行了概述)是在客户网络中配置了 PIM 稀疏模式,并且 MVPN 处于带有 I-PMSI 的 RPT-SPT 模式。
确定上游 PE 路由器
在 Junos OS 选择入口 PE 路由器后,基于发送方的 RPF 决策将确定是否选择了正确的入口 PE 路由器。如 RFC 6513 第 9.1.1 节中所述,出口 PE 路由器 PE1 会选择给定的特定上游 PE 路由器 (C-S,C-G)。当 PE1 从 PMSI 收到 (C-S,C-G) 数据包时,它或许能够识别将数据包传输到 PMSI 的 PE 路由器。如果该发送器不是 PE1 选择作为上游 PE 路由器的 PE 路由器,则 PE1 可能会丢弃数据包。这意味着 PE 路由器检测到重复项,但不会转发重复项。
当出口 PE 路由器生成 7 类 C 组播路由时,它会使用 VPN-IP 路由中向源传输的 VRF 路由导入扩展社区来构建 C 组播路由承载的路由目标。此路由目标会导致将 C 组播路由发送到上游 PE 路由器,并导入到上游 PE 路由器上的正确 VRF 中。出口 PE 路由器对转发条目进行编程,使其仅接受来自此 PE 路由器的流量,并且仅接受以该 PE 路由器为根的特定隧道上的流量。
当出口 PE 路由器生成 6 类 C 组播路由时,它会使用 VPN-IP 路由中传输到汇聚点 (RP) 的 VRF 路由导入扩展社区来构建 C 组播路由承载的路由目标。
此路由目标会导致将 C 组播路由发送到上游 PE 路由器,并导入到上游 PE 路由器上的正确 VRF 中。出口 PE 路由器对转发条目进行编程,使其仅接受来自此 PE 路由器的流量,并且仅接受以该 PE 路由器为根的特定隧道上的流量。但是,如果其他一些 PE 路由器已切换到 (C-S、C-G) 的 SPT 模式,并发送了源活动 (SA) 自动发现 (A-D) 路由(类型 5 路由),并且出口 PE 路由器仅具有 (C-*、C-G) 状态,则 (C-S、C-G) 的上游 PE 路由器不是指向其向其发送类型 6 路由的 RP 的 PE 路由器, 而是发起 (C-S、C-G) SA A-D 路由的 PE 路由器。(C-S、C-G) 的流量可能会通过 I-PMSI 或 S-PMSI 进行传输,具体取决于上游 PE 路由器的播发方式。
此外,当出口 PE 路由器仅具有 (C-*, C-G) 状态而没有 (C-S, C-G) 状态时,出口 PE 路由器可能会从多个 PE 路由器接收 (C-S, C-G) 5 类 SA 路由,并选择最佳路由,如下所示: 对于每个收到的 (C-S, C-G) SA 路由,出口 PE 路由器在其上游组播跃点 (UMH) 路由选项中,为 C-S 设置查找具有相同路由识别符 (RD) 的路由。在所有这些找到的路由中,PE 路由器选择 UMH 路由(基于 UMH 选择)。最佳(C-S、C-G)SA 路由是 RD 与所选 UMH 路由相同的路由。
当出口 PE 路由器只有 (C-*, C-G) 状态而没有 (C-S, C-G) 状态时,如果稍后出口 PE 路由器创建了 (C-S, C-G) 状态(例如,由于从其客户边缘 [客户边缘] 邻接方之一接收到 PIM 加入 (C-S, C-G) 消息),则该路由器的上游 PE 路由器 (C-S, C-G) 不一定是发起已选择的 (C-S、C-G) 最佳 SA A-D 路由的同一 PE 路由器。可能会出现这样的情况:发起 (C-S、C-G) 最佳 SA A-D 路由的 PE 路由器通过 I-PMSI 传输 (C-S, C-G),而其他一些 PE 路由器(也连接到包含 C-S 的站点)通过 S-PMSI 传输 (C-S,C-G)。在这种情况下,下游 PE 路由器不会加入 S-PMSI,而是继续通过 I-PMSI 接收 (C-S、C-G),因为 C-S 的 UMH 路由是由通过 I-PMSI 承载 (C-S, C-G) 的 PE 路由器播发的路由。这是预期行为。
出口 PE 路由器通过在其 UMH 路由候选集中查找 RD 与 SA A-D 路由相同的路由,确定 (C-S、C-G) 类型 5 SA A-D 路由的发送方。找到的路由的 VRF 路由导入扩展社区包含 SA A-D 路由发件人的 IP 地址。
基于平台的基于发件人的 RPF 行为
使用 功能资源管理器 确认平台和版本对特定功能的支持。
使用下表查看平台的特定于平台的行为。
| 平台 |
差异 |
|---|---|
| MX 系列 |
|
RPF 列表中的多个活动和备份路径
在先断后断 (MBB) 事件期间,Junos OS 会将多个同等权重的标签分配给 MVPN 提供商隧道中的标签交换路径 (LSP)。出口设备仅接受来自活动下一跃点(即首先安装的下一跃点)的流量。此后安装的下一跃点将被视为丢弃下一跃点。只要流量首先流经安装的标签,就不会发生流量丢失。当来自入口 PE 的流量流经接下来安装的标签(在出口 PE 处被视为丢弃)时,流量会暂时丢失,直到 MBB 事件完成。
从 Junos OS 演化版 23.4R1 开始, Session Id 系统会根据提供商隧道的名称创建一个。会话在此下 Session Id 分组,用于单播下一跃点。这样,同一 LSP 中的不同标签将被分配相同的 Session Id。Junos OS 使用它 Session Id 来接受和转发来自具有匹配的任何 Session ID标签的流量。
在下图中,PE3 配置了 MVPN 热根备用 (HRS),从而从主入口设备 PE1 和辅助入口设备 PE2 获取组播流量。在 PE1 和 PE3 之间建立 RSVP P2MP 隧道,传入标签为 L1。PE2 和 PE3 之间存在第二个 RSVP P2MP 隧道,传入标签为 L2。如果由于任何原因无法访问 PE1,出口设备 PE3 将开始从 PE2 获取流量。如果触发 MBB 事件,PE2 会发出新 LSP 路径的信号,PE3 会分配新的传入 LSP 标签 L3。在此期间,PE3 中的 RPF 列表使用两个传入标签进行编程。入口 PE 决定何时将流量从旧标签切换到新标签。当流量切换到新标签时,旧标签将被拆除。PE3 修改其 RPF NH 以标记 L3,然后恢复流量。
将两个标签(L2 和 L3)分组到一个 Session Id标签下后,两个 LSP 标签之间的切换将变得无缝,并导致低于 50 毫秒的最小转换延迟。
期间触发的 MBB 事件
同样,对于具有 I-PMSI 流量速率阈值的 MVPN 提供商隧道,流量将流经 I-PMSI 隧道,直到超过阈值,在这种情况量将切换到 S-PMSI 隧道。在此从 I-PMSI 切换到 S-PMSI 隧道期间,由于出口 PE 接收和转发流量的下一跃点发生变化,您可能会遇到流量丢失。
Junos 使用 I-PMSI Session Id 和 S-PMSI 下一跃点组合在一起,将过渡延迟降至最低,达到 50 毫秒以下。
运行该命令show multicast route extensive instance instance将包括 andSession Status(Session Id如果存在)。
user@router> show multicast route extensive instance instance1
Instance: vrf4 Family: INET
Group: 233.252.0.1
Source: 172.16.0.1/32
Upstream rpf interface list:
vt-5/0/0.0 (P)
Session Id: 0x38a7 Session Status: Up
Min-rate: 3000 kbps Weight: 1
Sender Id: Label 24
vt-5/0/0.0 (B)
Session Id: 0x38a8 Session Status: Up
Min-rate: 3000 kbps Weight: 65533
Sender Id: Label 23
Downstream interface list:
et-5/1/5.0
Number of outgoing interfaces: 1
Session description: NOB Cross media facilities
Statistics: 349 kBps, 1465 pps, 1552316 packets
RPF Next-hop ID: 5326
Next-hop ID: 1048585
Upstream protocol: MVPN
Route state: Active
Forwarding state: Forwarding
Cache lifetime/timeout: forever