跳到主要内容

RFC 9026 - 组播 VPN 快速上游故障切换 (Multicast VPN Fast Upstream Failover)

  • 状态: Proposed Standard
  • 发布日期: April 2021
  • Stream: IETF
  • 勘误: 无勘误

摘要 (Abstract)​

本文档定义组播虚拟专用网 (Multicast Virtual Private Network, VPN) 扩展与规程, 通过允许下游提供商边缘 (Provider Edge, PE) 在为 VPN 组播流选择上游 PE 时考虑提供商隧道 (Provider-Tunnel, P-tunnel) 的状态, 从而实现上游故障的快速切换. 快速切换通过使用 "多点网络的双向转发检测 (Bidirectional Forwarding Detection, BFD)" (RFC 8562) 以及新的 BGP 属性 BFD Discriminator 启用. 此外, 本文档引入新的 BGP Community Standby PE, 扩展 BGP 组播 VPN (MVPN) 路由, 使 C-multicast 路由可朝向备用上游 PE 通告.

本备忘录状态 (Status of This Memo)​

这是一份 Internet Standards Track 文档.

本文档是互联网工程任务组 (Internet Engineering Task Force, IETF) 的产物. 它代表 IETF 社区的共识. 它已接受公开审阅, 并已获互联网工程指导组 (Internet Engineering Steering Group, IESG) 批准发布. 有关 Internet Standards 的更多信息, 见 RFC 7841 第 2 节.

有关本文档当前状态、任何勘误以及如何提供反馈的信息, 见 https://www.rfc-editor.org/info/rfc9026.

Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved.

本文档受 BCP 78 以及 IETF Trust 关于 IETF 文档的法律条款 (https://trustee.ietf.org/license-info) 约束 (以本文档发布之日有效者为准). 请仔细审阅这些文件. 从本文档提取的代码组件必须包含 Trust Legal Provisions 第 4.e 节所述的 Simplified BSD License 文本, 并按该许可证所述不提供保证.

目录 (Table of Contents)​

    1. 引言 (Introduction)
    1. 本文档中使用的约定 (Conventions Used in This Document)
    1. 基于隧道状态的 UMH 选择 (UMH Selection Based on Tunnel Status)
    1. 备用 C-Multicast 路由 (Standby C-Multicast Route)
    1. 热根备用 (Hot Root Standby)
    1. 重复分组 (Duplicate Packets)
    1. IANA 考虑 (IANA Considerations)
    1. 安全考虑 (Security Considerations)
    1. 参考文献 (References)
  • 致谢 (Acknowledgments)
  • 贡献者 (Contributors)
  • 作者地址 (Authors' Addresses)

1. 引言 (Introduction)​

假定读者熟悉 [RFC6513] 与 [RFC6514] 中所述的组播 MPLS/BGP IP VPN 工作方式.

在 BGP/MPLS VPN 中的组播 [RFC6513] 场景下, 希望提供机制以允许在不同类型故障时快速恢复连通性. 本文档针对提供商网络中位于连接到带接收方的 VPN 站点的 PE 上游的元素故障.

第 3 节描述本地规程, 允许出口 PE (连接到接收方站点的 PE) 在确定给定 (C-S,C-G) 的上游组播跳 (Upstream Multicast Hop, UMH) 时考虑 P-tunnel 的状态. 可选方法之一使用 [RFC8562] 与新的 BGP 属性 BFD Discriminator. 这些方法单独使用时均不构成完整的 "快速切换" 方案, 但可与第 4 节所述机制一起用于 "快速切换" 方案.

第 4 节描述可选 BGP 扩展——新的 Standby PE Community, 可通过在恢复时无需任何 Multicast VPN (MVPN) 路由消息交换来加速故障切换.

第 5 节描述可用于改善 MVPN 故障切换时间的 "hot root standby" 机制. 该方法结合第 3 与第 4 节定义的机制, 并与 [RFC7431] 中在给定拓扑与度量约束下使用 PIM 路由时改善故障切换时间的方案有相似之处.

2. 本文档中使用的约定 (Conventions Used in This Document)​

2.1. 需求语言 (Requirements Language)​

关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" 和 "OPTIONAL" 的解释见 BCP 14 [RFC2119] [RFC8174], 且仅当它们全部大写出现时适用.

2.2. 术语 (Terminology)​

本文档使用的术语为 [RFC6513] 与 [RFC6514] 中定义的术语.

2.3. 缩写 (Abbreviations)​

本文档使用以下缩写:

  • BFD: Bidirectional Forwarding Detection
  • MVPN: Multicast Virtual Private Network
  • NLRI: Network Layer Reachability Information
  • PE: Provider Edge
  • PMSI: Provider Multicast Service Interface
  • RPT: Rendezvous Point Tree
  • SPT: Shortest Path Tree
  • UMH: Upstream Multicast Hop
  • VPN: Virtual Private Network
  • VRF: VPN Routing and Forwarding

3. 基于隧道状态的 UMH 选择 (UMH Selection Based on Tunnel Status)​

RFC 6513 第 5.1 节描述 MVPN 下游 PE 确定给定 (C-S,C-G) 的 Upstream Multicast Hop (UMH) 所使用的规程.

对给定下游 PE 与给定 VRF, 给定上游 PE 对应给定 (C-S,C-G) 状态的 P-tunnel 是: 该上游 PE 为该 (C-S,C-G) 通告并导入该 VRF 的 S-PMSI 隧道; 若不存在此类 S-PMSI, 则为该 PE 通告并导入该 VRF 的 I-PMSI 隧道.

此处描述的规程是可选的, 基于下游 PE 在将每个给定 PE 纳入或不纳入给定 (C-S,C-G) 状态的候选 UMH 列表时, 考虑以每个可能上游 PE 为根的 P-tunnel 状态. 若无法确定 P-tunnel 的当前状态是否为 Up, 则该状态应视为 "未知为 Down", 并可按 Up 处理, 以便尝试使用该隧道是可接受的. 结果是: 若 P-tunnel 为 Down (见第 3.1 节), 则作为该 P-tunnel 根的 PE 将不被考虑用于 UMH 选择. 这将导致下游 PE 故障切换到候选列表中的下一个上游 PE. 某些下游 PE 可能因故障仅影响部分分支而对隧道状态得出不同结论. 因此, 在使用 I-PMSI P-tunnel 时适用 RFC 6513 第 9.1.1 节的规程. 该文档是本文档的基础, 其过程均适用于此.

RFC 6513 第 5.1 节为下游 PE 选择上游 PE 规定了三种选项.

前两种选项基于 IP 地址或哈希算法从候选 PE 集合中选择上游 PE. 当与本文档中考虑 P-tunnel 状态的可选规程一起使用时, 候选上游 PE 在以下情况之一被纳入集合:

  • 通告绑定到隧道的 x-PMSI, 且指定隧道状态未知为 Down; 或
  • 未通告适用于给定 (C-S,C-G) 的任何 x-PMSI, 但已将 VRF Route Import BGP Extended Community 关联到 S 的单播 VPN 路由. 这是为了避免错误地使在给定 VRF 不使用 I-PMSI 且仅使用 S-PMSI 的策略下的 UMH PE 失效. S-PMSI 可仅在上游 PE 收到要通过所通告 S-PMSI 承载的 (C-S,C-G)/(C-*,C-G) 的 C-multicast 路由之后才通告.

若结果候选集合为空, 则在不考虑 P-tunnel 状态的情况下重复该规程.

第三种选项使用已安装的 UMH Route (即朝向 C-root 的 "最佳" 路由) 作为 Selected UMH Route, 其始发 PE 为所选上游 PE. 在采用本文档考虑 P-tunnel 状态的可选规程时, Selected UMH Route 是那些始发 PE 的 P-tunnel 不为 "down" 之中的最佳路由. 若不存在, 则无论 P-tunnel 状态如何都选择已安装的 UMH Route.

3.1. 确定隧道状态 (Determining the Status of a Tunnel)​

可考虑不同因素来确定 P-tunnel 的 "状态", 并在以下小节描述. 本节描述的可选规程还处理下游 PE 并非都应用相同规则来定义 P-tunnel 状态的情况 (见第 6 节), 其中一些会产生对下游 PE 可能不同的结果. 因此, 本节中 P-tunnel 的 "状态" 不是隧道本身的特征, 而是特定下游 PE 所见的隧道状态. 此外, 以下某些方法确定的是下游 PE 在 P-tunnel 上接收流量的能力, 而非 P-tunnel 本身的状态. 这可称为 "P-tunnel reception status", 但为简单起见, 对所有这些方法我们都使用 P-tunnel "status" 术语.

取决于用于确定 P-tunnel 状态的标准, 可能与用于 P-tunnel 本身的另一弹性机制存在交互, UMH 更新可能立即发生, 也可能需要延迟. 每种具体情况在以下各小节覆盖.

实现可支持本节所述方法的任意组合, 并为网络运营商提供控制以选择在特定部署中使用哪一种.

3.1.1. MVPN 隧道根跟踪 (MVPN Tunnel Root Tracking)​

在确定 P-tunnel 状态是否为 Up 时, 要考虑的条件是: x-PMSI Tunnel 属性中指定的隧道根是否可通过单播路由表到达. 在此情况下, 下游 PE 可在可达性条件变化时立即更新其 UMH.

这类似于 VPN 路由的 BGP next-hop tracking, 只是所考虑的地址不是 BGP next-hop 地址, 而是 x-PMSI Tunnel 属性中的根地址.

3.1.2. 到 PE-CE 链路的跟踪​

在某些部署中, 可跟踪到 CE 的 PE-CE 链路状态, 以确定上游 PE 是否仍能转发给定组播流.

3.1.3. 通过 BFD 监测 P-tunnel​

可使用 BFD 监测 P-tunnel 的健康. 本文档定义的 BFD Discriminator 属性可将 BFD 会话与 P-tunnel 关联.

3.1.4. 叶发起的 P-tunnel​

对叶发起的 P-tunnel, 状态可由用于建立隧道的信令协议状态确定.

3.1.5. (C-S,C-G) 计数器信息​

P-tunnel 状态也可从特定 (C-S,C-G) 的流量统计推断. 若流量速率降至某阈值以下, 可将 P-tunnel 状态视为 Down.

3.1.6. BFD Discriminator 属性​

本文档定义新的 BGP 属性 BFD Discriminator, 可用于将 BFD 会话与 P-tunnel 关联. BFD 会话的状态确定 P-tunnel 的状态.

3.1.7. 每 PE-CE 链路的 BFD Discriminator​

在某些情况下, 将 BFD discriminator 与特定 PE-CE 链路关联可能有用. 这允许下游 PE 使用 BFD 监测到 CE 的链路状态.

3.1.8. 监测 P-tunnel 状态的运维考虑​

在监测 P-tunnel 状态时, 必须注意避免误报, 并确保监测机制不引入过多开销.

4. 备用 C-Multicast 路由 (Standby C-Multicast Route)​

本节描述可选 BGP 扩展——新的 Standby PE Community, 可通过在恢复时无需任何 MVPN 路由消息交换来加速故障切换.

4.1. 下游 PE 行为​

支持 Standby PE Community 的下游 PE 可向备用上游 PE 通告 C-multicast 路由. 这允许备用上游 PE 预编程转发 (C-S,C-G) 流量所需的状态.

4.2. 上游 PE 行为​

收到带有 Standby PE Community 的 C-multicast 路由的上游 PE MUST 安装 (C-S,C-G) 的状态, 但 MUST NOT 在被选为 UMH 之前转发流量.

4.3. 可达性判定​

下游 PE 使用第 3 节所述机制确定上游 PE 与备用上游 PE 的可达性.

4.4. Inter-AS​

本节描述 Inter-AS 场景下的规程.

4.4.1. 下游 PE 的 Inter-AS 规程, ASBR 快速切换​

在 Inter-AS 场景中, 下游 PE 可使用 Standby PE Community 向 ASBR 通告 C-multicast 路由.

4.4.2. ASBR 的 Inter-AS 规程​

ASBR 可使用 Standby PE Community 向其他 ASBR 或上游 PE 通告 C-multicast 路由.

5. 热根备用 (Hot Root Standby)​

本节描述可用于改善 MVPN 故障切换时间的 "hot root standby" 机制. 该方法结合第 3 与第 4 节定义的机制, 并与 [RFC7431] 中在给定拓扑与度量约束下使用 PIM 路由时改善故障切换时间的方案有相似之处.

6. 重复分组 (Duplicate Packets)​

在使用本文档所述快速切换机制时, 可能向接收方投递重复分组. 本节讨论重复分组的影响以及如何缓解.

7. IANA 考虑 (IANA Considerations)​

7.1. Standby PE Community​

IANA 已为 Standby PE Community 分配 BGP Community 值.

7.2. BFD Discriminator​

IANA 已为 BFD Discriminator 属性分配 BGP Attribute 类型码.

7.3. BFD Discriminator Optional TLV Type​

IANA 已在 BGP Tunnel Encapsulation Attribute 中为 BFD Discriminator Optional TLV 分配 Type 值.

8. 安全考虑 (Security Considerations)​

本文档的安全考虑与 [RFC6513] 与 [RFC6514] 类似. 此外, 使用 BFD 引入与 BFD 分组认证与完整性相关的新安全考虑.

9. 参考文献 (References)​

9.1. 规范性引用 (Normative References)​

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, https://www.rfc-editor.org/info/rfc2119.

[RFC6513] Rosen, E., Ed. and R. Aggarwal, Ed., "Multicast in MPLS/BGP IP VPNs", RFC 6513, DOI 10.17487/RFC6513, February 2012, https://www.rfc-editor.org/info/rfc6513.

[RFC6514] Aggarwal, R., Ed., Rosen, E., Ed., Morin, T., Ed., and Y. Rekhter, "BGP Encodings and Procedures for Multicast in MPLS/BGP IP VPNs", RFC 6514, DOI 10.17487/RFC6514, February 2012, https://www.rfc-editor.org/info/rfc6514.

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, https://www.rfc-editor.org/info/rfc8174.

[RFC8562] Katz, D., Ward, D., and S. Pallagatti, Ed., "Bidirectional Forwarding Detection (BFD) for Multipoint Networks", RFC 8562, DOI 10.17487/RFC8562, April 2019, https://www.rfc-editor.org/info/rfc8562.

9.2. 资料性引用 (Informative References)​

[RFC7431] Karan, A., Wijnands, IJ., Ed., and E. Rosen, "Multicast-Only Fast Reroute", RFC 7431, DOI 10.17487/RFC7431, August 2015, https://www.rfc-editor.org/info/rfc7431.

[RFC7841] Halpern, J., Ed., Resnick, P., Ed., and O. Kolkman, Ed., "RFC Streams, Headers, and Boilerplates", RFC 7841, DOI 10.17487/RFC7841, May 2016, https://www.rfc-editor.org/info/rfc7841.

致谢 (Acknowledgments)​

作者谨致谢意...

贡献者 (Contributors)​

...

作者地址 (Authors' Addresses)​

Thomas Morin (editor) Orange Email: [email protected]

Robert Kebler (editor) Juniper Networks Email: [email protected]

Greg Mirsky (editor) ZTE Corp. Email: [email protected]