Bidirectional Forwarding Detection (BFD) for Multipoint Networks over Point-to-Multipoint MPLS Label Switched Paths (LSPs)
updates
- rfc-8562 — Bidirectional Forwarding Detection (BFD) for Multipoint Networks
Extracted elements (28)
A new G-ACh channel type (0x0013) is required for non-IP multipoint BFD because PW-ACH encapsulation without IP/UDP headers prevents an implementation from verifying the identity of the MultipointHead, making proper BFD session demultiplexing impossible.
G-ACh non-IP encapsulation is preferred in some environments because IP/UDP adds overhead, and IP/UDP validation failures may be caused by factors unrelated to the MPLS label stack or BFD, reducing the accuracy of failure correlation.
Reply Mode 'Do not reply' is recommended for LSP Ping bootstrap of MultipointTail because BFD over a multipoint network operates in Demand mode, meaning the MPLS echo reply from a tail conveys no useful information to the head (unlike BFD over P2P MPLS LSP).
The IPv6-mapped IPv4 loopback address ::ffff:127.0.0.1/128 is discouraged as the BFD destination because using a loopback address as a tunneled packet's inner destination violates RFC 4291 Section 2.5.3, and the mapped address is not functionally analogous to its IPv4 counterpart. IANA allocated 100:0:0:1::/64 as a proper Dummy IPv6 Prefix for this use case.
For active tail head notification over P2MP MPLS LSP, BFD Control packets MAY be IP/UDP encapsulated with the ingress LSR's destination address and UDP port 4784 (per RFC 5883), or non-IP encapsulated using PW-ACH with Channel Type 0x0007 (per RFC 5885).
While 100:0:0:1::/64 is now recommended for the IPv6 destination in IP/UDP encapsulation of multipoint BFD, existing implementations may still use an address from the ::ffff:127.0.0.1/128 block; this document acknowledges that for backward compatibility.
A BFD implementation supporting active tail is RECOMMENDED to use a rate limiter on received BFD Control packets passed to the ingress LSR's control plane, to mitigate potential congestion when many egress LSRs send failure notifications simultaneously.
A MultipointTail that receives an LSP Ping containing the BFD Discriminator TLV MUST validate the LSP Ping, associate the BFD Discriminator with the P2MP LSP, create a P2MP BFD session with bfd.SessionType = MultipointTail, and use the source IP, BFD Discriminator value, and P2MP LSP identity to demultiplex BFD sessions.
A Source Address TLV, as defined in Section 4.1 of RFC 7212, MUST immediately follow the BFD Control packet in non-IP G-ACh encapsulation to provide the identity of the MultipointHead.
BFD for P2MP MPLS LSPs MUST follow the requirements in Section 4.1 of RFC 4687 to avoid congestion in the control or data plane caused by the rate of generating BFD Control packets.
For active tail mode, on the ingress LSR bfd.RequiredMinRxInterval MUST be nonzero (allowing egress LSRs to send BFD Control packets), and on the egress LSR bfd.SilentTail MUST be set to zero.
If LSP Ping is used to bootstrap MultipointTail, it MUST include the Target FEC Stack TLV (RFC 8029) and the BFD Discriminator TLV (RFC 5884). For P2MP SR policy with SR-MPLS, the implementation MUST follow RFC 8287.
If the BFD Control packet is encapsulated in IP/UDP, the source IP address MUST be used to demultiplex the received BFD Control packet as described in Section 5.7 of RFC 8562.
LSP Ping SHOULD be used periodically to verify the control plane against the data plane; its rate SHOULD be significantly less than the BFD Control packet generation rate because LSP Ping requires more processing.
Non-IP encapsulation for multipoint BFD over P2MP MPLS LSP MUST use the G-ACh Label (GAL) at the bottom of the label stack followed by an Associated Channel Header (ACH), and the Channel Type field MUST be set to Multipoint BFD Session (0x0013).
Setting the Reply Mode field to 'Do not reply' for the LSP Ping used to bootstrap a MultipointTail is RECOMMENDED, because BFD Demand mode means the MPLS echo reply from a tail has no useful information to convey to the head.
The active tail SHOULD initially transmit three BFD Control packets in short succession upon detecting a P2MP MPLS LSP failure, to improve the likelihood of notifying the ingress LSR.
The MultipointHead SHOULD use the Entropy Label (RFC 6790) used for LSP Ping to exercise alternative paths for the given P2MP LSP FEC, or MAY use the UDP port number to exercise alternate paths.
The periodic BFD Control packet transmission by the active tail MUST be jittered by up to 25% within one-second intervals (i.e., the interval MUST be reduced by a random value of 0–25%) to reduce the possibility of congestion on the ingress LSR's control plane.
The sender of an MPLS echo request SHOULD use an IPv6 destination address from the Dummy IPv6 Prefix address block 100:0:0:1::/64; it MAY instead select an address from ::ffff:7f00/104.
MultipointHead and MultipointTail are the two BFD session types defined in RFC 8562 and used in this document. The head transmits all BFD Control packets with Your Discriminator set to zero; tails demultiplex using source IP, My Discriminator, and the multipoint tree identity.
The active tail head notification procedure (Head Notification without Polling, RFC 8563 Section 5.2.1): upon detecting P2MP LSP failure, the egress LSR sends unsolicited BFD Control packets with Poll (P) bit set, Sta=Down, Diag=Control Detection Time Expired, and Your Discriminator set to the session's demultiplexing value, at one-per-second until the ingress LSR acknowledges with the Final (F) bit set.
The BFD Discriminator attribute MAY be used as an out-of-band control plane method to bootstrap a multipoint BFD session on a tail, following the format and procedures in Section 3.1.6 of RFC 9026.
IANA has allocated 100:0:0:1::/64 as the 'Dummy IPv6 Prefix' in the IANA IPv6 Special-Purpose Address Registry. It is Source=True, Destination=False, Forwardable=False, Globally Reachable=False, Allocation Date 2025-04.
IANA has allocated value 0x0013 in the 'MPLS Generalized Associated Channel (G-ACh) Types' registry with the description 'Multipoint BFD Session', referencing RFC 9780.
Operators SHOULD consider the amount of extra traffic generated by P2MP BFD when selecting the MultipointHead transmission interval. IP/UDP encapsulation adds up to 28 octets per BFD Control packet compared to G-ACh encapsulation, representing more than 50% overhead.
RFC 9780 inherits all security considerations from RFC 5880, RFC 5884, RFC 7726, RFC 8562, RFC 8029, and RFC 6425 without introducing new threats. BFD for P2MP MPLS LSPs MUST follow RFC 4687 requirements to avoid control/data plane congestion from high BFD Control packet rates.
Non-IP G-ACh encapsulation (Figure 1) consists of: LSP Label (20 bits) + TC (3) + S (1) + TTL (8); GAL (20) + TC (3) + S=1 (1) + TTL (8); ACH: 0001 (4) + Version (4) + Flags (8) + Channel Type=0x0013 (16); BFD Control Packet (variable); Source Address TLV with Type=0 (8), Reserved (8), Length (16), Reserved (16), Address Family (16), Address (variable).