RFC 9780

Bidirectional Forwarding Detection (BFD) for Multipoint Networks over Point-to-Multipoint MPLS Label Switched Paths (LSPs)

๐Ÿ“… published May 2025, from ietf

Internet Engineering Task Force (IETF) ๐ŸŒธ RFC 9780

Bidirectional Forwarding Detection (BFD) for Multipoint Networks over Point-to-Multipoint MPLS Label Switched Paths (LSPs) โœจ

Okay so this RFC is an Internet Standards Track doc from the IETF, published in May 2025, and it's written by G. Mirsky (Ericsson), G. Mishra (Verizon Inc.), and D. Eastlake 3rd (Independent) ๐Ÿ’–. It has ISSN 2070-1721 ๐ŸŽ€. It updates RFC 8562, so if you're reading 8562 you'll want this one next to it ๐Ÿฆ‹.

Abstract โœจ

Okay so the big idea here is how to use Bidirectional Forwarding Detection (BFD) for multipoint networks to catch data plane failures in point-to-multipoint MPLS Label Switched Paths (LSPs), and also in Segment Routing (SR) point-to-multipoint policies running on an SR over MPLS (SR-MPLS) data plane ๐Ÿ’….

It also updates RFC 8562 by recommending an IPv6 address from the Dummy IPv6 Prefix address block 100:0:0:1::/64, and by discouraging the use of an IPv4 loopback address mapped to IPv6 ๐ŸŒˆ. Plus it covers how LSP Ping (the in-band option) and the control plane (the out-of-band option) can bootstrap a BFD session ๐Ÿงš. And it explains how the active tail behaves when it notifies the head ๐Ÿ”ฅ.

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 on Internet Standards, check out Section 2 of RFC 7841 ๐Ÿ’œ.

For the current status, any errata, and how to send feedback, go to https://www.rfc-editor.org/info/rfc9780 ๐Ÿ“.

Copyright (c) 2025 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 publication date. Please actually read these, bestie, because they explain your rights and restrictions for this document ๐Ÿ™ˆ. Code Components pulled out of this document must 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
2.  Conventions Used in This Document
  2.1.  Terminology
  2.2.  Requirements Language
3.  Multipoint BFD Encapsulation
  3.1.  IP Encapsulation of Multipoint BFD
  3.2.  Non-IP Encapsulation of Multipoint BFD
4.  Bootstrapping Multipoint BFD
  4.1.  LSP Ping
  4.2.  Control Plane
5.  Operation of Multipoint BFD with Active Tail over P2MP MPLS LSP
6.  Security Considerations
7.  IANA Considerations
  7.1.  IPv6 Special-Purpose Address
  7.2.  MPLS Generalized Associated Channel (G-ACh) Type
8.  References
  8.1.  Normative References
  8.2.  Informative References
Acknowledgements
Authors' Addresses

1. Introduction ๐Ÿฆ‹

Okay so [RFC8562] is the one that defines a way to use Bidirectional Forwarding Detection (BFD) [RFC5880] to monitor and detect failures between a sender (the head) and one or more receivers (the tails) in multipoint or multicast networks ๐Ÿ’–.

[RFC8562] added two BFD session types, MultipointHead and MultipointTail ๐ŸŽ€. Throughout this document, MultipointHead and MultipointTail refer to the value that bfd.SessionType gets set to on a BFD endpoint โœจ.

This document explains how to use those modes of BFD to detect data plane failures in point-to-multipoint (P2MP) MPLS Label Switched Paths (LSPs) and in Segment Routing (SR) point-to-multipoint policies using an SR over MPLS (SR-MPLS) data plane ๐ŸŒธ. It also covers when LSP Ping (an in-band solution) and out-of-band solutions can be used to bootstrap a BFD session in this setup ๐Ÿงš.

Here's the history tea โ˜•. An address from the IPv6-mapped IPv4 loopback address block ::ffff:127.0.0.1/128 used to be mandated. But functionally, an IPv6 address from that block isn't analogous to its IPv4 counterpart ๐Ÿ™ˆ. On top of that, using the loopback address as the destination address, even for an inner IP encapsulation of a tunneled packet, violates Section 2.5.3 of [RFC4291] ๐Ÿ’€. So IANA allocated 100:0:0:1::/64 as a new Dummy IPv6 Prefix (Section 7.1) for destination IPv6 addresses used in IP/UDP encapsulation of management, control, and OAM (Operations, Administration, and Maintenance) packets ๐Ÿซถ. A source-only IPv6 dummy address is used as the destination to generate an exception and a reply message to the request message that was received ๐Ÿ”ฅ.

This document starts the transition to using IPv6 addresses from the Dummy IPv6 Prefix address block 100:0:0:1::/64 as the IPv6 destination address in the IP/UDP encapsulation of active OAM over the MPLS data plane ๐Ÿ‘‘. So this document updates [RFC8562] by recommending an IPv6 address from that Dummy IPv6 Prefix address block 100:0:0:1::/64 (Section 7.1) ๐ŸŒˆ, while acknowledging that an address from ::ffff:127.0.0.1/128 might still be used by existing implementations ๐Ÿ“. The document discourages the use of an address in the IPv6-mapped IPv4 loopback address block ๐Ÿ™…โ€โ™€๏ธ.

This document also explains how the active tail behaves when it does head notification ๐Ÿงšโ€โ™€๏ธ.

2. Conventions Used in This Document ๐Ÿ’œ

2.1. Terminology ๐Ÿ“š

  • ACH: Associated Channel Header
  • BFD: Bidirectional Forwarding Detection
  • GAL: G-ACh Label
  • G-ACh: Generic Associated Channel
  • LSP: Label Switched Path
  • LSR: Label Switching Router
  • MPLS: Multiprotocol Label Switching
  • P2MP: Point-to-Multipoint
  • PW: Pseudowire (PW)
  • SR: Segment Routing
  • SR-MPLS: SR over MPLS

2.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 ๐Ÿ’….

3. Multipoint BFD Encapsulation ๐ŸŒˆ

Okay this part is so important ๐Ÿ˜ญ. [RFC8562] uses BFD in Demand mode from the very start of a point-to-multipoint (P2MP) BFD session ๐Ÿฆ‹. Because the head never gets any BFD Control packets from a tail, the head transmits all BFD Control packets with the Your Discriminator field set to zero โœจ. As a result, a tail can't demultiplex BFD sessions using Your Discriminator, as defined in [RFC5880] ๐Ÿ’€.

So to demultiplex BFD sessions, [RFC8562] requires the tail to use the source IP address, My Discriminator, and the identity of the multipoint tree that the BFD Control packet was received from ๐Ÿงฉ. If the BFD Control packet is encapsulated in IP/UDP, then the source IP address MUST be used to demultiplex the received BFD Control packet, as described in Section 5.7 of [RFC8562] ๐Ÿ”‘. The non-IP encapsulation case is covered in Section 3.2 ๐Ÿซถ.

3.1. IP Encapsulation of Multipoint BFD ๐ŸŒธ

[RFC8562] defines IP/UDP encapsulation for multipoint BFD over P2MP MPLS LSP ๐ŸŽ€. This document updates Section 5.8 of [RFC8562] about how the IPv6 destination address gets selected, like this ๐Ÿ‘‡:

  • The sender of an MPLS echo request SHOULD use an address from the Dummy IPv6 Prefix address block 100:0:0:1::/64 (see Section 7.1).
  • The sender of an MPLS echo request MAY select the IPv6 destination address from the ::ffff:7f00/104 address block.

Section 1.2 of [RFC6790] lists a bunch of advantages to having an ingress Label Switching Router (LSR) generate the entropy value, compared to a transit LSR inferring entropy from the MPLS label stack or payload ๐Ÿง . This specification clarifies the following for when multiple alternative paths for the given P2MP LSP Forwarding Equivalence Class (FEC) exist ๐ŸŒˆ:

  • The MultipointHead SHOULD use the Entropy Label [RFC6790] that's used for LSP Ping [RFC8029] to exercise those particular alternative paths; or
  • The MultipointHead MAY use the UDP port number to possibly exercise those particular alternate paths ๐Ÿฆ‹.

3.2. Non-IP Encapsulation of Multipoint BFD ๐Ÿ’œ

In some environments, the overhead of extra IP/UDP encapsulations might feel like too much ๐Ÿ˜ฉ. That makes the more compact Generic Associated Channel (G-ACh) [RFC5586] encapsulation pretty attractive โœจ. Also, the validation of the IP/UDP encapsulation of a BFD Control packet in a P2MP BFD session can fail because of a problem that's related to neither the MPLS label stack nor BFD ๐Ÿ’€. Avoiding unnecessary encapsulation of P2MP BFD over an MPLS LSP makes it way more accurate to correlate the detected failure with the defect in the MPLS LSP ๐ŸŽฏ.

Non-IP encapsulation for multipoint BFD over a P2MP MPLS LSP (shown in Figure 1) MUST use the G-ACh Label (GAL) [RFC5586] at the bottom of the label stack, followed by an Associated Channel Header (ACH) ๐Ÿ”ฅ. If a BFD Control packet in PW-ACH encapsulation (without IP/UDP Headers) is going to be used in ACH, an implementation wouldn't be able to verify the identity of the MultipointHead, and as a result, it won't properly demultiplex BFD packets ๐Ÿ˜ต. That's why a new channel type value is needed ๐ŸŒŸ. The Channel Type field in ACH MUST be set to Multipoint BFD Session (0x0013) (see Section 7.2) ๐Ÿ“. To provide the identity of the MultipointHead for the particular multipoint BFD session, a Source Address TLV, as defined in Section 4.1 of [RFC7212], MUST immediately follow a BFD Control packet ๐Ÿซถ. Using other TLVs is outside the scope of this document ๐Ÿ™…โ€โ™€๏ธ.

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               LSP Label               |  TC |S|       TTL     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  GAL                  |  TC |1|       TTL     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0 0 1|Version|     Flags     |      Channel Type = 0x0013    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                        BFD Control Packet                     ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type=0    |    Reserved   |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Reserved            |         Address Family        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                            Address                            ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

          Figure 1: Non-IP Encapsulation for Multipoint BFD over a
                             Multicast MPLS LSP

The fields in Figure 1 work like this ๐Ÿง:

  • The top three four-octet words are defined in [RFC5586] ๐Ÿ’–.
  • The BFD Control Packet field is defined in [RFC5880] ๐ŸŽ€.
  • All the remaining fields are defined in Section 4.1 of [RFC7212] โœจ.

4. Bootstrapping Multipoint BFD โœจ

(Part 2 picks up right here, bestie ๐Ÿ’œ๐Ÿซถ)

4.1. LSP Ping โœจ

okay so LSP Ping is the on-demand OAM toolset that goes hunting for defects in the data plane ๐Ÿ•ต๏ธโ€โ™€๏ธ and also checks that the control plane matches the data plane by making sure the LSP is mapped to the same FEC at both egress and ingress endpoints. it's giving detective, honestly ๐Ÿ’…

LSP Ping, as defined in [RFC6425], MAY be used to bootstrap MultipointTail. If LSP Ping is used, it MUST include the Target FEC Stack TLV [RFC8029] and the BFD Discriminator TLV [RFC5884]. For P2MP MPLS LSPs, the Target FEC Stack TLV MUST use the sub-TLVs defined in Section 3.1 of [RFC6425]. For a P2MP SR policy with an SR-MPLS data plane, an implementation of this specification MUST follow the procedures defined in [RFC8287]. Setting the Reply Mode field to "Do not reply" [RFC8029] for the LSP Ping that bootstraps the MultipointTail of the P2MP BFD session is RECOMMENDED ๐Ÿซถ bc BFD over a multipoint network uses BFD Demand mode, the MPLS echo reply from a tail has no useful info to send back to the head. that's different from BFD over a P2P MPLS LSP [RFC5884], so no cap, it's a whole different vibe ๐Ÿฆ‹

A MultipointTail that receives an LSP Ping including the BFD Discriminator TLV MUST do the following:

  • validate the LSP Ping;
  • associate the received BFD Discriminator value with the P2MP LSP;
  • create a P2MP BFD session and set bfd.SessionType = MultipointTail as described in [RFC8562]; and
  • use the source IP address of the LSP Ping, the value of the BFD Discriminator from the BFD Discriminator TLV, and the identity of the P2MP LSP to properly demultiplex BFD sessions.
bestie, the demux step is the one to not skip ๐Ÿ’€ you need all three of those things to tell your sessions apart!

Besides bootstrapping a BFD session over a P2MP LSP, LSP Ping SHOULD be used to verify the control plane against the data plane periodically ๐Ÿ”ฅ by checking that the P2MP LSP is mapped to the same FEC at the MultipointHead and all active MultipointTails. The rate of these LSP Ping echo request messages SHOULD be significantly less than the rate of BFD Control packets, because LSP Ping does way more processing to validate that the data plane and control plane are consistent ๐Ÿง  An implementation MAY provide configuration options to control the rate of the periodic LSP Ping echo request messages, which is very cute of it ๐ŸŒธ

4.2. Control Plane ๐ŸŽ€

The BFD Discriminator attribute MAY be used to bootstrap a multipoint BFD session on a tail, following the format and procedures given in Section 3.1.6 of [RFC9026]. ok this is the control plane doing its little thing โœจ

5. Operation of Multipoint BFD with Active Tail over P2MP MPLS LSP ๐Ÿ‘‘

[RFC8562] defines how BFD Demand mode can be used in multipoint networks ๐Ÿฆ‹ When it's applied in MPLS, the procedures in [RFC8562] let an egress LSR detect a failure in the part of the P2MP MPLS LSP from the ingress LSR to that egress LSR. The ingress LSR is not aware of the state of the P2MP LSP, which is lowkey wild ๐Ÿ˜ญ [RFC8563], using the mechanisms from [RFC8562], defines the behavior of an active tail. An active tail might notify the head about the failure it detected and respond to a poll sequence started by the head. The first method, called "Head Notification without Polling", is mentioned in Section 5.2.1 of [RFC8563]) and it's the simplest of the methods in [RFC8563]. This document talks about using this method for BFD over P2MP MPLS LSP. Analysis of the other methods for a head to learn the state of the P2MP MPLS LSP is outside the scope of this document ๐Ÿ™…โ€โ™€๏ธ

As specified in [RFC8563], BFD variables MUST be as follows for the active tail mode:

  • On an ingress LSR:
    • bfd.SessionType is MultipointHead.
    • bfd.RequiredMinRxInterval is nonzero, allowing egress LSRs to send BFD Control packets.
  • On an egress LSR:
    • bfd.SessionType is MultipointTail.
    • bfd.SilentTail is set to zero.

Section 5.2.1 of [RFC8563] notes that "the tail sends unsolicited BFD packets in response to the detection of a multipoint path failure" ๐Ÿซ  but it doesn't say much about what goes in those packets or how often they get sent. So here's the procedure for an active tail with unsolicited notifications for a P2MP MPLS LSP, periodt ๐Ÿ’–

Upon detecting the failure of the P2MP MPLS LSP, an egress LSR sends a BFD Control packet with these settings:

  • The Poll (P) bit is set.
  • The Status (Sta) field is set to the Down value.
  • The Diagnostic (Diag) field is set to the Control Detection Time Expired value.
  • The value of the Your Discriminator field is set to the value the egress LSR has been using to demultiplex that BFD multipoint session.

The BFD Control packet MAY be encapsulated in IP/UDP, with the destination IP address of the ingress LSR and the UDP destination port number set to 4784 per [RFC5883] ๐ŸŽ€ If non-IP encapsulation is used, then the BFD Control packet is encapsulated using PW-ACH encapsulation (without IP/UDP headers) with Channel Type 0x0007 [RFC5885].

The BFD Control packets are transmitted at a rate of one per second until either 1) the egress LSA receives a control packet from the ingress LSR that is valid for this BFD session and has the Final (F) bit set, or 2) the defect condition clears. BUT, to improve the odds of letting the ingress LSR know about the P2MP MPLS LSP failure, the egress LSR SHOULD initially transmit three BFD Control packets (as defined above) in short succession ๐Ÿƒโ€โ™€๏ธ๐Ÿ’จ The actual transmission of the periodic BFD Control packet MUST be jittered by up to 25% within one-second intervals. So the interval MUST be reduced by a random value of 0 to 25%, which helps avoid congestion on the ingress LSR's data and control planes ๐ŸŒˆ

As described above, an ingress LSR that has received the BFD Control packet sends the unicast IP/UDP encapsulated BFD Control packet with the Final (F) bit set to the egress LSR. In some scenarios (e.g., when a P2MP LSP breaks close to its root and the number of egress LSRs is really large), the root might get a ton of notifications ๐Ÿ˜ฑ The notifications from leaves to the root won't use resources allocated for the monitored multicast flow, so they won't congest that particular flow, although they may negatively affect other flows. Still, the control plane of the ingress LSR might get congested by the BFD Control packets sent by egress LSRs and by the process of generating unicast BFD Control packets, as noted above. To mitigate that, a BFD implementation that supports this specification is RECOMMENDED to use a rate limiter on received BFD Control packets passed to the ingress LSR's control plane for processing ๐Ÿงƒ

6. Security Considerations ๐Ÿšจ

This document does not introduce new security considerations ๐Ÿ™ˆ but it inherits all of the security considerations from [RFC5880], [RFC5884], [RFC7726], [RFC8562], [RFC8029], and [RFC6425]. These are serious, so pls don't skip them ๐Ÿฅบ

Also, BFD for P2MP MPLS LSPs MUST follow the requirements listed in Section 4.1 of [RFC4687] to avoid congestion in the control plane or the data plane caused by the rate of generating BFD Control packets. An operator SHOULD consider the amount of extra traffic generated by P2MP BFD when selecting the interval at which the MultipointHead will transmit BFD Control packets. The operator MAY consider the size of the packet the MultipointHead transmits periodically, since IP/UDP encapsulation adds up to 28 octets (more than 50% of the BFD Control packet length) compared to G-ACh encapsulation ๐Ÿงฎ

7. IANA Considerations ๐Ÿ“‹

7.1. IPv6 Special-Purpose Address ๐ŸŒŒ

IANA has allocated the following in the "IANA IPv6 Special-Purpose Address Registry" [IANA-IPv6-REG]:

Address Block:  100:0:0:1::/64
Name:  Dummy IPv6 Prefix
RFC:  RFC 9780
Allocation Date:  2025-04
Termination Date:  N/A
Source:  True
Destination:  False
Forwardable:  False
Globally Reachable:  False
Reserved-by-Protocol:  False

7.2. MPLS Generalized Associated Channel (G-ACh) Type ๐Ÿงš

IANA has allocated the following value in the "MPLS Generalized Associated Channel (G-ACh) Types" registry [IANA-G-ACh-TYPES].

              +========+========================+===========+
              | Value  |      Description       | Reference |
              +========+========================+===========+
              | 0x0013 | Multipoint BFD Session | RFC 9780  |
              +--------+------------------------+-----------+

                 Table 1: Multipoint BFD Session G-ACh Type

8. References ๐Ÿ“š

8.1. Normative References ๐Ÿ“š

okay bestie, these are the must-read sources the spec leans on, so no skipping ๐Ÿซถ


8.2. Informative References ๐Ÿง 

these ones are the extra reading that gives you the full picture, lowkey essential ๐Ÿ’…


Acknowledgements ๐Ÿซถ

the authors gave a huge shoutout to Andrew Malis, Italo Busi, and Shraddha Hegde for their comments. they also appreciated the thought-stimulating questions from Carlos Pignataro. iconic behaviour from everyone ๐ŸŒธ

Authors' Addresses ๐Ÿ’–

Greg Mirsky Ericsson Email: gregimirsky@gmail.com

Gyan Mishra Verizon Inc. Email: gyan.s.mishra@verizon.com

Donald Eastlake 3rd Independent 2386 Panoramic Circle Apopka, FL 32703 United States of America Email: d3e3e3@gmail.com

๐Ÿ“ฆ where this page comes from