<?xml version='1.0' encoding='US-ASCII'?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc comments="yes"?>
<?rfc compact="yes"?>
<?rfc inline="yes"?>
<?rfc sortrefs="yes"?>
<?rfc subcompact="no"?>
<?rfc symrefs="yes"?>
<?rfc toc="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc tocompact="yes"?>
<rfc category="std" docName="draft-chen-pce-sr-mpls-sid-verification-12"
     ipr="trust200902">
  <front>
 <title abbrev="SID Verification for SR-MPLS">Path Computation Element Communication Protocol (PCEP) Extensions for SID verification for SR-MPLS</title>

       <author fullname="Ran Chen" initials="R." surname="Chen">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city>Nanjing</city>
          <region/>
          <code/>
          <country>China</country>
        </postal>
        <email>chen.ran@zte.com.cn</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
    
       <author fullname="Samuel Sidor" initials="S." surname="Sidor">
      <organization>Cisco Systems</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city></city>
          <region/>
          <code/>
          <country></country>
        </postal>
        <email>ssidor@cisco.com</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
    
       <author fullname="Chun Zhu" initials="C." surname="Zhu">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city>Nanjing</city>
          <region/>
          <code/>
          <country>China</country>
        </postal>
        <email>zhu.chun1@zte.com.cn</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
    
    <author fullname="Zoey Rose" initials="Z." surname="Rose">
      <organization>Cisco Systems</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city></city>
          <region/>
          <code/>
          <country></country>
        </postal>
        <email>atokar@cisco.com</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
    
        <author fullname="Mike Koldychev" initials="M." surname="Koldychev">
      <organization>Ciena Corporation</organization>
      <address>
        <postal>
          <street/>
          <!-- Reorder these if your country does things differently -->

         <city></city>
          <region/>
          <code/>
          <country></country>
        </postal>
        <email>mkoldych@ciena.com</email>
        <!-- uri and facsimile elements may also be added -->
     </address>
    </author>
        
    <date/>
    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
        in the current day for you. If only the current year is specified, xml2rfc will fill 
     in the current day and month for you. If the year is not the current one, it is 
     necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
     purpose of calculating the expiry date).  With drafts it is normally sufficient to 
     specify just the year. -->

   <!-- Meta-data Declarations -->

   <area>Routing</area>
    <workgroup>PCE</workgroup>
    <!-- WG name at the upperleft corner of the doc,
        IETF is fine for individual submissions.  
     If this element is not present, the default is "Network Working Group",
        which is used by the RFC Editor as a nod to the history of the IETF. -->

   <keyword>Internet Draft</keyword>
    <!-- Keywords will be incorporated into HTML output
        files in a meta tag but they have no effect on text or nroff
        output. If you submit your draft to the RFC Editor, the
        keywords will be used for the search engine. -->

   <abstract>
      <t>This document defines extensions to the Path Computation Element Communication Protocol (PCEP) to support SID verification in Segment Routing MPLS (SR-MPLS) networks. Specifically, it introduces a flag in the SR-ERO subobject to indicate that the Path Computation Client (PCC) is explicitly requested to verify SID(s) by the Path Computation Element (PCE), and defines capability exchange mechanisms.</t>
    </abstract>
  </front>
  <middle>
    <section title="Introduction">
    <t><xref target="RFC9256"></xref> describes the "SID verification" bit usage and semantics for Segment Routing Policies. SID verification is performed when the headend is explicitly requested to verify SID(s) by the controller via the signaling protocol used. Implementations MAY provide a local configuration option to enable verification on a global, per-policy, or per candidate path basis.</t>
    <t><xref target="RFC8664"></xref> specifies extensions to the Path Computation Element Communication Protocol (PCEP) that allow a stateful PCE to compute and initiate Traffic-Engineering (TE) paths, as well as a Path Computation Client (PCC) to request a path subject to certain constraints and optimization criteria in SR networks. <xref target="RFC9603"></xref> defines similar SID verification extensions for SRv6-ERO subobjects.</t>
    <t>This document specifies PCEP extensions to support the SID verification feature in SR-MPLS networks. It defines a Verification (V) flag in the SR-ERO subobject to enable the PCE to explicitly request SID verification from the PCC. Additionally, it introduces capability exchange mechanisms and detailed processing procedures for SID verification in both PCE-initiated and PCC-initiated LSP scenarios.</t>
    <section numbered="true" toc="default">
        <name>Requirements Language</name>
        <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" format="default"></xref> <xref target="RFC8174" format="default"></xref> when, and only when, they appear in all capitals, as shown here.</t>
      </section>
      <section numbered="true" toc="default">
        <name>Terminology</name>
        <t>This document uses the following terms defined in <xref target="RFC5440"></xref>:</t>
        <ul spacing="normal">
          <li>PCC: Path Computation Client</li>
          <li>PCE: Path Computation Element</li>
          <li>PCEP: Path Computation Element Communication Protocol</li>
        </ul>
        <t>This document uses the following terms defined in <xref target="RFC8664"></xref>:</t>
        <ul spacing="normal">
          <li>ERO: Explicit Route Object</li>
          <li>RRO: Record Route Object</li>
          <li>SR-ERO: Segment Routing Explicit Route Object subobject</li>
          <li>SR-RRO: Segment Routing Record Route Object subobject</li>
          <li>SID: Segment Identifier</li>
          <li>NAI: Network Access Identifier</li>
        </ul>
        <t>This document uses the following terms defined in <xref target="RFC9256"></xref>:</t>
        <ul spacing="normal">
          <li>Segment Routing Policy: An ordered list of segments (SIDs) that define a source-routed path through a network</li>
          <li>SID Verification: The procedure of verifying that a Segment Identifier can be correctly resolved and programmed at the headend</li>
        </ul>
      </section> 
    </section>
      <section title="SID verification flag(V-Flag)">
	  <section title="V-Flag in SR-ERO Subobject">
      <t>Section 4.3.1 in <xref target="RFC8664"></xref> describes the SR-ERO subobject format to carry a Segment Identifier (SID) and/or Network Access Identifier (NAI) information. This document defines a new flag in the SR-ERO subobject Flags field to request SID verification.</t>
      <t>V (Verification) Flag (1 bit): When set to 1, the V-flag indicates that the PCE is explicitly requesting the PCC to verify the SID(s) associated with this SR-ERO subobject. The PCC MUST verify SID(s) according to the procedures defined in Section 5.1 of <xref target="RFC9256"></xref>. When set to 0, the V-flag indicates that SID verification is not explicitly requested by the PCE (though local policy on the PCC MAY still trigger verification).</t>
      <t>The V-flag is applicable to both PCE-initiated LSPs (via PCUpd or PCInitiate messages) and PCC-initiated LSPs (via PCReq or PCRpt messages). The interpretation of the V-flag differs depending on direction:</t>
      <ul spacing="normal">
        <li>When set by the PCE in PCUpd or PCInitiate messages: The V-flag is a request to the PCC to verify the specified SID(s).</li>
        <li>When present in PCRpt messages sent by the PCC: The V-flag indicates that SID verification was requested (either via explicit PCE request or due to local policy). If the LSP is in the operational up state and the V-flag is set, this indicates that verification was completed successfully. If the LSP is not in the operational up state or if an LSP-ERROR-CODE is present indicating verification failure, the V-flag reflects that verification was requested but failed. The PCC SHOULD set the V-flag in PCRpt if it received a PCUpd/PCInitiate with V-flag set, or if it is performing verification based on local policy.</li>
      </ul>
        </section>
		
		<section title="V-Flag in SR-RRO Subobject">
        <t>The SR-RRO subobject format is the same as the SR-ERO subobject, except it lacks the L-Flag, per <xref target="RFC8664"></xref>.</t>
        <t>The V-flag has no meaning in the SR-RRO and is ignored on receipt at the PCE, consistent with the treatment of the V-flag in SRv6-RRO as specified in <xref target="RFC9603"></xref>.</t>
        </section>
		<section title="SID verification Processing">
        <t>On receiving an SR-ERO subobject with the V-flag set to 1, a PCC MUST verify the SID(s) as described in Section 5.1 of <xref target="RFC9256"></xref>. The verification procedure is performed during path setup and before the LSP is activated.</t>
        <t>If a PCC successfully verifies the SID(s) with the V-flag set in an SR-ERO subobject, it proceeds with LSP setup. The successful transition to operational up state indicates that verification was completed successfully.</t>
        <t>If a PCC determines that "Verification fails" for a SID with the V-flag set in an SR-ERO subobject, the PCC MUST report this error by including an LSP-ERROR-CODE TLV with error-value "SID Verification fails" (as defined in <xref target="RFC9256"></xref>) in the LSP object within a PCRpt message sent to the PCE. The LSP MUST NOT be activated when SID verification fails.</t>
        <t>For PCC-initiated LSPs, if a PCC is performing verification without explicit PCE request (due to local policy), and verification fails, the PCC SHOULD report the failure via LSP-ERROR-CODE to inform the PCE of the verification failure.</t>
        </section>
      </section>
   <section title="Capability Exchange">
      <t>In order to ensure compatibility between PCE and PCC regarding SID verification support, PCEP speakers MUST advertise their support for the V-flag via capability exchange during session establishment.</t>
      <section title="SR-PCE-CAPABILITY Sub-TLV">
      <t>The SR-PCE-CAPABILITY Sub-TLV is defined in <xref target="RFC8664"></xref> Section 4.1.2 and is included in the PATH-SETUP-TYPE-CAPABILITY TLV.</t>
      <t>This document defines a new flag in the SR-PCE-CAPABILITY Sub-TLV Flags field:</t>
      <ul spacing="normal">
        <li>V (SID Verification Capability) - bit TBD: If set to 1, a PCEP speaker indicates support for the V-flag in the SR-ERO subobject defined in <xref target="RFC8664"></xref> for LSPs setup using Path Setup Type 1 (Segment Routing). This flag indicates that the PCEP speaker is capable of handling SID verification requests and responses. If this flag is set to 0, the other PCEP speaker MUST NOT set the V-flag in SR-ERO subobjects.</li>
      </ul>
      <t>A PCE MUST NOT set the V-flag in PCUpd or PCInitiate messages unless it has received a PCOpen message from the PCC with the V flag set in the SR-PCE-CAPABILITY Sub-TLV. Similarly, a PCC MUST NOT include the V-flag in RRO subobjects of PCRpt messages unless it has advertised support via the V flag in its SR-PCE-CAPABILITY Sub-TLV.</t>
      <t>If a PCEP speaker receives a PCEP message with the V-flag set in an SR-ERO subobject, but the sender has not advertised support for the V-flag in its SR-PCE-CAPABILITY Sub-TLV, the receiver MUST send a PCErr message with Error-Type 19 (Invalid Operation) and Error-Value TBD (SID Verification capability not supported). The LSP MUST NOT be created or modified.</t>
      </section>
   </section>
   <section anchor="ack" title="Acknowledgements">
      <t>We would like to thank Dhruv Dhody and John Scudder for their useful comments and suggestions.</t>
    </section>
    <!-- Possibly a '  ' section ... -->
    <section anchor="IANA" title="IANA Considerations">
	<section title="SR-ERO Subobject Flags">
     <t>This document defines a new bit value in the sub-registry "SR-ERO Flag Field" in the "Path Computation Element Protocol (PCEP) Numbers" registry.</t>
        <artwork align="center" type="" alt="">
    <![CDATA[       
    Bit     Name                         Reference
    ---     -----------------------      -------------
    TBD     SID Verification (V)         This document     
            ]]></artwork>
      </section>
      <section title="SR-PCE-CAPABILITY Sub-TLV Flags">
     <t>This document defines a new bit value in the sub-registry "SR-PCE-CAPABILITY Sub-TLV Flags Field" in the "Path Computation Element Protocol (PCEP) Numbers" registry.</t>
        <artwork align="center" type="" alt="">
    <![CDATA[       
    Bit     Name                         Reference
    ---     -----------------------      -------------
    TBD     SID Verification (V)         This document     
            ]]></artwork>
      </section>
      <section title="PCEP-Error Object">
     <t>This document defines a new Error-Value for Error-Type 19 (Invalid Operation) in the "PCEP-Error Object" registry.</t>
        <artwork align="center" type="" alt="">
    <![CDATA[       
    Error-Type  Error-Value  Meaning                    Reference
    -----------  -----------  ----------------------    ----------
    19           TBD          SID Verification          This document
                              capability not supported
            ]]></artwork>
      </section>      
    </section>  
    
    <section title="Security Considerations">
      <t>The security considerations described in <xref target="RFC5440"></xref>, <xref target="RFC8231"></xref>, <xref target="RFC8281"></xref>, and <xref target="RFC8664"></xref> are applicable to this specification. No additional security measures are required.</t>
    </section>
  </middle>
  <!--  *****BACK MATTER ***** -->

 <back>
    <!-- References split into informative and normative -->

   <!-- There are 2 ways to insert reference entries from the citation libraries:
    1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
    2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
       (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

    Both are cited textually in the same manner: by using xref elements.
    If you use the PI option, xml2rfc will, by default, try to find included files in the same
    directory as the including file. You can also define the XML_LIBRARY environment variable
    with a value containing a set of directories to search.  These can be either in the local
    filing system or remote ones accessed by http (http://domain/dir/... ).-->
 <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>
      <?rfc include="reference.RFC.5440"?>
      <?rfc include="reference.RFC.8174"?>
      <?rfc include="reference.RFC.8231"?>
      <?rfc include="reference.RFC.8281"?>
      <?rfc include="reference.RFC.8664"?>
      <?rfc include="reference.RFC.9256"?>
      <?rfc include="reference.RFC.9603"?>
    </references>
       
    <!-- Change Log

v00 2006-03-15  EBD   Initial version

v01 2006-04-03  EBD   Moved PI location back to position 1 -
                     v3.1 of XMLmind is better with them at this location.
v02 2007-03-07  AH    removed extraneous nested_list attribute,
                     other minor corrections
v03 2007-03-09  EBD   Added comments on null IANA sections and fixed heading capitalization.
                     Modified comments around figure to reflect non-implementation of
                     figure indent control.  Put in reference using anchor="DOMINATION".
                     Fixed up the date specification comments to reflect current truth.
v04 2007-03-09 AH     Major changes: shortened discussion of PIs,
                     added discussion of rfc include.
v05 2007-03-10 EBD    Added preamble to C program example to tell about ABNF and alternative 
                     images. Removed meta-characters from comments (causes problems).

v06 2010-04-01 TT     Changed ipr attribute values to latest ones. Changed date to
                     year only, to be consistent with the comments. Updated the 
                     IANA guidelines reference from the I-D to the finished RFC.
v07 2020-01-21 HL    Converted the template to use XML schema version 3.
    -->
 </back>
</rfc>
