Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

多路径 MVPN 路由上的 PIM 联接负载平衡概述

组播虚拟专用网络 (MVPN) 是一种在现有 MPLS/BGP VPN 中部署组播服务的技术。

两个主要的 MVPN 服务是:

  • 双 PIM MVPN(也称为 Draft-Rosen)

  • 基于 BGP 的多协议 MVPN(也称为新一代)

下一代 MVPN 是继 Draft-Rosen MVPN 之后的下一个发展,为希望通过第 3 层 VPN 配置组播的管理员提供了更简单的解决方案。Draft-Rosen MVPN 使用协议无关组播 (PIM) 传输客户组播(C 组播)信令,新一代 MVPN 使用 BGP 传输 C 组播信令。

MVPN 中的多路径路由用于使数据转发在网络故障时更加稳健,并在需要网络故障恢复能力时最大限度地减少共享备份容量。

默认情况下,PIM 联接消息会根据反向路径转发 (RPF) 路由表检查发送到源。如果有多个通向源 [S, G] 或集合点 (RP) [*, G] 的等价路径,则使用一个上游接口发送加入消息。上游路径可以是:

  • 当同时存在 EBGP 和内部 BGP (IBGP) 路径时,单个活动的外部 BGP (EBGP) 路径。

  • 不存在 EBGP 路径时的单个活动 IBGP 路径。

引入多路径 PIM 加入负载平衡功能后,客户 PIM (C-PIM) 加入消息将通过以下方式进行负载平衡:

  • 在 Draft-Rosen MVPN 的情况下,使用了不相等的 EBGP 和 IBGP 路径。

  • 对于下一代 MVPN:

    • 当不存在 EBGP 路径时,将使用可用的 IBGP 路径。

    • 当同时存在 EBGP 和 IBGP 路径时,将使用可用的 EBGP 路径。

此功能适用于通过第 3 层 MVPN 服务加入 IPv4 C-PIM 的消息。

默认情况下,如果 rt_entry 活动路由是辅助路由,并且主路由存在于不同的路由实例中,则客户源 (C-S) 或客户 RP (C-RP) 被视为远程。进行此类确定时未考虑正在执行检查的 (C-*,G) 或 (C-S,G) 状态。多路径 PIM 联接负载平衡功能通过考虑关联的 (C-*,G) 或 (C-S,G) 状态来确定源(或 RP)是否为远程。

如果提供商网络没有启用了多路径 PIM 加入负载平衡功能的提供商边缘 (PE) 路由器,则使用基于哈希的加入负载平衡。尽管配置此功能的决定不会影响 PIM 或整体系统性能,但如果未启用该功能,网络性能可能会暂时受到影响。

借助基于哈希的加入负载平衡,将新的 PE 路由器添加到通往 C-S 或 C-RP 的上游候选路由器会导致 C-PIM 加入消息重新分发到新的上游路径。如果加入消息的数量很大,网络性能会受到影响,因为加入消息会发送到新的 RPF 邻居,而修剪消息会发送到旧的 RPF 邻居。在下一代 MVPN 中,这会导致 BGP C 组播数据消息从旧的上游路径中提取,并在新的上游路径上播发,从而影响网络性能。

图 1 中,PE1 和 PE2 是上游的 PE 路由器。路由器 PE1 分别从 EBGP 和 IBGP 对等方(客户边缘 CE1 路由器和 PE2 路由器)学习路由源。

图 1:PIM 联接负载平衡 PIM Join Load Balancing
  • 如果 PE 路由器运行 Draft-Rosen MVPN,PE1 路由器会在到 CE1 路由器的 EBGP 路径和到 PE2 路由器的 IBGP 路径之间分发 C-PIM 加入消息。IBGP 路径上的加入消息通过组播隧道接口发送,PE 路由器通过该接口彼此建立 C-PIM 邻接关系。

    如果 PE 路由器丢失了通向源(或 RP)的一条或所有 EBGP 路径,则之前使用 EBGP 路径的 C-PIM 联接消息将移至组播隧道接口,并根据散列机制选择组播隧道接口上的 RPF 邻接方。

    在发现通向源(或 RP)的第一个 EBGP 路径时,只有新的加入消息会在 EBGP 和 IBGP 路径之间进行负载平衡,而组播隧道接口上的现有加入消息不受影响。

  • 如果 PE 路由器运行下一代 MVPN,PE1 路由器将通过 EBGP 路径将 C-PIM 加入消息直接发送到 CE1 路由器。PE1 和 PE2 路由器之间没有 C-PIM 邻接关系。路由器 PE3 在到 PE1 和 PE2 的两条 IBGP 路径之间分发 C-PIM 加入消息。Bytewise-XOR 哈希算法用于根据互联网草案 draft-ietf-l3vpn-2547bis-mcast-bgp BGP Encodings and Procedures for Multicast in MPLS/BGP IP VPNs发送 C 组播数据。

由于 Draft-Rosen MVPN 中的多路径 PIM 加入负载平衡功能使用到目标的 EBGP 和 IBGP 路径不相等,因此在将单播数据包转发到目标时可以创建环路。要避免或中断此类循环,请执行以下操作:

  • 从核心或主实例到达的流量不应转发回面向核心的接口。

  • 应选择单个组播隧道接口作为上游接口或下游接口。

  • 上游或下游组播隧道接口应指向非组播隧道接口。

作为环路避免机制的结果,从 EBGP 路径到达的联接消息会按预期在 EIBGP 路径之间实现负载平衡,而来自 IBGP 路径的联接消息只能选择 EBGP 路径。

在图 1 中,如果 CE2 主机将单播数据流量发送到 CE1 主机,则由于流量负载平衡,PE1 路由器可以通过 MPLS 核心将组播流发送到 PE2 路由器。通过确保 PE2 不会由于负载均衡算法而将流量转发回 MPLS 核心,可以防止数据转发环路。

对于 C-PIM 联接消息,假设 CE2 主机和 CE3 主机都希望接收来自源 (S, G) 的流量,并且如果 PE1 和 PE2 都选择对方作为朝向源的 RPF 邻接方,则无法完全形成组播树。此功能实现了在 Draft-Rosen MVPN 场景中防止组播控制平面中出现此类加入环路的机制。

注意:

由于以下原因之一,可能会发生组播流量中断或创建加入环路,从而导致无法正确形成组播分布树 (MDT):

  • 平滑路由引擎切换 (GRES) 期间,C-PIM 加入消息的 EIBGP 路径选择可能会有所不同,因为将根据新路由引擎从 CE 和 PE 邻接方收到的加入消息再次为新路由引擎执行上游接口选择。这可能会导致组播流量中断,具体取决于正常重新启动时收到的加入消息数和网络上的负载。但是,不支持 不间断活动路由 (NSR),并且对草稿 Rosen MVPN 方案中的组播流量没有影响。

  • 提供商网络中的任何 PE 路由器运行的是另一个供应商的实施,该实施不会应用此功能中实现的相同散列算法。

  • 多路径 PIM 联接负载平衡功能配置不正确。