RFC 9186

Fast Failover in Protocol Independent Multicast - Sparse Mode (PIM-SM) Using Bidirectional Forwarding Detection (BFD) for Multipoint Networks

πŸ“… published January 2022, from ietf

RFC 9186: Fast Failover in Protocol Independent Multicast - Sparse Mode (PIM-SM) Using Bidirectional Forwarding Detection (BFD) for Multipoint Networks πŸ’–βœ¨

  • Stream: Internet Engineering Task Force (IETF) πŸ¦‹
  • Request for Comments: 9186
  • Authors: G. Mirsky (Ericsson) and X. Ji (ZTE Corporation) πŸ‘‘
  • Category: Standards Track
  • ISSN: 2070-1721
  • Date: January 2022 πŸ“…
  • Obsoletes / Updates: the title block doesn't list any RFCs that this one obsoletes or updates 🌸

Abstract ✨

okay so this doc is all about how BFD for multipoint networks can give routers running PIM-SM sub-second failover πŸ”₯ PIM-SM is the multicast routing protocol, and BFD is the fast failure detector that helps it bounce back quick. The doc also defines an extension to the PIM Hello message, which is used to bootstrap a point-to-multipoint BFD session 🧚

Status of This Memo πŸ“œ

this is an Internet Standards Track document πŸŽ€

it's a product of the Internet Engineering Task Force (IETF) and represents the consensus of the IETF community. it got public review and was approved for publication by the Internet Engineering Steering Group (IESG). if you want more info on Internet Standards, check out Section 2 of RFC 7841 πŸ’…

info about the current status of this doc, any errata, and how to leave feedback is at https://www.rfc-editor.org/info/rfc9186 🌈

Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved. πŸ’œ

this document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they stand on the date of publication. please actually read those, bestie, because they spell out your rights and restrictions for this doc πŸ™ˆ also, any Code Components pulled out of this document need to include Revised BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Revised BSD License 🫢

Table of Contents πŸ—ΊοΈ

   1.  Introduction
     1.1.  Conventions Used in This Document
       1.1.1.  Terminology
       1.1.2.  Requirements Language
   2.  BFD Discriminator PIM Hello Option
     2.1.  Using P2MP BFD in PIM Router Monitoring
     2.2.  P2MP BFD in PIM DR Load Balancing
     2.3.  Multipoint BFD Encapsulation
   3.  IANA Considerations
   4.  Security Considerations
   5.  References
     5.1.  Normative References
     5.2.  Informative References
   Acknowledgments
   Authors' Addresses

1. Introduction 🌸

okay this part is the big picture. faster convergence in the control plane means less traffic gets lost while stale routing info, transient routing loops, and other messy stuff are going on that could hurt service data flow. faster control-plane convergence is great for both unicast and multicast routing protocols πŸ’–

[RFC7761] is the current spec for PIM-SM over IPv4 and IPv6 networks πŸ¦‹ a conforming PIM-SM implementation elects a Designated Router (DR) on each PIM-SM interface. when a bunch of PIM-SM nodes sit on a shared media segment (like Ethernet), the elected DR acts on behalf of the hosts directly connected to it. so if the DR fails, the multicast services it gives those hosts take a hit, because the default failure detection interval for PIM-SM routers is 105 seconds 😭

Bidirectional Forwarding Detection (BFD) [RFC5880] was originally defined to detect failure of a point-to-point (P2P) path, whether single hop [RFC5881] or multihop [RFC5883]. in some PIM-SM setups, a P2P BFD can detect the failure and enable faster failover ✨ then [RFC8562] stretches the BFD base spec [RFC5880] to work for multipoint and multicast networks, which is exactly what PIM-SM over a LAN segment needs 🫢

here's the tea: a point-to-multipoint (P2MP) BFD system that sends BFD Control messages using the BFD Demand mode [RFC5880] keeps less BFD state than one using Asynchronous mode πŸ’… P2MP BFD can detect a PIM-SM router failure faster than PIM-SM alone, which cuts down on multicast service disruption πŸ”₯ in this setup, the monitored PIM-SM router is the head, and the other routers are the tails of a P2MP BFD session 🧚

so this document defines how to monitor a PIM-SM router with P2MP BFD. it also extends PIM-SM [RFC7761] so that a PIM-SM router can bootstrap itself to join the P2MP BFD session over a shared media segment πŸ‘‘

1.1. Conventions Used in This Document πŸŽ€

1.1.1. Terminology 🧠

this doc uses terminology from [RFC5880], [RFC8562], and [RFC7761]. you're expected to already be familiar with those specs and the terms they use, bestie πŸ€“

1.1.2. Requirements Language πŸ’€

the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here 🫢 so those words only count as the official BCP 14 key words when they're written in all caps, like they are here.

2. BFD Discriminator PIM Hello Option πŸ¦‹

okay this section is about the brand new, optional BFD Discriminator PIM Hello Option, which bootstraps a tail of the P2MP BFD session πŸ’– check out the layout in Figure 1:

        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |          OptionType           |         OptionLength          |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                       HeadDiscriminator                       |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                Figure 1: BFD Discriminator PIM Hello Option

here's what the new fields mean πŸ“

  • OptionType: 39
  • OptionLength: this MUST be set to 4.
  • HeadDiscriminator: the 4-octet field MUST be included in the BFD Discriminator PIM-SM Hello Option. the value MUST NOT be zero. it equals the value of My Discriminator [RFC5880] allocated by the head.

if the OptionLength field isn't equal to 4, the BFD Discriminator PIM Hello Option counts as malformed, and the receiver MUST stop processing PIM Hello Options 😱 if the HeadDiscriminator field equals zero, the BFD Discriminator PIM Hello Option MUST be considered invalid, and the receiver MUST ignore it πŸ™…β€β™€οΈ the receiver SHOULD log a notification about the malformed or invalid BFD Discriminator Hello Option, under the control of a throttling logging mechanism πŸ“

2.1. Using P2MP BFD in PIM Router Monitoring πŸ”

if the head isn't doing the job that got it monitored anymore, then it MUST stop including the BFD Discriminator PIM Hello Option in its PIM Hello message πŸ›‘ it SHOULD also shut down the BFD session, following the procedures in [RFC8562], Section 5.9 🧹

the head MUST create a BFD session of type MultipointHead [RFC8562]. heads-up, though: any PIM-SM router, no matter what role it has, MAY become a head of a P2P-style P2MP BFD session πŸ‘€ to keep the BFD Control traffic on a shared media segment under control, an operator should carefully pick which PIM-SM routers get configured as a head of a P2MP BFD session 🧐 the head MUST include the BFD Discriminator PIM Hello Option in its PIM Hello messages πŸ’–

a PIM-SM router that's set up to monitor the head using P2MP BFD is called a "tail" throughout this doc πŸ¦‹ when a tail gets a PIM Hello packet carrying the BFD Discriminator PIM Hello Option, the tail MAY create a P2MP BFD session of type MultipointTail, as defined in [RFC8562] ✨

the node that includes the BFD Discriminator PIM Hello Option sends BFD Control packets on a regular schedule. so the tail can correctly demultiplex BFD [RFC8562], the source address and My Discriminator of the BFD packets MUST match the source address and the HeadDiscriminator of the PIM Hello message, respectively 🧩 if that's not the case, the tail's BFD node can't monitor the state of the PIM-SM node (that is, the head of the P2MP BFD session), though the regular PIM-SM mechanisms keep working just fine 🌈

if the tail detects a MultipointHead failure [RFC8562], it MUST delete the matching neighbor state and follow the procedures in [RFC7761] for the DR, plus any extra neighbor state deletion after the neighbor timeout expires πŸ’€

if the head stops including the BFD Discriminator PIM Hello Option in its PIM Hello message, the tail SHOULD close the matching MultipointTail BFD session without touching the PIM state in any way 🫧 so the tail stops using BFD to monitor the head and goes back to the procedures in [RFC7761] πŸ’…

2.2. P2MP BFD in PIM DR Load Balancing βš–οΈ

[RFC8775] specifies the PIM Designated Router Load-Balancing (DRLB) functionality πŸ‘‘ any PIM router that advertises the DR Load-Balancing Capability (DRLB-Cap) Hello Option can become the head of a P2MP BFD session, as specified in Section 2.1 πŸ¦‹

the head router administratively sets bfd.SessionState to Up in the MultipointHead session [RFC8562] only if it's a Group Designated Router (GDR) Candidate, as specified in Sections 5.5 and 5.6 of [RFC8775] πŸŽ€ if the router is no longer the GDR, then it MUST shut down, following the procedures in [RFC8562], Section 5.9 πŸ›‘

for each GDR Candidate that includes the BFD Discriminator Option in its PIM Hello, the PIM DR MUST create a MultipointTail session [RFC8562] 🧚 the PIM DR demultiplexes BFD sessions based on the My Discriminator field and the source IP address πŸ”Ž and if the PIM DR detects a failure of one of those sessions, it MUST remove that router from the GDR Candidate list and immediately transmit a new DRLB-List option 🚨

2.3. Multipoint BFD Encapsulation πŸ“¦

when the MultipointHead of a P2MP BFD session transmits BFD Control packets:

  • it MUST set the TTL or Hop Limit value to 255 ([RFC5881], Section 5). similarly, all received BFD Control packets that get demultiplexed to the session MUST be discarded if the received TTL or Hop Limit isn't equal to 255, and
  • it MUST use the group address ALL-PIM-ROUTERS (224.0.0.13 for IPv4 and ff02::d for IPv6) as the destination IP address 🌍

3. IANA Considerations πŸ—‚οΈ

IANA has allocated a new OptionType value in the "PIM-Hello Options" registry, according to Table 1 πŸŽ‰

      +=======+========+==========================+===========+
      | Value | Length | Name                     | Reference |
      +=======+========+==========================+===========+
      | 39    | 4      | BFD Discriminator Option | RFC 9186  |
      +-------+--------+--------------------------+-----------+

                Table 1: BFD Discriminator Option Type

4. Security Considerations πŸ”

this doc defines a way to speed up detecting a failure that affects PIM functionality by using BFD πŸš€ the operation of either protocol does not change, so no plot twists there 🫢

the security considerations discussed in [RFC5880], [RFC5881], [RFC7761], [RFC8562], and [RFC8775] apply to this document 😭 treat these security notes as seriously as you'd treat your group chat secrets πŸ”’

5. References πŸ“š

more reference goodies are coming up in part 2, so stay tuned πŸ’–πŸ§š

5.1. Normative References πŸ’–

okay so these are the docs the spec literally can't function without, bestie 🫢

[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>.

[RFC5880]  Katz, D. and D. Ward, "Bidirectional Forwarding Detection
           (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010,
           <https://www.rfc-editor.org/info/rfc5880>.

[RFC5881]  Katz, D. and D. Ward, "Bidirectional Forwarding Detection
           (BFD) for IPv4 and IPv6 (Single Hop)", RFC 5881,
           DOI 10.17487/RFC5881, June 2010,
           <https://www.rfc-editor.org/info/rfc5881>.

[RFC7761]  Fenner, B., Handley, M., Holbrook, H., Kouvelas, I.,
           Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent
           Multicast - Sparse Mode (PIM-SM): Protocol Specification
           (Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March
           2016, <https://www.rfc-editor.org/info/rfc7761>.

[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., Pallagatti, S., Ed., and G. Mirsky,
           Ed., "Bidirectional Forwarding Detection (BFD) for
           Multipoint Networks", RFC 8562, DOI 10.17487/RFC8562,
           April 2019, <https://www.rfc-editor.org/info/rfc8562>.

[RFC8775]  Cai, Y., Ou, H., Vallepalli, S., Mishra, M., Venaas, S.,
           and A. Green, "PIM Designated Router Load Balancing",
           RFC 8775, DOI 10.17487/RFC8775, April 2020,
           <https://www.rfc-editor.org/info/rfc8775>.

5.2. Informative References πŸ¦‹

these ones are more like bonus reading, but still lowkey worth a look ✨

[RFC5883]  Katz, D. and D. Ward, "Bidirectional Forwarding Detection
           (BFD) for Multihop Paths", RFC 5883, DOI 10.17487/RFC5883,
           June 2010, <https://www.rfc-editor.org/info/rfc5883>.

Acknowledgments 🌸

the authors literally cannot say thank you enough πŸ₯Ή huge shoutout to Stig Venaas for all the comments and suggestions, and to Alvaro Retana for making the whole thing way clearer. iconic teamwork πŸ‘‘

Authors' Addresses πŸ’…

Greg Mirsky Ericsson

Email: gregimirsky@gmail.com

Xiaoli Ji ZTE Corporation Yuhuatai District No. 50 Software Avenue Nanjing China

Email: ji.xiaoli@zte.com.cn


that's a wrap on RFC 9186 πŸŒˆπŸ’–πŸŽ€ you did amazing, bestie 🫢

πŸ“¦ where this page comes from