diff options
Diffstat (limited to 'doc/rfc/rfc9655.txt')
-rw-r--r-- | doc/rfc/rfc9655.txt | 542 |
1 files changed, 542 insertions, 0 deletions
diff --git a/doc/rfc/rfc9655.txt b/doc/rfc/rfc9655.txt new file mode 100644 index 0000000..4b61e71 --- /dev/null +++ b/doc/rfc/rfc9655.txt @@ -0,0 +1,542 @@ + + + + +Internet Engineering Task Force (IETF) D. Rathi, Ed. +Request for Comments: 9655 Nokia +Category: Standards Track S. Hegde, Ed. +ISSN: 2070-1721 Juniper Networks Inc. + K. Arora + Individual Contributor + Z. Ali + N. Nainar + Cisco Systems, Inc. + November 2024 + + +Egress Validation in Label Switched Path Ping and Traceroute Mechanisms + +Abstract + + The MPLS ping and traceroute mechanisms described in RFC 8029 and the + related extensions for Segment Routing (SR) defined in RFC 8287 are + highly valuable for validating control plane and data plane + synchronization. In certain environments, only some intermediate or + transit nodes may have been upgraded to support these validation + procedures. A straightforward MPLS ping and traceroute mechanism + allows traversal of any path without validation of the control plane + state. RFC 8029 supports this mechanism with the Nil Forwarding + Equivalence Class (FEC). The procedures outlined in RFC 8029 are + primarily applicable when the Nil FEC is used as an intermediate FEC + in the FEC stack. However, challenges arise when all labels in the + label stack are represented using the Nil FEC. + + This document introduces a new Type-Length-Value (TLV) as an + extension to the existing Nil FEC. It describes MPLS ping and + traceroute procedures using the Nil FEC with this extension to + address and overcome these challenges. + +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/rfc9655. + +Copyright Notice + + Copyright (c) 2024 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. Requirements Language + 2. Problem with Nil FEC + 3. Egress TLV + 4. Procedure + 4.1. Sending Egress TLV in MPLS Echo Request + 4.1.1. Ping Mode + 4.1.2. Traceroute Mode + 4.1.3. Detailed Example + 4.2. Receiving Egress TLV in MPLS Echo Request + 5. Backward Compatibility + 6. IANA Considerations + 6.1. New TLV + 6.2. New Return Code + 7. Security Considerations + 8. References + 8.1. Normative References + 8.2. Informative References + Acknowledgements + Authors' Addresses + +1. Introduction + + Segment routing supports the creation of explicit paths by using one + or more Link-State IGP Segments or BGP Segments defined in [RFC8402]. + In certain use cases, the TE paths are built using mechanisms + described in [RFC9256] by stacking the labels that represent the + nodes and links in the explicit path. Controllers are often deployed + to construct paths across multi-domain networks. In such + deployments, the headend routers may have the link-state database of + their domain and may not be aware of the FEC associated with labels + that are used by the controller to build paths across multiple + domains. A very useful Operations, Administration, and Maintenance + (OAM) requirement is to be able to ping and trace these paths. + + [RFC8029] describes a simple and efficient mechanism to detect data + plane failures in MPLS Label Switched Paths (LSPs). It defines a + probe message called an "MPLS echo request" and a response message + called an "MPLS echo reply" for returning the result of the probe. + SR-related extensions for these are specified in [RFC8287]. + [RFC8029] provides mechanisms primarily to validate the data plane + and secondarily to verify the consistency of the data plane with the + control plane. It also provides the ability to traverse Equal-Cost + Multipaths (ECMPs) and validate each of the ECMP paths. The Target + FEC Stack TLV [RFC8029] contains sub-TLVs that carry information + about the label. This information gets validated on each node for + traceroute and on the egress for ping. The use of the Target FEC + Stack TLV requires all nodes in the network to have implemented the + validation procedures, but all intermediate nodes may not have been + upgraded to support validation procedures. In such cases, it is + useful to have the ability to traverse the paths in ping/traceroute + mode without having to obtain the FEC for each label. + + A simple MPLS echo request/reply mechanism allows for traversing the + SR Policy path without validating the control plane state. [RFC8029] + supports this mechanism with FECs like the Nil FEC and the Generic + FECs (i.e., Generic IPv4 prefix and Generic IPv6 prefix). However, + there are challenges in reusing the Nil FEC and Generic FECs for + validation of SR Policies [RFC9256]. The Generic IPv4 prefix and + Generic IPv6 prefix FECs are used when the protocol that is + advertising the label is unknown. The information that is carried in + the Generic FECs is the IPv4 or IPv6 prefix and prefix length. Thus, + the Generic FEC types perform an additional control plane validation. + However, the Generic FECs and relevant validation procedures are not + thoroughly detailed in [RFC8029]. The use case mostly specifies + inter-AS (Autonomous System) VPNs as the motivation. Certain aspects + of SR, such as anycast Segment Identifiers (SIDs), require clear + guidelines on how the validation procedure should work. Also, the + Generic FECs may not be widely supported, and if transit routers are + not upgraded to support validation of Generic FECs, traceroute may + fail. On the other hand, the Nil FEC consists of the label, and + there is no other associated FEC information. The Nil FEC is used to + traverse the path without validation for cases where the FEC is not + defined or routers are not upgraded to support the FECs. Thus, it + can be used to check any combination of segments on any data path. + The procedures described in [RFC8029] are mostly applicable when the + Nil FEC is used as an intermediate FEC in the FEC stack. Challenges + arise when all labels in the label stack are represented using the + Nil FEC. + + Section 2 discusses the problems associated with using the Nil FEC in + an MPLS ping/traceroute procedure, and Sections 3 and 4 discuss + simple extensions needed to solve the problem. + + The problems and the solutions described in this document apply to + the MPLS data plane. Segment Routing over IPv6 (SRv6) is out of + scope for this document. + +1.1. 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. Problem with Nil FEC + + The purpose of the Nil FEC, as described in [RFC8029], is to ensure + that transit tunnel information is hidden and, in some cases, to + avoid false negatives when the FEC information is unknown. + + This document uses a Nil FEC to represent the complete label stack in + an MPLS echo request message in ping and traceroute mode. A single + Nil FEC is used in the MPLS echo request message irrespective of the + number of segments in the label stack. Section 4.4.1 of [RFC8029] + notes: + + | If the outermost FEC of the Target FEC stack is the Nil FEC, then + | the node MUST skip the Target FEC validation completely. + + When a router in the label stack path receives an MPLS echo request + message, there is no definite way to decide whether it is the + intended egress router since the Nil FEC does not carry any + information and no validation is performed by the router. Thus, + there is a high possibility that the packet may be misforwarded to an + incorrect destination but the MPLS echo reply might still return + success. + + To mitigate this issue, it is necessary to include additional + information, along with the Nil FEC, in the MPLS echo request message + in both ping and traceroute modes and to perform minimal validation + on the egress/destination router. This will enable the router to + send appropriate success and failure information to the headend + router of the SR Policy. This supplementary information should + assist in reporting transit router details to the headend router, + which can be utilized by an offline application to validate the + traceroute path. + + Consequently, the inclusion of egress information in the MPLS echo + request messages in ping and traceroute modes will facilitate the + validation of the Nil FEC on the egress router, ensuring the correct + destination. Egress information can be employed to verify any + combination of segments on any path without requiring upgrades to + transit nodes. The Egress TLV can be silently dropped if not + recognized; alternately, it may be stepped over, or an error message + may be sent (per [RFC8029] and the clarifications in [RFC9041] + regarding code points in the range 32768-65535). + + If a transit node does not recognize the Egress TLV and chooses to + silently drop or step over the Egress TLV, the headend will continue + to send the Egress TLV in the next echo request message, and if + egress recognizes the Egress TLV, egress validation will be executed + at the egress. If a transit node does not recognize the Egress TLV + and chooses to send an error message, the headend will log the + message for informational purposes and continue to send echo requests + with the Egress TLV, with the TTL incremented. If the egress node + does not recognize the Egress TLV and chooses to silently drop or + step over the Egress TLV, egress validation will not be done, and the + ping/traceroute procedure will proceed as if the Egress TLV were not + received. + +3. Egress TLV + + The Egress TLV MAY be included in an MPLS echo request message. It + is an optional TLV and, if present, MUST appear before the Target FEC + Stack TLV in the MPLS echo request packet. This TLV can only be used + in LSP ping/traceroute requests that are generated by the headend + node of an LSP or SR Policy for which verification is performed. In + cases where multiple Nil FECs are present in the Target FEC Stack + TLV, the Egress TLV must be added corresponding to the ultimate + egress of the label stack. Explicit paths can be created using Node- + SID, Adj-SID, Binding SID, etc. The Address field of the Egress TLV + must be derived from the path egress/destination. The format is as + specified 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type = 32771 (Egress TLV) | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Address (4 or 16 octets) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 1: Egress TLV + + Type: 32771 (Section 6.1) + + Length: Variable (4 octets for IPv4 addresses and 16 octets for IPv6 + addresses). Length excludes the length of the Type and Length + fields. + + Address: This field carries a valid 4-octet IPv4 address or a valid + 16-octet IPv6 address. The address can be obtained from the + egress of the path and corresponds to the last label in the label + stack or the SR Policy Endpoint field [SR-POLICY-BGP]. + +4. Procedure + + This section describes aspects of LSP ping and traceroute operations + that require further considerations beyond those detailed in + [RFC8029]. + +4.1. Sending Egress TLV in MPLS Echo Request + + As previously mentioned, when the sender node constructs an echo + request with a Target FEC Stack TLV, the Egress TLV, if present, MUST + appear before the Target FEC Stack TLV in the MPLS echo request + packet. + +4.1.1. Ping Mode + + When the sender node constructs an echo request with a Target FEC + Stack TLV that contains a single Nil FEC corresponding to the last + segment of the SR Policy path, the sender node MUST add an Egress TLV + with the address obtained from the SR Policy Endpoint field + [SR-POLICY-BGP]. The Label value in the Nil FEC MAY be set to zero + when a single Nil FEC is added for multiple labels in the label + stack. In case the endpoint is not specified or is equal to zero + (Section 8.8.1 of [RFC9256]), the sender MUST use the address + corresponding to the last segment of the SR Policy in the Address + field of the Egress TLV. Some specific cases on how to derive the + Address field in the Egress TLV are listed below: + + * If the last SID in the SR Policy is an Adj-SID, the Address field + in the Egress TLV is derived from the node at the remote end of + the corresponding adjacency. + + * If the last SID in the SR Policy is a Binding SID, the Address + field in the Egress TLV is derived from the last node of the path + represented by the Binding SID. + +4.1.2. Traceroute Mode + + When the sender node builds an echo request with a Target FEC Stack + TLV that contains a Nil FEC corresponding to the last segment of the + segment list of the SR Policy, the sender node MUST add an Egress TLV + with the address obtained from the SR Policy Endpoint field + [SR-POLICY-BGP]. + + Although there is no requirement to do so, an implementation MAY send + multiple Nil FECs if that makes it easier for the implementation. If + the SR Policy headend sends multiple Nil FECs, the last one MUST + correspond to the Egress TLV. The Label value in the Nil FEC MAY be + set to zero for the last Nil FEC. If the endpoint is not specified + or is equal to zero (Section 8.8.1 of [RFC9256]), the sender MUST use + the address corresponding to the last segment endpoint of the SR + Policy path (i.e., the ultimate egress is used as the address in the + Egress TLV). + +4.1.3. Detailed Example + + ----R3---- + / (1003) \ + (1001) / \(1005) (1007) + R1----R2(1002) R5----R6----R7(address X) + \ / (1006) + \ (1004) / + ----R4---- + + Figure 2: Egress TLV Processing in Sample Topology + + Consider the SR Policy configured on router R1 to destination X, + configured with label stack as 1002, 1004, 1007. Segment 1007 + belongs to R7, which has the address X locally configured on it. + + Let us look at an example of a ping echo request message. The echo + request message contains a Target FEC Stack TLV with the Nil FEC sub- + TLV. An Egress TLV is added before the Target FEC Stack TLV. The + Address field contains X (corresponding to a locally configured + address on R7). X could be an IPv4 or IPv6 address, and the Length + field in the Egress TLV will be either 4 or 16 octets, based on the + address type of address X. + + Let us look at an example of an echo request message in a traceroute + packet. The echo request message contains a Target FEC Stack TLV + with the Nil FEC sub-TLV corresponding to the complete label stack + (1002, 1004, 1007). An Egress TLV is added before the Target FEC + Stack TLV. The Address field contains X (corresponding to a locally + configured address on destination R7). X could be an IPv4 or IPv6 + address, and the Length field in the Egress TLV will be either 4 or + 16 octets, based on the address type of address X. If the + destination/endpoint is set to zero (as in the case of the color-only + SR Policy), the sender should use the endpoint of segment 1007 (the + last segment in the segment list) as the address for the Egress TLV. + +4.2. Receiving Egress TLV in MPLS Echo Request + + Any node that receives an MPLS echo request message and processes it + is referred to as the "receiver". In the case of the ping procedure, + the actual destination/egress is the receiver. In the case of + traceroute, every node is a receiver. This document does not propose + any change in the processing of the Nil FEC (as defined in [RFC8029]) + in the node that receives an MPLS echo request with a Target FEC + Stack TLV. The presence of the Egress TLV does not affect the + validation of the Target FEC Stack sub-TLV at FEC-stack-depth if it + is different than Nil FEC. + + Additional processing MUST be done for the Egress TLV on the receiver + node as follows. Note that <RSC> refers to the Return Subcode. + + 1. If the Label-stack-depth is greater than 0 and the Target FEC + Stack sub-TLV at FEC-stack-depth is Nil FEC, set Best-return-code + to 8 ("Label switched at stack-depth <RSC>") and Best-rtn-subcode + to Label-stack-depth to report transit switching in the MPLS echo + reply message. + + 2. If the Label-stack-depth is 0 and the Target FEC Stack sub-TLV at + FEC-stack-depth is Nil FEC, then do a lookup for an exact match + of the Address field of the Egress TLV to any of the locally + configured interfaces or loopback addresses. + + a. If the Egress TLV address lookup succeeds, set Best-return- + code to 36 ("Replying router is an egress for the address in + the Egress TLV for the FEC at stack depth <RSC>") + (Section 6.2) in the MPLS echo reply message. + + b. If the Egress TLV address lookup fails, set the Best-return- + code to 10 ("Mapping for this FEC is not the given label at + stack-depth <RSC>"). + + 3. In some cases, multiple Nil FECs (one corresponding to each label + in the label stack), along with the Egress TLV, are sent from the + SR Policy headend. When the packet reaches the egress, the + number of labels in the received packet (size of stack-R) becomes + zero, or a label with the Bottom-of-Stack bit set to 1 is + processed. All Nil FEC sub-TLVs MUST be removed, and the Egress + TLV MUST be validated. + +5. Backward Compatibility + + The extensions defined in this document are backward compatible with + the procedures described in [RFC8029]. A router that does not + support the Egress TLV will ignore it and use the Nil FEC procedures + described in [RFC8029]. + + When the egress node in the path does not support the extensions + defined in this document, egress validation will not be done, and + Best-return-code will be set to 3 ("Replying router is an egress for + the FEC at stack-depth <RSC>") and Best-rtn-subcode to stack-depth in + the MPLS echo reply message. + + When the transit node in the path does not support the extensions + defined in this document, Best-return-code will be set to 8 ("Label + switched at stack-depth <RSC>") and Best-rtn-subcode to Label-stack- + depth to report transit switching in the MPLS echo reply message. + +6. IANA Considerations + +6.1. New TLV + + IANA has added the following entry to the "TLVs" registry within the + "Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) + Ping Parameters" registry group [IANA-MPLS-LSP]: + + +=======+============+===========+ + | Type | TLV Name | Reference | + +=======+============+===========+ + | 32771 | Egress TLV | RFC 9655 | + +-------+------------+-----------+ + + Table 1: TLVs Registry + +6.2. New Return Code + + IANA has added the following entry to the "Return Codes" registry + within the "Multiprotocol Label Switching (MPLS) Label Switched Paths + (LSPs) Ping Parameters" registry group [IANA-MPLS-LSP]: + + +=======+==================================+===========+ + | Value | Meaning | Reference | + +=======+==================================+===========+ + | 36 | Replying router is an egress for | RFC 9655 | + | | the address in the Egress TLV | | + | | for the FEC at stack depth <RSC> | | + +-------+----------------------------------+-----------+ + + Table 2: Return Codes Registry + +7. Security Considerations + + This document defines an additional TLV for MPLS LSP ping and + conforms to the mechanisms defined in [RFC8029]. All the security + considerations defined in [RFC8287] apply to this document. This + document does not introduce any additional security challenges to be + considered. + +8. References + +8.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>. + + [RFC8029] Kompella, K., Swallow, G., Pignataro, C., Ed., Kumar, N., + Aldrin, S., and M. Chen, "Detecting Multiprotocol Label + Switched (MPLS) Data-Plane Failures", RFC 8029, + DOI 10.17487/RFC8029, March 2017, + <https://www.rfc-editor.org/info/rfc8029>. + + [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>. + + [RFC8287] Kumar, N., Ed., Pignataro, C., Ed., Swallow, G., Akiya, + N., Kini, S., and M. Chen, "Label Switched Path (LSP) + Ping/Traceroute for Segment Routing (SR) IGP-Prefix and + IGP-Adjacency Segment Identifiers (SIDs) with MPLS Data + Planes", RFC 8287, DOI 10.17487/RFC8287, December 2017, + <https://www.rfc-editor.org/info/rfc8287>. + + [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., + Decraene, B., Litkowski, S., and R. Shakir, "Segment + Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, + July 2018, <https://www.rfc-editor.org/info/rfc8402>. + + [RFC9041] Andersson, L., Chen, M., Pignataro, C., and T. Saad, + "Updating the MPLS Label Switched Paths (LSPs) Ping + Parameters IANA Registry", RFC 9041, DOI 10.17487/RFC9041, + July 2021, <https://www.rfc-editor.org/info/rfc9041>. + + [RFC9256] Filsfils, C., Talaulikar, K., Ed., Voyer, D., Bogdanov, + A., and P. Mattes, "Segment Routing Policy Architecture", + RFC 9256, DOI 10.17487/RFC9256, July 2022, + <https://www.rfc-editor.org/info/rfc9256>. + +8.2. Informative References + + [IANA-MPLS-LSP] + IANA, "Multiprotocol Label Switching (MPLS) Label Switched + Paths (LSPs) Ping Parameters", + <http://www.iana.org/assignments/mpls-lsp-ping- + parameters>. + + [SR-POLICY-BGP] + Previdi, S., Filsfils, C., Talaulikar, K., Ed., Mattes, + P., and D. Jain, "Advertising Segment Routing Policies in + BGP", Work in Progress, Internet-Draft, draft-ietf-idr-sr- + policy-safi-10, 7 November 2024, + <https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr- + policy-safi-10>. + +Acknowledgements + + The authors would like to thank Stewart Bryant, Greg Mirsky, + Alexander Vainshtein, Sanga Mitra Rajgopal, and Adrian Farrel for + their careful review and comments. + +Authors' Addresses + + Deepti N. Rathi (editor) + Nokia + Manyata Embassy Business Park + Bangalore 560045 + Karnataka + India + Email: deepti.nirmalkumarji_rathi@nokia.com + + + Shraddha Hegde (editor) + Juniper Networks Inc. + Exora Business Park + Bangalore 560103 + Karnataka + India + Email: shraddha@juniper.net + + + Kapil Arora + Individual Contributor + Email: kapil.it@gmail.com + + + Zafar Ali + Cisco Systems, Inc. + Email: zali@cisco.com + + + Nagendra Kumar Nainar + Cisco Systems, Inc. + Email: naikumar@cisco.com |