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 路由器会在 EBGP 路径到 CE1 路由器和 IBGP 路径之间向 PE2 路由器分配 C-PIM 加入消息。IBGP 路径上的加入消息通过组播隧道接口发送,通过该接口,PE 路由器可通过该接口彼此建立 C-PIM 邻接关系。

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

    在发现第一个面向源(或 RP) 的 EBGP 路径时,只有新的加入消息才能在 EBGP 和 IBGP 路径上实现负载平衡,而组播隧道接口上的现有加入消息仍然不受影响。

  • 如果 PE 路由器运行下一代 MVPN,则 PE1 路由器将通过 EBGP 路径直接向 CE1 路由器发送 C-PIM 加入消息。PE1 和 PE2 路由器之间没有 C-PIM 邻接。路由器 PE3 在两个 IBGP 路径之间将 C-PIM 加入消息分发到 PE1 和 PE2。根据互联网草案 draft-ietf-l3vpn-2547bis-mcast-bgp BGP Encodings and Procedures for Multicast in MPLS/BGP IP VPNs,使用字节-XOR 散列算法来发送 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),对 Draft-Rosen MVPN 场景中的组播流量没有影响。

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

  • 多路径 PIM 加入负载平衡功能配置不当。