RFC 9186 PROPOSED STANDARD MULTICAST · BFD · FAILOVER

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

Using multipoint BFD so PIM-SM routers notice a failed neighbor in under a second instead of 105 seconds.

On rfc-editor.org ↗
PUBLISHED
January 2022
AUTHORS
G. Mirsky, X. Ji
STREAM
IETF
PIM HELLO OPTIONTYPE
39
OPTIONLENGTH
4
DEFAULT PIM-SM FAILURE DETECTION
105 seconds
BFD PACKET TTL / HOP LIMIT
255
IPV4 DESTINATION
224.0.0.13
IPV6 DESTINATION
ff02::d
DOI
10.17487/RFC9186

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                         G. Mirsky
Request for Comments: 9186                                      Ericsson
Category: Standards Track                                          X. Ji
ISSN: 2070-1721                                          ZTE Corporation
                                                            January 2022


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

Abstract

   This document specifies how Bidirectional Forwarding Detection (BFD)
   for multipoint networks can provide sub-second failover for routers
   that participate in Protocol Independent Multicast - Sparse Mode
   (PIM-SM).  An extension to the PIM Hello message used to bootstrap a
   point-to-multipoint BFD session is also defined in this document.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 7841.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   https://www.rfc-editor.org/info/rfc9186.

Copyright Notice

   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) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Revised BSD License text as described in Section 4.e of the
   Trust Legal Provisions and are provided 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

   Faster convergence in the control plane minimizes the periods of
   traffic loss due to the use of stale routing information, transient
   routing loops, and other situations that may negatively affect
   service data flow.  Faster convergence in the control plane is
   beneficial to unicast and multicast routing protocols.

   [RFC7761] is the current specification of the Protocol Independent
   Multicast - Sparse Mode (PIM-SM) for IPv4 and IPv6 networks.  A
   conforming implementation of PIM-SM elects a Designated Router (DR)
   on each PIM-SM interface.  When a group of PIM-SM nodes is connected
   to a shared media segment, e.g., Ethernet, the node elected as the DR
   acts on behalf of directly connected hosts in the context of the PIM-
   SM protocol.  Failure of the DR impacts the quality of the multicast
   services it provides to directly connected hosts because the default
   failure detection interval for PIM-SM routers is 105 seconds.

   Bidirectional Forwarding Detection (BFD) [RFC5880] was originally
   defined to detect a failure of a point-to-point (P2P) path, single
   hop [RFC5881], or multihop [RFC5883].  In some PIM-SM deployments, a
   P2P BFD can be used to detect a failure and enable faster failover.
   [RFC8562] extends the BFD base specification [RFC5880] for multipoint
   and multicast networks, which matches the deployment scenarios for
   PIM-SM over a LAN segment.  A BFD system in a point-to-multipoint
   (P2MP) environment that transmits BFD Control messages using the BFD
   Demand mode [RFC5880] creates less BFD state than the Asynchronous
   mode.  P2MP BFD can enable faster detection of PIM-SM router failure
   compared to PIM-SM without BFD and thus minimizes multicast service
   disruption.  The monitored PIM-SM router acts as the head and other
   routers act as tails of a P2MP BFD session.  This document defines
   the monitoring of a PIM-SM router using P2MP BFD.  This document also
   defines the extension to PIM-SM [RFC7761] to bootstrap a PIM-SM
   router to join in the P2MP BFD session over a shared media segment.

1.1.  Conventions Used in This Document

1.1.1.  Terminology

   This document uses terminology defined in [RFC5880], [RFC8562], and
   [RFC7761].  Familiarity with these specifications and the terminology
   used is expected.

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.

2.  BFD Discriminator PIM Hello Option

   Figure 1 displays the new optional BFD Discriminator PIM Hello Option
   to bootstrap a tail of the P2MP BFD session:


        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

   where new fields are interpreted as:

   OptionType:  39

   OptionLength:  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 value of the OptionLength field is not equal to 4, the BFD
   Discriminator PIM Hello Option is considered malformed, and the
   receiver MUST stop processing PIM Hello Options.  If the value of the
   HeadDiscriminator field equals zero, then the BFD Discriminator PIM
   Hello Option MUST be considered invalid, and the receiver MUST ignore
   it.  The receiver SHOULD log a notification regarding 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 is no longer serving the function that prompted it to be
   monitored, then it MUST cease including the BFD Discriminator PIM
   Hello Option in its PIM Hello message, and it SHOULD shut down the
   BFD session following the procedures described in [RFC8562],
   Section 5.9.

   The head MUST create a BFD session of type MultipointHead [RFC8562].
   Note that any PIM-SM router, regardless of its role, MAY become a
   head of a P2MP BFD session.  To control the volume of BFD Control
   traffic on a shared media segment, an operator should carefully
   select PIM-SM routers 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 is configured to monitor the head by using P2MP
   BFD is referred to throughout this document as a "tail".  When such a
   tail receives a PIM Hello packet with 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
   transmits BFD Control packets periodically.  For the tail to
   correctly demultiplex BFD [RFC8562], the source address and My
   Discriminator of the BFD packets MUST be the same as the source
   address and the HeadDiscriminator, respectively, of the PIM Hello
   message.  If that is not the case, the tail BFD node would not be
   able to monitor the state of the PIM-SM node -- that is, the head of
   the P2MP BFD session -- though the regular PIM-SM mechanisms remain
   fully operational.

   If the tail detects a MultipointHead failure [RFC8562], it MUST
   delete the corresponding neighbor state and follow procedures defined
   in [RFC7761] for the DR and additional neighbor state deletion after
   the neighbor timeout expires.

   If the head ceases to include the BFD Discriminator PIM Hello Option
   in its PIM Hello message, the tail SHOULD close the corresponding
   MultipointTail BFD session without affecting the PIM state in any
   way.  Thus, the tail stops using BFD to monitor the head and reverts
   to the procedures defined 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 the bfd.SessionState to Up in the
   MultipointHead session [RFC8562] only if it is 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 described 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].  PIM DR demultiplexes BFD sessions based on the value of
   the My Discriminator field and the source IP address.  If PIM DR
   detects a failure of one of the sessions, it MUST remove that router
   from the GDR Candidate list and immediately transmit a new DRLB-List
   option.

2.3.  Multipoint BFD Encapsulation

   The MultipointHead of a P2MP BFD session when transmitting BFD
   Control packets:

   *  MUST set the TTL or Hop Limit value to 255 ([RFC5881], Section 5).
      Similarly, all received BFD Control packets that are demultiplexed
      to the session MUST be discarded if the received TTL or Hop Limit
      is not equal to 255, and

   *  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 document defines a way to accelerate detection of a failure that
   affects PIM functionality by using BFD.  The operation of either
   protocol is not changed.

   The security considerations discussed in [RFC5880], [RFC5881],
   [RFC7761], [RFC8562], and [RFC8775] apply to this document.

5.  References

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

   [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

   [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 cannot say enough to express their appreciation of the
   comments and suggestions that were received from Stig Venaas.  The
   authors also greatly appreciate the comments and suggestions by
   Alvaro Retana that improved the clarity of this document.

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

AI ELI5

On this page
PROBLEMWhen a PIM-SM router such as the Designated Router fails, neighbors by default take 105 seconds to notice, which hurts multicast service.
MECHANISMA router advertises a new BFD Discriminator option (type 39) in its PIM Hello. Neighbors then join a point-to-multipoint BFD session with that router and treat a BFD failure as the neighbor being gone.
WHY IT MATTERSFailure detection becomes sub-second, while PIM and BFD themselves are not changed. If the option disappears, neighbors fall back to normal PIM-SM behavior.

§1Why PIM-SM Needs Faster Failure Detection

Faster control plane convergence reduces traffic loss caused by stale routing information and transient loops. In PIM-SM, one router on each shared segment (such as Ethernet) is elected as the Designated Router (DR) and acts for the directly connected hosts. If the DR fails, multicast service for those hosts suffers, because the default failure detection interval for PIM-SM routers is 105 seconds.

Bidirectional Forwarding Detection (BFD) was first defined for point-to-point paths. RFC 8562 extends BFD to multipoint and multicast networks, which matches PIM-SM on a LAN segment. In such a point-to-multipoint (P2MP) session the monitored router is the head and the other routers are tails. Using BFD Demand mode creates less BFD state than Asynchronous mode. This RFC defines monitoring of a PIM-SM router with P2MP BFD and a PIM extension to bootstrap the session.

Normally routers wait a very long time, 105 seconds, before they admit a neighbor is gone. That is like waiting almost two minutes before noticing your friend left the room.

§2The BFD Discriminator PIM Hello Option

The new optional PIM Hello option tells neighbors which BFD session to join. It has three fields: OptionType (39), OptionLength (MUST be 4) and HeadDiscriminator, a 4-octet field that MUST be included, MUST NOT be zero and equals the My Discriminator value the head allocated for its BFD session.

If OptionLength is not 4, the option is malformed and the receiver MUST stop processing PIM Hello options. If the discriminator is zero, the option is invalid and the receiver MUST ignore it. In both cases the receiver SHOULD log a notification, under the control of a throttling logging mechanism.

It is a small note in the router's regular greeting that says 'listen for my heartbeat, my code number is this'. A code number of zero is not allowed.

BFD DISCRIMINATOR PIM HELLO OPTION (RFC 9186)
BFD Discriminator PIM Hello Option
FieldNameSizeValueDescription
OPTION-TYPEOptionType2 bytes39Set to 39.
OPTION-LENGTHOptionLength2 bytes4MUST be 4.
HEAD-DISCRIMINATORHeadDiscriminator4 bytesEquals the My Discriminator value allocated by the head; MUST NOT be zero.

§3Monitoring a PIM Router with Multipoint BFD

The head MUST create a BFD session of type MultipointHead and MUST include the BFD Discriminator option in its PIM Hellos. Any PIM-SM router, whatever its role, MAY become a head, but operators should choose heads carefully to control the volume of BFD Control traffic on the segment. A router that monitors the head is a tail. When a tail sees the option in a Hello, it MAY create a MultipointTail session.

For the tail to demultiplex correctly, the source address and My Discriminator of the BFD packets MUST match the source address and HeadDiscriminator of the PIM Hello. If they do not, the tail cannot monitor the head, though regular PIM-SM mechanisms stay fully operational.

If the tail detects a MultipointHead failure, it MUST delete the corresponding neighbor state and follow the RFC 7761 procedures for the DR and for neighbor state deletion after the neighbor timeout expires. If the head stops serving the function that prompted monitoring, it MUST stop including the option and SHOULD shut down the BFD session following RFC 8562. When the option disappears, the tail SHOULD close its MultipointTail session without affecting PIM state, reverting to RFC 7761 procedures.

The watched router keeps sending quick heartbeats. Its neighbors listen, and if the heartbeat stops they immediately treat it as gone instead of waiting a long time.

HEAD AND TAIL SETUP AND FAILURE (ILLUSTRATIVE, NOT FROM THE RFC)
Head routerTail router
  1. PIM Hello with BFD Discriminator optionTail MAY create a MultipointTail session.
  2. BFD Control packets (periodic)Source address and My Discriminator must match the Hello.

§4DR Load Balancing and BFD Encapsulation

With PIM Designated Router Load Balancing (RFC 8775), any router advertising the DRLB-Cap option can become a head. It sets the session state to Up only if it is a Group Designated Router (GDR) Candidate. For each GDR Candidate that includes the BFD Discriminator option, the PIM DR MUST create a MultipointTail session, demultiplexing by My Discriminator and source IP address. If the DR detects a failure, it MUST remove that router from the GDR Candidate list and immediately send a new DRLB-List option.

When the head sends BFD Control packets, it MUST set the TTL or Hop Limit to 255, and received packets for the session MUST be discarded if the TTL or Hop Limit is not 255. It MUST use the group address ALL-PIM-ROUTERS as the destination, which is 224.0.0.13 for IPv4 and ff02::d for IPv6.

If several helpers share the work, the boss drops any helper whose heartbeat stops and tells the others at once. Heartbeats only count if they come from right next door.

§5IANA and Security Considerations

IANA has allocated OptionType value 39, length 4, named BFD Discriminator Option, in the PIM-Hello Options registry.

The document only accelerates detection of a failure that affects PIM functionality, and the operation of either protocol is not changed. The security considerations of RFC 5880, RFC 5881, RFC 7761, RFC 8562 and RFC 8775 apply.

This only makes routers notice problems faster. It does not change how either protocol works, so the same safety rules still apply.

§6References