Bidirectional Forwarding Detection (BFD) in Segment Routing Networks Using MPLS Dataplane
Internet-Draft draft-ietf-spring-bfd-10
Greg Mirsky
Ericsson
gregimirsky@gmail.com
Jeff Tantsura
NVDIA
jefftant.ietf@gmail.com
Ilya Varlashkin
Google
imv@google.com
Mach(Guoyi) Chen
Huawei
mach.chen@huawei.com
Jiang Wenying
CMCC
jiangwenying@chinamobile.com
2024
Routing
SPRING Working Group
Internet-Draft
LSP Ping
BFD
Segment Routing (SR) architecture leverages the paradigm of source routing. It can be realized in the Multiprotocol Label Switching (MPLS) network without any change to the data plane. A segment is encoded as an MPLS label, and an ordered list of segments is encoded as a stack of labels. Bidirectional Forwarding Detection (BFD) is expected to monitor any existing path between systems. This document defines how to use Label Switched Path (LSP) Ping to bootstrap a BFD session, optional control of the selection of a segment list as the reverse direction of the BFD session, applicability of BFD Demand mode, and Seamless BFD in the SR-MPLS domain. Also, the document describes the use of the BFD Echo function with the BFD Control packet payload.
Introduction
[RFC5880], [RFC5881], and [RFC5883] defined the operation of Bidirectional Forwarding Detection (BFD) protocol between the two systems over IP networks. [RFC5884] and [RFC7726] set rules for using BFD Asynchronous mode over point-to-point (p2p) Multiprotocol Label Switching (MPLS) Label Switched Path (LSP). These latter standards implicitly assume that the remote BFD system, which is at the egress Label Edge Router (LER), will use the shortest path route regardless of the path the BFD system at the ingress LER uses to send BFD Control packets towards it. Throughout this document, references to ingress LER and egress LER are used, respectively, as a shortened version of the "BFD system at the ingress/egress LER".
This document defines the use of LSP Ping for Segment Routing networks over the MPLS data plane [RFC8287] to bootstrap and control path of a BFD session from the egress to ingress LER using Segment Routing tunnel with MPLS data plane (SR-MPLS).
[RFC9256] defines the SR Policy architecture. When analyzing the applicability of a BFD-based mechanism for detecting network failures in a Segment Routing domain, it is essential to identify the SR Policy elements monitored by the BFD. Concluding from the definition of BFD in [RFC5880], in an SR domain, BFD, in its modes and functions, monitors not the SR Policy, as defined in [RFC9256], but a segment list that is a constituent of the candidate path of the particular SR Policy. That is the context used throughout the document.
Conventions
Terminology
BFD: Bidirectional Forwarding Detection
BSID: Binding Segment Identifier
FEC: Forwarding Equivalence Class
MPLS: Multiprotocol Label Switching
SR-MPLS Segment Routing with MPLS data plane
LSP: Label Switched Path
LER Label Edge Router
p2p Point-to-point
p2mp Point-to-multipoint
SID Segment Identifier
SR Segment Routing
S-BFD Seamless BFD
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.
Bootstrapping BFD Session over Segment Routed Tunnel with MPLS Data Plane
Use of an LSP Ping to bootstrap BFD over MPLS LSP is required, as documented in [RFC5884], to establish an association between a fault detection message, i.e., BFD Control message, and the Forwarding Equivalency Class (FEC) of a single label stack LSP in case of Penultimate Hop Popping or when the egress LER distributes the Explicit NULL label to the penultimate hop router. The Explicit NULL label is not advertised as a Segment Identifier (SID) by an SR node but, as demonstrated in section 3.1 [RFC8660] if the operation at the penultimate hop is NEXT; then the egress SR node will receive an IP encapsulated packet. Thus the conclusion is that LSP Ping MUST be used to bootstrap a BFD session in an SR-MPLS domain if there are no other means to bootstrap the BFD session, e.g., using an extension to a dynamic routing protocol as described in [RFC9026] and [RFC9186].
As demonstrated in [RFC8287], the introduction of Segment Routing network domains with an MPLS data plane requires three new sub-TLVs that MAY be used with Target FEC TLV [RFC8029]. Section 6.1 addresses the use of the new sub-TLVs in Target FEC TLV in LSP ping and LSP traceroute. For the case of LSP ping, the [RFC8287] states that:
- The initiator, i.e., ingress LER, MUST include FEC(s) corresponding to the destination segment.
- The initiator MAY include FECs corresponding to some or all of segments imposed in the label stack by the ingress LER to communicate the segments traversed.
It has been noted in [RFC5884] that a BFD session monitors for defects particular <MPLS LSP, FEC> tuple. [RFC7726] clarified how to establish and operate multiple BFD sessions for the same <MPLS LSP, FEC> tuple. Because only the ingress LER is aware of the SR-based explicit route, the egress LER can associate the LSP ping with BFD Discriminator TLV with only one of the FECs it advertised for the particular segment. Thus this document clarifies that:
- When LSP Ping is used to bootstrapping a BFD session for SR-MPLS tunnel the FEC corresponding to the segment to be associated with the BFD session MUST be as the very last sub-TLV in the Target FEC TLV.
Encapsulation of a BFD Control packet in Segment Routing network with MPLS data plane MUST follow Section 7 [RFC5884] when the IP/UDP header used and MUST follow Section 3.4 [RFC6428] without IP/UDP header being used.
Use BFD Reverse Path TLV over Segment Routed MPLS Tunnel
For BFD over MPLS LSP case, per [RFC5884], egress LER MAY send BFD Control packet to the ingress LER either over IP network or an MPLS LSP. Similarly, for the case of BFD over p2p SR-MPLS tunnel, the egress LER MAY route BFD Control packet over the IP network, as described in [RFC5883], or transmit over a segment tunnel, as described in Section 7 [RFC5884]. In some cases, there may be a need to direct egress LER to use a specific path for the reverse direction of the BFD session by using the BFD Reverse Path TLV and following all procedures as defined in [I-D.ietf-mpls-bfd-directed].
Use Non-FEC Path TLV
For the case of MPLS data plane, Segment Routing Architecture [RFC8402] explains that "a segment is encoded as an MPLS label. An ordered list of segments is encoded as a stack of labels."
This document defines a new optional Non-FEC Path TLV. The format of the Non-FEC Path TLV is presented in Figure 1
Non-FEC Path TLV Format

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Non-FEC Path TLV Type      |           Length              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   ~                          Non-FEC Path                         ~
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Non-FEC Path TLV Type is two octets in length and has a value of TBD1 (to be assigned by IANA as requested in Section 10.1).
Length field is two octets long and defines the length in octets of the Non-FEC Path field.
Non-FEC Path field contains a sub-TLV. Any Non-FEC Path sub-TLV (defined in this document or to be defined in the future) for Non-FEC Path TLV type MAY be used in this field. None or one sub-TLV MAY be included in the Non-FEC Path TLV. If no sub-TLV has been found in the Non-FEC Path TLV, the egress LER MUST revert to using the reverse path selected based on its local policy. If there is more than one sub-TLV, then the Return Code in echo reply MUST be set to value TBD3 "Too Many TLVs Detected" (to be assigned by IANA as requested in Table 4).
Non-FEC Path TLV MAY be used to specify the reverse path of the BFD session identified in the BFD Discriminator TLV. If the Non-FEC Path TLV is present in the echo request message the BFD Discriminator TLV MUST be present as well. If the BFD Discriminator TLV is absent when the Non-FEC Path TLV is included, then it MUST be treated as malformed Echo Request, as described in [RFC8029].
This document defines the Segment Routing MPLS Tunnel sub-TLV that MAY be used with the Non-FEC Path TLV. The format of the sub-TLV is presented in Figure 2.
Segment Routing MPLS Tunnel sub-TLV

  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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  SR MPLS Tunnel sub-TLV Type  |           Length              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                   SID Entry 1 (Top of Stack)                  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                           SID Entry 2                         |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 ~                                                               ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                   SID Entry N (Bottom of Stack)               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The Segment Routing MPLS Tunnel sub-TLV Type is two octets in length, and has a value of TBD2 (to be assigned by IANA as requested in Section 10.1).
The egress LER MUST use the Value field as label stack for BFD Control packets for the BFD session identified by the source IP address of the MPLS LSP Ping packet and the value in the BFD Discriminator TLV. Label Entries MUST be in network order.
BFD Reverse Path TLV over Segment Routed MPLS Tunnel with Dynamic Control Plane
When Segment Routed domain with MPLS data plane uses distributed tunnel computation BFD Reverse Path TLV MAY use Target FEC sub-TLVs defined in [RFC8287].
Applicability of BFD Demand Mode in SR-MPLS Domain
Sections 6.6 and 6.18.4 of [RFC5880] define how Demand mode of BFD can be used to monitor uni-directional MPLS LSP. Similar procedures can be following in SR-MPLS to monitor uni-directional SR tunnels:
- an ingress SR node bootstraps BFD session over SR-MPLS in Async BFD mode;
- once BFD session is Up, the ingress SR node switches the egress LER into the Demand mode by setting D field in BFD Control packet it transmits;
- if the egress LER detects the failure of the BFD session, it sends its BFD Control packet to the ingress SR node over the IP network with a Poll sequence;
- if the ingress SR node receives a BFD Control packet from the remote node in a Demand mode with Poll sequence and Diag field indicating the failure, the ingress SR node transmits BFD Control packet with Final over IP and switches the BFD over SR-MPLS back into Async mode, sending BFD Control packets one per second.
Using BFD to Monitor Point-to-Multipoint SR Policy
[I-D.ietf-spring-sr-replication-segment] defined variants of SR Policy to deliver point-to-multipoint (p2mp) services. For the given p2mp segment [RFC8562] can be used if, for example, leaves have an alternative source of the multicast service flow to select. In such a scenario, a leaf may switch to using the alternative flow after p2mp BFD detects the failure in the working multicast path. For scenarios where it is required for the root to monitor the state of the multicast tree [RFC8563] can be used. The root may use the detection of the failure of the multicast tree to the particular leaf to restore the path for that leaf or re-instantiate the whole multicast tree.
An essential part of using p2mp BFD is the bootstrapping the BFD session at all the leaves. The root, acting as the MultipointHead, MAY use LSP Ping with the BFD Discriminator TLV. Alternatively, extensions to routing protocols, e.g., BGP, or management plane, e.g., Path Computation Element Protocol, MAY be used to associate the particular p2mp segment with MultipointHead's Discriminator. Extensions for routing protocols and management plane are for further study.
Use of Echo BFD in SR-MPLS
Echo-BFD [RFC5880] can be used to monitor a segment list of the particular SR Policy between the local and the remote BFD peers. As defined in [RFC5880], the remote BFD system does not process the payload of an Echo BFD. Thus it is the local system that demultiplexes the Echo BFD packet matching it to the appropriate BFD session and detects missing Echo BFD packets. A BFD Control packet MAY be used as the payload of Echo BFD. This specification defines the use of Echo BFD in SR-MPLS network with BFD Control packet as the payload. The use of other types of Echo BFD payload is outside the scope of this document. Because the remote BFD system does not process Echo BFD, the value of the Your Discriminator field MUST be set to the discriminator the local BFD system assigned to the given BFD session. My Discriminator field MUST be zeroed. Authentication MUST be set according to the configuration of the BFD session. To ensure that the Echo BFD packet is returned to the sender without being processed, the sender MAY use a Binding SID (BSID) [RFC8402] that has been bound with the SR Policy that ensures the return of a packet to that particular node. A BSID MAY be associated with the SR Policy that is the reverse to the SR Policy programmed onto the BFD Echo packet by the sender.
Use of S-BFD in SR-MPLS
Seamless BFD (S-BFD), defined in [RFC7880], maintains essential characteristics and elements of the base BFD mechanism described in [RFC5880] with a lighter approach to instantiating a BFD session between BFD peers. Similar to the BFD Asynchronous mode, S-BFD is capable of monitoring a segment list of a p2p SR Policy.
Considering that a particular SR Policy can include multiple candidate paths, which, in turn, have one or more segment lists, it could be beneficial to monitor each segment list independently. To achieve that, S-BFD Reflector advertises My Discriminator value. Then, the S-BFD Initiator uses the advertised My Discriminator value as Your Discriminator value in the BFD Control messages transmitted over the segment list of the SR Policy. Furthermore, the S-BFD Initiator assigns a unique My Discriminator for each S-BFD session monitoring a segment list. S-BFD Reflector transmits BFD Control messages as IP/UDP packets, taking advantage of the available resilience mechanisms of the IP network. From that point, to minimize the detection of failures in the IP network that do not affect the monitored segment list, it is reasonable not to use defect detection intervals that are close to the IP network repair time. Instead, having an S-BFD detection interval three times longer than the IP network repair time is practical.
IANA Considerations
Non-FEC Path TLV
IANA is requested to assign new TLV type from the from Standards Action range of the registry "Multiprotocol Label Switching Architecture (MPLS) Label Switched Paths (LSPs) Ping Parameters - TLVs" as defined in Table 1.
New Non-FEC Path TLV
Value | TLV Name | Reference
TBD1 | Non-FEC Path TLV | This document
IANA is requested to create new Non-FEC Path sub-TLV registry for the Non-FEC Path TLV, as described in Table 2.
Non-FEC Path sub-TLV registry
Range | Registration Procedures | Note
0-16383 | Standards Action | This range is for mandatory TLVs or for optional TLVs that require an error message if not recognized.
16384-31743 | Specification Required | Experimental RFC needed
32768-49161 | Standards Action | This range is for optional TLVs that can be silently dropped if not recognized.
49162-64511 | Specification Required | Experimental RFC needed
64512-65535 | Private Use |
IANA is requested to allocate the following values from the Non-FEC Path sub-TLV registry as defined in Table 3.
New Segment Routing Tunnel sub-TLV
Value | Description | Reference
0 | Reserved | This document
TBD2 | Segment Routing MPLS Tunnel sub-TLV | This document
65535 | Reserved | This document
Return Code
IANA is requested to create Non-FEC Path sub-TLV sub-registry for the new Non-FEC Path TLV and assign a new Return Code value from the "Multi-Protocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters" registry, "Return Codes" sub-registry, as follows using a Standards Action value.
New Return Code
Value | Description | Reference
X TBD3 | Too Many TLVs Detected. | This document
Implementation Status
Note to RFC Editor: This section MUST be removed before publication of the document.
This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in [RFC7942]. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs. Please note that the listing of any individual implementation here does not imply endorsement by the IETF. Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features. Readers are advised to note that other implementations may exist.
According to [RFC7942], "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature. It is up to the individual working groups to use this information as they see fit".
- The organization responsible for the implementation: ZTE Corporation.
- The implementation's name ROSng SW empowers traditional routers, e.g., ZXCTN 6000.
- A brief general description: A list of SIDs can be specified as the Return Path for an SR-MPLS tunnel.
- The implementation's level of maturity: production.
- Coverage: complete
- Version compatibility: draft-mirsky-spring-bfd-06.
- Licensing: proprietary.
- Implementation experience: Appreciate Early Allocation of values for Non-FEC TLV and Segment Routing MPLS Tunnel sub-TLV (using Private Use code points).
- Contact information: Qian Xin qian.xin2@zte.com.cn
- The date when information about this particular implementation was last updated: 12/16/2019
Security Considerations
Security considerations discussed in [RFC5880], [RFC5884], [RFC7726], and [RFC8029] apply to this document.
Contributors

   Xiao Min
   ZTE Corp.
   Email: xiao.min2@zte.com.cn

Acknowledgments
Authors express their sincere gratitude to Alexander "Sasha" Vainshtein for his helpful comments and thought-inspiring discussion of SR Policies and BFD-based mechanisms. Authors greatly appreciate the help of Qian Xin, who provided the information about the implementation of this specification.
References
Normative References
Informative References
[RFC5880]
[RFC5881]
[RFC5883]
[RFC5884]
[RFC7726]
[RFC8287]
[RFC9256]
[RFC2119]
[RFC8174]
[RFC8660]
[RFC9026]
[RFC9186]
[RFC8029]
[RFC6428]
[I-D.ietf-mpls-bfd-directed]
[RFC8402]
[I-D.ietf-spring-sr-replication-segment]
[RFC8562]
[RFC8563]
[RFC7880]
[RFC7942]