<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8287 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8287.xml">
<!ENTITY RFC8029 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8029.xml">
<!ENTITY RFC3443 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3443.xml">
<!ENTITY RFC5226 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5226.xml">
<!ENTITY RFC8402 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8402.xml">
<!ENTITY RFC9041 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9041.xml">
<!ENTITY RFC7942 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7942.xml">
]>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc submissionType="IETF" category="std" docName="draft-ietf-mpls-egress-tlv-for-nil-fec-15" 
 ipr="trust200902" consensus="true" version="2">
<front>
  <title abbrev="Egress Validation in LSP Ping/Traceroute ">
  Egress Validation in Label Switched Path Ping and Traceroute Mechanisms</title>

  <author initials="D." surname="Rathi" fullname="Deepti N. Rathi"
  role="editor">
    <organization>Nokia</organization>
    <address>
      <postal>
        <street>Manyata Embassy Business Park</street>
        <city>Bangalore</city>
        <region>Karnataka</region>
        <code>560045</code>
        <country>India</country>
      </postal>
      <email>deepti.nirmalkumarji_rathi@nokia.com</email>
    </address>
  </author>

  <author initials="S." surname="Hegde" fullname="Shraddha Hegde"
  role="editor">
    <organization>Juniper Networks Inc.</organization>
    <address>
      <postal>
        <street>Exora Business Park</street>
        <city>Bangalore</city>
        <region>KA</region>
        <code>560103</code>
        <country>India</country>
      </postal>
      <email>shraddha@juniper.net</email>
    </address>
  </author>
 
  <author initials="K." surname="Arora" fullname="Kapil Arora">
    <organization>Individual Contributor</organization>
    <address>
      <email>kapil.it@gmail.com</email>
    </address>
  </author>

  <author initials="Z." surname="Ali" fullname="Zafar Ali">
    <organization>Cisco Systems, Inc.</organization>
    <address>
      <email>zali@cisco.com</email>
    </address>
  </author>

  <author initials="N." surname="Nainar" fullname="Nagendra Kumar Nainar">
    <organization>Cisco Systems, Inc.</organization>
    <address>
      <email>naikumar@cisco.com</email>
    </address>
  </author>
  
  <date year="2024"/>
  <area>Routing</area>
  <workgroup>Routing area</workgroup>
  <keyword>FEC</keyword>
  <keyword>OAM</keyword>
  <keyword>OSPF</keyword>
  <keyword>IS-IS</keyword>
  <keyword>SPRING</keyword>
  <abstract>
    <t>	
	The MPLS ping and traceroute mechanisms, as described in <xref target="RFC8029"/> 
	and the related extensions for Segment Routing (SR) defined in <xref target="RFC8287"/>, 
	is 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 traversing any path without validating the 
	control plane state. <xref target="RFC8029"/> supports this mechanism with the Nil 
	Forwarding Equivalence Class (FEC). The procedures outlined in <xref target="RFC8029"/> 
	is primarily applicable when the Nil FEC is used as an intermediate FEC 
	in the label stack. However, challenges arise when all labels in the label
	stack are represented using the Nil FEC.</t>

	<t>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.</t>

   </abstract>

  <note title="Requirements Language">
    <t>
	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 
	<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when,
	they appear in all capitals, as shown here.
	</t>
  </note>

</front>

<middle>
  <section title="Introduction" anchor='intro'>
		
	<t>Segment routing supports the creation of explicit paths by using one or more 
	Link State IGP Segments or BGP Segments defined in <xref target="RFC8402"/>. 
	In certain use cases, the TE paths are
	built using mechanisms described in <xref target="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 head-end routers may 
	have the link state database of its 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. </t>
    <t>
	<xref target="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 to Echo Request/Echo Reply are specified in
	<xref target="RFC8287"/>. <xref target="RFC8029"/> primarily provides 
	mechanisms 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 Multiple Paths (ECMP) and validate each of the ECMP paths. 
	 Target FEC Stack TLV <xref target="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 Target FEC
	requires all nodes in the network to have implemented the validation 
	procedures. 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. </t>
	
	<t>A simple MPLS 
	Echo Request/Echo Reply mechanism allows for traversing the SR Policy 
	path without validating the control plane state. <xref target="RFC8029"/>
	supports this mechanism with FECs like Nil FEC and Generic FEC.
	However, there are challenges in reusing the Generic FEC and Nil FEC for validation of SR policies <xref target="RFC9256"/>.
	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 Generic FEC is
	the IPv4 or IPv6 prefix and prefix length. Thus Generic FEC types perform
	an additional control plane validation. However, the details of Generic FEC and
	validation procedures are not very detailed in the <xref target="RFC8029"/>.
	The use-case mostly specifies inter-AS VPNs as the motivation.
	Certain aspects of SR such as anycast SIDs require clear guidelines
	on how the validation procedure should work. Also, Generic FEC may not be widely
	supported and if transit routers are not upgraded to support validation of Generic
	FEC, traceroute may fail.
	On the other hand, Nil FEC consists of the label and there is no other associated
	FEC information. 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 <xref target="RFC8029"/> are mostly applicable
	when the Nil FEC is used where the Nil FEC is intermediate in the
	label stack. When all labels in the label-stack is represented using Nil FEC,
	it poses some challenges.</t>
    <t>  <xref target="Problems_with_Nil_FEC"/> discusses the problems
	associated with using Nil FEC in an MPLS ping/traceroute procedure and
	<xref target="egress_tlv"/> and <xref target="detail_procedure"/> discuss
	simple extensions needed to solve the problem.
    </t>
	<t>The problems and the solutions described in this document apply to
	MPLS data plane. SRv6 is out-of-scope for this document.</t>

  </section>

  <section anchor='Problems_with_Nil_FEC' title='Problem with Nil FEC'>

    <t>The purpose of Nil FEC as described in <xref target="RFC8029"/> is to
	ensure hiding of transit tunnel information and in some cases to avoid false
	negatives when the FEC information is unknown.</t>
	<t>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. As described in sec 4.4.1 of <xref target="RFC8029"/>,
	"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 Nil FEC does not carry any information and no validation
	is performed by the router.
	So there is a high possibility that the packet may be mis-forwarded to an incorrect
	destination but the MPLS Echo Reply might still return success.</t>
	
	<t>
	To mitigate this issue, it is necessary to include additional
	information in the MPLS Echo Request message in both ping and traceroute
	modes, along with the Nil FEC, 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.
	</t>
	
	<t>Consequently, the inclusion of egress information in the MPLS
	Echo Request messages in ping and traceroute modes will facilitate
	the validation of Nil FEC on the egress router ensuring the correct 
	destination. It can be employed to
	verify any combination of segments on any path without requiring 
	upgrades to transit nodes.  The code point used for 
	Egress TLV is from the range 32768-65535 and can be silently dropped
	if not recognized as per <xref target="RFC8029"/> and as per clarifications from
	<xref target="RFC9041"/>. Alternately, the un-recognized TLV may be stepped over or
	an error message may be sent. </t>
	<t>If a transit node does not recognize the Egress TLV and chooses to silently 
	drop or step over the Egress TLV,
	headend will continue to send 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 Egress TLV, with 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 Egress TLV is 
	not received.
	</t>
	
	

  </section>

  <section title="Egress TLV" anchor='egress_tlv'>

    <t>
	The Egress TLV MAY be included in an MPLS Echo Request message.
	It is an optional TLV and, if present, MUST appear before the 
	FEC stack TLV in the MPLS Echo Request packet. This TLV can 
	only be used in LSP ping/traceroute requests, generated by 
	the head-end 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 below: 
	</t>

    <figure anchor="pic_egress_tlv" title="Egress TLV">
    <artwork>
    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)                 |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    </artwork>
    </figure>
        <t>Type             : 32771 (<xref target="tlv"/>)</t>
      
        <t>Length           : variable based on IPV4/IPV6 address. 
                              Length excludes the length of the Type and Length
                              fields. Length will be 4 octets for IPv4 and
                              16 octets for IPv6.</t>

        <t>Address          : This field carries a valid IPv4 address of length
                              4 octets or a valid IPv6 address of length 16 octets.
                              It can be obtained from the egress of the path.
                              It corresponds to the last label in the label stack or
                              the SR policy endpoint field
                              <xref target="I.D-ietf-idr-sr-policy-safi"/>.
                              </t>

  </section>


  <section title="Procedure" anchor='detail_procedure'>

    <t>This section describes aspects of LSP ping and traceroute operations that
	require further considerations beyond <xref target="RFC8029"/>.</t>
    <section title="Sending Egress TLV in MPLS Echo Request" anchor='send_procedure'>
  	  <t>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.</t>
	<section title="Ping Mode" anchor='ping_procedure'>
      
        <t>When the sender node constructs an Echo Request with 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 <xref target="I.D-ietf-idr-sr-policy-safi"/>.
		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 
		(Sec 8.8.1 <xref target="RFC9256"/>), the sender MUST use the
		address corresponding to the last segment of the SR Policy
		in the address field for
		Egress TLV. Some specific cases on how to derive the address field
		in the Egress TLV are listed below:</t>
		<t>
		 <list>
		<t>a.	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.</t>
		<t>b.	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.</t>
        </list>
        </t>

        
	</section>
	
	<section title="Traceroute Mode" anchor='traceroute_procedure'>
      
        <t>When the sender node builds an Echo Request with target FEC Stack TLV
		that contains 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 
		<xref target="I.D-ietf-idr-sr-policy-safi"/>.
		</t>
		
		<t>   Although there is no requirement to do so, an implementation MAY
            send multiple Nil FECs if that makes it easier for the
             implementation.
        In case 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.
		In case the endpoint is not specified or is equal to zero 
		(Sec 8.8.1 <xref target="RFC9256"/>), the sender MUST use the address corresponding
		to the last segment endpoint of the SR Policy path i.e. ultimate egress
		as the address for the Egress TLV.
		</t>
	</section>
	<section title="Detailed Example" anchor='detail_example'>
        <figure anchor="example_topology" title="Egress TLV processing on sample topology">
        <artwork>
                  ----R3----
                 /  (1003)  \
      (1001)    /            \(1005)     (1007)
        R1----R2(1002)        R5----R6----R7(address X)
                \            /     (1006)
                 \   (1004) /
                  ----R4----
        </artwork>
        </figure>		
        <t>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.
	    </t>
	    <t>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 4 or 16
		based on the address X's address type.
		</t>
	    <t>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 4 or 16
		based on the address X's address type.
		If the destination/endpoint is set to zero (as in the case of the color-only SR Policy) 
		sender should use the endpoint of segment 1007 (the last segment in the segment list)
		as an address for the Egress TLV.
		
		</t>
		</section>
	   	   
    </section>
    <section title="Receiving Egress TLV in MPLS Echo Request"
	anchor='recv_procedure'>

      <t>Any node that receives the MPLS Echo Request message and processes it,
	  is referred to as the "receiver". In 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
	  for Nil FEC as defined in
	  <xref target="RFC8029"/> in the Target FEC stack TLV Node that receives
	  an MPLS echo request. The presence of Egress TLV does not affect the
	  validation of Target FEC Stack sub-TLV at FEC-stack-depth 
	  if it is different than Nil FEC.</t>
      <t>Additional processing MUST be done for the Egress TLV on 
	  the receiver node as follows:
	  </t>
      <t>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")
	  and Best-return-subcode to Label-stack-depth to report transit switching
	  in MPLS Echo Reply message.</t>
	  <t>2. If the Label-stack-depth is 0 and the Target FEC Stack sub-TLV at
	  FEC-stack-depth is Nil FEC then do the lookup for an exact match of the
	  Egress TLV address field to any of the locally configured interfaces
	  or loopback addresses.</t>
	  <t>       2a. If the Egress TLV address lookup succeeds,
	  set Best-return-code to 36 ("Replying router is an egress for the
	  address in Egress TLV for the FEC at stack depth RSC")
	  (<xref target="ret_code"/>) in MPLS Echo Reply message.</t>
      <t>      2b. 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" </t>
	  <t> 3. In cases where multiple Nil FECs are sent from the SR Policy headend, 
	  one each corresponding to the
	  labels in the label stack along with Egress TLV, when the packet reaches the egress, 
	  the number of labels in the received packet (Size of stack-R) becomes zero or
	  a label with Bottom-of-Stack  bit set to 1 is processed, all Nil FEC
		sub-TLVs MUST be removed and the Egress TLV MUST be validated.
		</t>
      
     </section>
  </section>


  <section anchor='backward_compatibility' title='Backward Compatibility'>
	<t>The extensions defined in this document is backward compatible with
	procedures described in <xref target="RFC8029"/>. A Router that does not
	support Egress TLV, will ignore it and use current the Nil-FEC procedures
	described in <xref target="RFC8029"/>.
	</t>
    <t>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 as 3
	("Replying router is an egress for the FEC at stack-depth") and	Best-return-
	subcode set to stack-depth to will be set in the MPLS Echo Reply message.
	</t>
    <t>When the transit node in the path does not support the extensions defined
	in this document Best-return-code as 8 ("Label switched at stack-depth") and
	Best-return-subcode as Label-stack-depth to report transit switching will be
	set in the MPLS Echo Reply message.
	</t>
  </section>
  <section anchor="iana_con" title="IANA Considerations">
    <t>The code points in section <xref target="tlv"/> and <xref target="ret_code"/>
	have been assigned by <xref target="IANA"/> by early allocation on 2023-10-05
	and 2021-11-08 respectively.
	</t>
    <section anchor="tlv" title="New TLV">
    
	  <t> <xref target="IANA"/> is requested to update the early 
	  allocation for Egress TLV in the 
	  "Multi-Protocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping
	  Parameters" in the "TLVs" sub-registry to reference this
   document when published as an RFC.
	  </t>
	  <texttable anchor="iana_tlvs_tbl" title="TLVs Sub-Registry">
        <ttcol align="left">Value</ttcol>
        <ttcol align="center">Description</ttcol>
        <ttcol align="left">Reference</ttcol>
        <c>32771</c>
        <c>Egress TLV</c>
        <c><xref target="egress_tlv"/> of this document</c>
      </texttable> 
    </section>
    <section anchor="ret_code" title="New Return code">
    
	  <t> <xref target="IANA"/> is requested to update the 
	  early allocation of the Return Code for 
	  "Replying router is an egress for the address in Egress TLV" in the 
	  "Multi-Protocol Label Switching (MPLS) Label Switched Paths (LSPs) Ping
	  Parameters" in the "Return Codes" sub-registry to reference this
   document when published as an RFC.
	  </t>
	  <texttable anchor="iana_return_code_tbl" title="Return code Sub-Registry">
        <ttcol align="left">Value</ttcol>
        <ttcol align="center">Description</ttcol>
        <ttcol align="left">Reference</ttcol>
        <c>36</c>
        <c>Replying router is an egress for the
	  address in Egress TLV for the FEC at stack depth RSC</c>
        <c><xref target="recv_procedure"/> of this document</c>
        </texttable>                                              
    </section>
  </section>
  <section title='Security Considerations' anchor='sec-con'>
    <t>This document defines additional MPLS LSP ping TLVs and follows
	the mechanisms defined in <xref target="RFC8029"/>.
	All the security considerations defined in <xref target="RFC8287"/> will
	be applicable for this document and, in addition, they do not impose any
	additional security challenges to be considered.
	</t>
  </section>
  
  <section title='Implementation Status'>
   <t>This section is to be removed before publishing as an RFC.</t>
  
   <t>RFC-Editor: Please clean up the references cited by this section
   before publication.</t>
   <t>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 <xref target="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.</t>
   <section title='Juniper Networks'>
   <t>Organization: Juniper Networks</t>
   <t>Implementation: JUNOS</t>
   <t>Description: Implementation for sending and validating Egress TLV</t>
   <t>Maturity Level: Released</t>
   <t>Coverage: Full</t>
   <t>Contact: shraddha@juniper.net</t>
   </section>
    </section>
  <section title='Acknowledgements' anchor='ack'>
    <t> The authors would like to thank Stewart Bryant, Greg Mirsky, Alexander Vainshtein,
	Sanga Mitra Rajgopal, and Adrian Farrel for their careful review and comments.</t>
  </section>
</middle>

<back>
  <references title='Normative References'>
  &RFC9041;
  &RFC8402;
  
     <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
       <front>
         <title>Key words for use in RFCs to Indicate Requirement Levels</title>
         <author initials="S." surname="Bradner" fullname="S. Bradner"/>
         <date year="1997" month="March"/>
         <abstract>
           <t>In many standards track documents several words are used to
		   signify the requirements in the specification.  These words are often
		   capitalized. This document defines these words as they should be
		   interpreted in IETF documents.  This document specifies an Internet
		   Best Current Practices for the Internet Community, and requests
		   discussion and suggestions for improvements.</t>
         </abstract>
       </front>
       <seriesInfo name="BCP" value="14"/>
       <seriesInfo name="RFC" value="2119"/>
       <seriesInfo name="DOI" value="10.17487/RFC2119"/>
     </reference>
     <reference anchor="RFC8029" target="https://www.rfc-editor.org/info/rfc8029">
       <front>
         <title>Detecting Multiprotocol Label Switched (MPLS) Data-Plane
		 Failures</title>
         <author initials="K." surname="Kompella" fullname="K. Kompella"/>
         <author initials="G." surname="Swallow" fullname="G. Swallow"/>
         <author initials="C." surname="Pignataro" fullname="C. Pignataro"
		 role="editor"/>
         <author initials="N." surname="Kumar" fullname="N. Kumar"/>
         <author initials="S." surname="Aldrin" fullname="S. Aldrin"/>
         <author initials="M." surname="Chen" fullname="M. Chen"/>
         <date year="2017" month="March"/>
         <abstract>
           <t>This document describes a simple and efficient mechanism to detect
		   data-plane failures in Multiprotocol Label Switching (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.  The MPLS echo request is intended
		   to contain sufficient information to check correct operation of the
		   data plane and to verify the data plane against the control plane,
		   thereby localizing faults.</t>
           <t>This document obsoletes RFCs 4379, 6424, 6829, and 7537,
		   and updates RFC 1122.</t>
         </abstract>
       </front>
       <seriesInfo name="RFC" value="8029"/>
       <seriesInfo name="DOI" value="10.17487/RFC8029"/>
     </reference>
     <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
       <front>
         <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
         <author initials="B." surname="Leiba" fullname="B. Leiba"/>
         <date year="2017" month="May"/>
         <abstract>
           <t>RFC 2119 specifies common key words that may be used in protocol
		   specifications.  This document aims to reduce the ambiguity by
		   clarifying that only UPPERCASE usage of the key words have the
		   defined special meanings.</t>
         </abstract>
       </front>
       <seriesInfo name="BCP" value="14"/>
       <seriesInfo name="RFC" value="8174"/>
       <seriesInfo name="DOI" value="10.17487/RFC8174"/>
     </reference>
     <reference anchor="RFC8287" target="https://www.rfc-editor.org/info/rfc8287">
       <front>
         <title>Label Switched Path (LSP) Ping/Traceroute for Segment Routing
		 (SR) IGP-Prefix and IGP-Adjacency Segment Identifiers (SIDs) with MPLS
		 Data Planes</title>
         <author initials="N." surname="Kumar" fullname="N. Kumar"
		 role="editor"/>
         <author initials="C." surname="Pignataro" fullname="C. Pignataro"
		 role="editor"/>
         <author initials="G." surname="Swallow" fullname="G. Swallow"/>
         <author initials="N." surname="Akiya" fullname="N. Akiya"/>
         <author initials="S." surname="Kini" fullname="S. Kini"/>
         <author initials="M." surname="Chen" fullname="M. Chen"/>
         <date year="2017" month="December"/>
         <abstract>
           <t>A Segment Routing (SR) architecture leverages source routing and
		   tunneling paradigms and can be directly applied to the use of a
		   Multiprotocol Label Switching (MPLS) data plane. A node steers a
		   packet through a controlled set of instructions called "segments" by
		   prepending the packet with an SR header.
		   </t>
           <t>The segment assignment and forwarding semantic nature of SR raises
		   additional considerations for connectivity verification and fault
		   isolation for a Label Switched Path (LSP) within an SR architecture.
		   This document illustrates the problem and defines extensions to
		   perform LSP ping and traceroute for Segment Routing IGP-Prefix and
		   IGP-Adjacency Segment Identifiers (SIDs) with an MPLS data plane.
		   </t>
         </abstract>
       </front>
       <seriesInfo name="RFC" value="8287"/>
       <seriesInfo name="DOI" value="10.17487/RFC8287"/>
     </reference>
     <reference anchor="RFC9256" target="https://www.rfc-editor.org/info/rfc9256">
       <front>
         <title>Segment Routing Policy Architecture</title>
         <author initials="C." surname="Filsfils" fullname="C. Filsfils"/>
         <author initials="K." surname="Talaulikar " fullname="K. Talaulikar"
		 role="editor"/>
         <author initials="A." surname="Bogdanov" fullname="A. Bogdanov"/>
         <author initials="P." surname="Mattes" fullname="P. Mattes"/>
         <author initials="D." surname="Voyer" fullname="D. Voyer"/>
         <date year="2020" month="July"/>
         <abstract>
           <t>Segment Routing (SR) allows a headend node to steer a packet flow
		   along any path. Intermediate per-flow states are eliminated thanks to
		   source routing. The headend node steers a flow into an SR Policy. The
		   header of a packet steered in an SR Policy is augmented with an
		   ordered list of segments associated with that SR Policy.
		   This document details the concepts of SR Policy and steering into an
		   SR Policy.
		   </t>
         </abstract>
       </front>
       <seriesInfo name="RFC" value="9256"/>
       <seriesInfo name="DOI" value="10.17487/RFC9256"/>
     </reference>
	
	 
	 
     
   </references>
   <references title='Informative References'>  
     <reference anchor="IANA" target="http://www.iana.org/assignments/mpls-lsp-ping-parameters">
       <front>
         <title>Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs)
		 Ping Parameters</title>
		 <author fullname="IANA"/>
         <date/>
         <abstract>
           <t></t>
         </abstract>
       </front>
	 </reference>
	 <reference anchor="I.D-ietf-idr-sr-policy-safi" 
	 target="https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr-policy-safi-04">
       <front>
         <title>Advertising Segment Routing Policies in BGP</title>
         <author initials="C." surname="Filsfils" fullname="C. Filsfils"
		 role="editor"/>
         <author initials="S." surname="Previdi" fullname="S. Previdi"
		 role="editor"/>
         <author initials="K." surname="Talaulikar " fullname="K. Talaulikar"/>
         <author initials="P." surname="Mattes" fullname="P. Mattes"/>
         <author initials="E." surname="Rosen" fullname="Eric C. Rosen"/>
         <author initials="D." surname="Jain" fullname="D. Jain"/>
         <author initials="S." surname="Lin" fullname="S. Lin"/>
         <date year="2024" month="April"/>
         <abstract>
           <t>A Segment Routing (SR) Policy is an ordered list of segments
		   (i.e., instructions) that represent a source-routed policy. 
		   An SR Policy consists of one or more candidate paths, each consisting 
		   of one or more segment lists. A headend may be provisioned with candidate
		   paths for an SR Policy via several different mechanisms, e.g., CLI, NETCONF, 
		   PCEP, or BGP.This document specifies how BGP may be used to distribute SR 
		   Policy candidate paths. It introduces a BGP SAFI to advertise a candidate
		   path of a Segment Routing (SR) Policy and defines sub-TLVs for the Tunnel
		   Encapsulation Attribute for signaling information about these candidate
		   paths.This documents updates RFC9012 with extensions to the Color Extended 
		   Community to support additional steering modes over SR Policy.
		   </t>
         </abstract>
       </front>
       <seriesInfo name="" value="draft-ietf-idr-sr-policy-safi-04"/>
       <seriesInfo name="" value="work in progress"/>
     </reference>
	 &RFC7942;
  </references>
</back>
</rfc>
