<?xml version="1.0" encoding="us-ascii"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"[]>
<?rfc toc="yes" ?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="4"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc rfcedstyle="yes"?>
<?rfc subcompact="no"?>
<?rfc compact="yes" ?>
<?rfc iprnotified="Yes" ?>
<?rfc strict="no" ?>
<rfc ipr="trust200902" category="std" docName="draft-ietf-pce-stateful-pce-optional-01" obsoletes="" updates="8231" submissionType="IETF" xml:lang="en">
  <front>
    <title abbrev="STATEFUL-OPT">Extension for Stateful PCE to allow Optional Processing of PCEP Objects</title>
    <author fullname="Cheng Li" initials="C." surname="Li">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>Huawei Campus, No. 156 Beiqing Rd.</street>
          <city>Beijing</city>
          <region/>
          <code>100095</code>
          <country>China</country>
        </postal>
        <phone/>
        <facsimile/>
        <email>c.l@huawei.com</email>
        <uri/>
      </address>
    </author>
<author fullname="Haomian Zheng" initials="H." surname="Zheng">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>H1, Huawei Xiliu Beipo Village, Songshan Lake</street>
          <city>Dongguan</city>
          <region>Guangdong</region>
          <code>523808</code>
          <country>China</country>
        </postal>
        <phone/>
        <facsimile/>
        <email>zhenghaomian@huawei.com</email>
        <uri/>
      </address>
    </author>
    <author initials="S" surname="Litkowski" fullname="Stephane Litkowski">
      <organization>Cisco</organization>
      <address>
        <postal>
          <street></street>
          <city></city>
          <region></region>
          <code></code>
          <country></country>
        </postal>
        <email>slitkows.ietf@gmail.com</email>
      </address>
    </author>
    <date ></date>
    <area>Routing</area>
    <workgroup>PCE Working Group</workgroup>
    <abstract>
<t>
   This document introduces a mechanism to mark some of the Path Computation Element (PCE) Communication Protocol (PCEP) objects as optional during PCEP messages exchange for the Stateful PCE model to allow relaxing some constraints. This document introduces this relaxation and updates RFC 8231. </t> 
   </abstract>
  </front>
  <middle>
   <section title="Introduction" toc="default">
   <t><xref target="RFC5440"/> describes the Path Computation Element Communication Protocol (PCEP) which enables the communication between a Path Computation Client (PCC) and a Path Control Element (PCE), or between two PCEs based on the PCE architecture <xref target="RFC4655"/>. </t>

   <t>PCEP Extensions for Stateful PCE Model <xref target="RFC8231"/> describes a set of extensions to PCEP to enable active control of Multiprotocol Label Switching Traffic Engineering (MPLS-TE) and Generalzied MPLS (GMPLS) tunnels. <xref target="RFC8281"/> describes the setup and teardown of PCE-initiated LSPs under the active stateful PCE model, without the need for local configuration on the PCC, thus allowing for dynamic control.</t>

   <t><xref target="RFC5440"/> defined the P flag (Processing-Rule) in the Common Object Header to allow a PCC to specify in a Path Computation Request (PCReq) message (sent to a PCE) whether the object must be taken into account by the PCE during path computation or is optional. The I flag (Ignore) is used by the PCE in a Path Computation Reply (PCRep) message to indicate to a PCC whether or not an optional object was considered by the PCE during path computation. Stateful PCE <xref target="RFC8231"/> specified that the P and I flags of the PCEP objects defined in <xref target="RFC8231"/> is to be set to zero on transmission and ignored on receipt, since they are exclusively related to path computation requests. The behavior for P and I flag in other messages defined in <xref target="RFC5440"/> and other extension was not specified. 
   This document clarifies how the P and I flag could be used in the stateful PCE model to identify optional objects in the Path Computation State Report (PCRpt) <xref target="RFC8231"/>, the Path Computation Update Request (PCUpd) <xref target="RFC8231"/>, and the LSP Initiate Request (PCInitiate) <xref target="RFC8281"/> message.</t>

   <t>This document updates <xref target="RFC8231"/> with respect to usage of the P and I flag as well as the handling of unknown objects in the stateful PCEP message exchange.</t>
   
    <section title="Requirements Language" toc="default">
         <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>
   <!--
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
        "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
        "OPTIONAL" in this document are to be interpreted as described
        in <xref target="RFC2119"/>.</t>-->
      </section>
    </section>

    <section title="Overview" toc="default">
    <t><xref target="RFC5440"/> describes the handling of unknown objects as per the setting of the P flag for the PCReq message. 
    Further, <xref target="RFC8231"/> defined the usage of the LSP Error Code TLV in the PCRpt message in response to failed LSP Update Request
    via the PCUpd message (for example, due to an unsupported object/TLV).</t>
    <t>This document clarifies the procedure of marking some objects as 'optional to be processed' by the PCEP peer in the stateful PCEP messages. Furthermore, this document updates the procedure for handling unknown objects in the stateful PCEP messages based on the P flag.</t>  
    <section title="Usage Example" toc="default">
    <t>The PCRpt message is used to report the current state of an LSP. As part of the message both the &lt;intended-attribute-list&gt; and &lt;actual-attribute-list&gt; is encoded (see <xref target="RFC8231"/>). 
      For example, the &lt;intended-attribute-list&gt; could include the METRIC object to indicate a limiting constraint (B flag set) for the Path Delay Variation metric <xref target="RFC8233"/>. In some scenarios, it would be useful to state that this limiting constraint can be relaxed by the PCE in case it cannot find a path. Similarly in the case of an association group <xref target='RFC8697'/> such as Disjoint Association <xref target="RFC8800"/>, the PCE may need to completely relax the  
        disjointness constraint in order to provide a path to all the LSPs that are part of the association. In these case it would be useful to mark the objects as 'optional' and it could be ignored by the PCEP peer. Also, it would be useful for the PCEP speaker to learn if the PCEP peer has relaxed the constraint and ignored the processing of the PCEP object.</t>  

     <t>Thus, this document simply clarifies, how the already existing P and I flag in the PCEP common object header could be used during the stateful PCEP message exchange. Further it should be noted that similar to handling of P and I flag in <xref target="RFC5440"/>, the flag is applicable to full PCEP Object and could not be applied to the granularity of an optional TLV encoded in the PCEP Object.</t>   
    </section>
    </section>
    
<section title="PCEP Extension" toc="default">
  <section title="STATEFUL-PCE-CAPABILITY TLV" toc="default">
  <t>A PCEP speaker indicates its ability to support the handling of the P and I flag in the stateful PCEP message exchange during the PCEP initialization phase, as follows. 
    When the PCEP session is established, a PCC sends an Open message with an OPEN object that
   contains the STATEFUL-PCE-CAPABILITY TLV, as defined in <xref target="RFC8231"/>.  A
   new flag, the R (RELAX) flag, is added in
   this TLV to indicate the support for relaxing the processing of some objects via the use of the P and I flag in the PCEP common object header.</t>
   <t>R (RELAX bit - TBD1): If set to 1 by a PCEP Speaker, the R flag indicates that the PCEP Speaker is willing to send and receive PCEP objects with the P and I flags in the PCEP common object header for the stateful PCE messages. In case the bit is unset, it indicates that the PCEP Speaker would not handle the P and I flags in the PCEP common object header for stateful PCE messages.</t>
   <t>The R flag MUST be set by both a PCC and a PCE to indicate support for the handling of the P and I flag in the PCEP common object header to allow relaxing some constraints by marking objects as optional to process. If the PCEP speaker did not set the R flag but receives PCEP objects with P or I bit set, it MUST behave as per the processing rule in <xref target="RFC8231"/> i.e., the bits are simply ignored.</t>

</section>
  <section title="Handling of P flag" toc="default">
    <section title="The PCRpt Message" toc="default">
      <t>The P flag in the PCRpt message <xref target="RFC8231"/> allows a PCC to specify
      to a PCE whether the object must be taken
      into account by the PCE (during path computation, re-optimization, or state maintenance) or is 
      optional o process.  When the P flag is set in the PCRpt message received on a PCEP session on which R bit was set by both peers, the object MUST be taken into
      account by the PCE.  Conversely, when the P flag is cleared, the
      object is optional and the PCE is free to ignore it. The P flag for the
      mandatory objects such as the LSP and the ERO object (intended path) MUST be set in the 
      PCRpt message. If a mandatory object is
   received with the P flag set incorrectly according to the rules
   stated above, the receiving peer MUST send a PCErr message with
   Error-Type=10 (Reception of an invalid object) and Error-value=1 
   (reception of an object with P flag not set). On a PCEP session on which R bit was set by both peers, the PCC 
   SHOULD set the P flag by default, unless a local configuration or local policy 
   indicates that some constraints (corresponding PCEP objects) can be
   marked as optional and could be ignored by the PCE.</t>
    </section>
    <section title="The PCUpd Message and the PCInitiate Message" toc="default">
      <t>The P flag in the PCUpd message <xref target="RFC8231"/> and the PCInitiate message <xref target="RFC8281"/> allows a PCE to specify
      to a PCC whether the object must be taken
      into account by the PCC (during path setup) or is
      optional to process.  When the P flag is set in the PCUpd/PCInitiate message received on a PCEP session on which R bit was set by both peers, the object MUST be taken into
      account by the PCC.  Conversely, when the P flag is cleared, the
      object is optional and the PCC is free to ignore it. The P flag for the
      mandatory objects such as the SRP, the LSP and the ERO MUST be set in the 
      PCUpd/PCInitiate message. If a mandatory object is
   received with the P flag set incorrectly according to the rules
   stated above, the receiving peer MUST send a PCErr message with
   Error-Type=10 (Reception of an invalid object) and Error-value=1 
   (reception of an object with P flag not set). By default, the PCE 
   SHOULD set the P flag, unless a local configuration or local policy 
   indicates that some constraints (corresponding PCEP objects) can be
   marked as optional and could be ignored by the PCC.</t>
    </section>
  </section>  
  <section title="Handling of I flag" toc="default">
  <section title="The PCUpd Message" toc="default">
       <t>The I flag in the PCUpd message <xref target="RFC8231"/> allows a PCE to 
       indicate to a PCC whether or not an optional object was
      processed.  The PCE MAY include the ignored optional object in its
      update request and set the I flag to indicate that the optional object was
      ignored.  When the I flag is cleared, the
      PCE indicates that the optional object was processed. </t>
      <t>Note that when a PCE is unable to find the path that meets all the constraints as per the PCEP Object that cannot be ignored (i.e. P flag is set), the PCUpd message MAY optionally include the PCEP Objects that caused the path computation to fail along with the LSP-ERROR-CODE TLV indicating the reason
   for the failure.</t>
  </section>    
  <section title="The PCRpt Message" toc="default">
   <t>The I flag in the PCRpt message <xref target="RFC8231"/> allows a PCC to 
      indicate to a PCE whether or not an optional object was
      processed in response to an LSP Update Request (PCUpd) or LSP Initiate Request (PCInitiate).  The PCC MAY include the ignored optional object in its
      report and set the I flag to indicate that the optional object was
      ignored at PCC.  When the I flag is cleared, the
      PCC indicates that the optional object was processed. 
      The I flag has no meaning if the PCRpt message is not in response to a 
      PCUpd or PCInitiate message (i.e. without the SRP object in the PCRpt message).
      </t>
            <t>Note that when a PCC is unable to setup the path that meets all the parameters as per the PCEP Object that cannot be ignored (i.e. P flag is set), the PCRpt message MAY optionally include the PCEP Objects that caused the path setup to fail along with the empty ERO.</t>
    </section>
    <section title="The PCInitiate Message" toc="default">
      <t>The I flag has no meaning in the PCinitiate message <xref target="RFC8281"/> and is ignored.</t>
    </section>
</section>
<section title="Delegation" toc="default">
<t>Delegation is an operation to grant a PCE temporary rights to modify a
      subset of parameters on one or more LSPs by a PCC as described in
      <xref target="RFC8051"/>. Note that 
      for the delegated LSPs, the PCE can update and mark some objects as
      ignored even when the PCC had set the P flag during delegation. Similarly, the PCE can update and mark some object as a must to process even when the PCC had not set the P flag during delegation.</t>
      <t>The PCC MUST acknowledge this by sending the PCRpt message with the P flag set as per the PCE expectation for the corresponding object. In case PCC cannot accept this, it would react as per the processing rules of unacceptable update in <xref target="RFC8231"/>.</t>

      </section>
<section title="Unknown Object Handling" toc="default">
  <t>This document updates the handling of unknown objects in the stateful PCEP messages as per the setting of the P flag in the common object header in a similar way as <xref target="RFC5440"/>, i.e. if a PCEP speaker does not understand an object with the P flag set or
   understands the object but decides to ignore the object, the entire
   stateful PCEP message MUST be rejected and the PCE MUST send a PCErr message
   with Error-Type="Unknown Object" or "Not supported Object" <xref target="RFC5440"/>. In case the P flag is not set, the PCEP speaker is free to ignore the object and continue with message processing as defined. </t>
   <t><xref target="RFC8231"/> defined LSP Error Code TLV to be carried in PCRpt message in the LSP object
   to convey error information. This document does not change that procedure. </t>
  </section>
</section>

    <section title="Security Considerations" toc="default">
      <t>This document clarifies how the already existing P and I flag in PCEP common object header could be used during stateful PCEP exchanges. It updates the
        unknown object error handling in stateful PCEP message exchange. These changes on their own do not add any new security concerns. The security considerations identified in <xref target="RFC5440"/>, <xref target="RFC8231"/>, and <xref target="RFC8281"/> continue to apply.</t>

      <t>As per <xref target="RFC8231"/>, it is RECOMMENDED that these PCEP extensions
      only be activated on authenticated and encrypted sessions across
      PCEs and PCCs belonging to the same administrative authority,
      using Transport Layer Security (TLS) <xref target="RFC8253"/> as per the
      recommendations and best current practices in <xref target="RFC7525"/> (unless
      explicitly set aside in <xref target="RFC8253"/>).</t>

      
    </section>

    <section title="IANA Considerations" toc="default">
    <section title="STATEFUL-PCE-CAPABILITY TLV" toc="default">
      <t></t>
      <t><xref target="RFC8231"/> defines the STATEFUL-PCE-CAPABILITY TLV; per that RFC, IANA
   created a "STATEFUL-PCE-CAPABILITY TLV Flag Field" subregistry to manage the value of the STATEFUL-PCE-CAPABILITY
   TLV's Flag field.  IANA is requested to allocate a new bit in the subregistry, as follows:</t>
<t>
 <figure title="" suppress-title="false" align="left" alt="" width="" height="">
   <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
Bit       Description                 Reference
-------------------------------------------------
TBD1      RELAX bit                   [This-I.D.]
]]></artwork>
        </figure>
      </t>   
    </section>
    </section>
<section title="Manageability Considerations" toc="default">
      <section title="Control of Function and Policy" toc="default">
        <t>
   An operator MUST be allowed to configure the capability to support relaxation of constraints in the stateful PCEP message exchange. They SHOULD also allow configuration of related LSP constraints (or parameters) that are optional to process. </t>
      </section>
      <section title="Information and Data Models" toc="default">
        <t>An implementation SHOULD allow the operator to view the capability defined in this document.   To serve this purpose, the PCEP YANG module <xref target="I-D.ietf-pce-pcep-yang"/> could be extended in the future. </t> 
      </section>
      <section title="Liveness Detection and Monitoring" toc="default">
        <t>Mechanisms defined in this document do not imply any new liveness detection
        and monitoring requirements in addition to those already listed in
        <xref target="RFC5440"/>.</t>
      </section>
      <section title="Verify Correct Operations" toc="default">
        <t>Mechanisms defined in this document do not imply any new operation
        verification requirements in addition to those already listed in
        <xref target="RFC5440"/>.</t>
      </section>
      <section title="Requirements On Other Protocols" toc="default">
        <t>Mechanisms defined in this document do not imply any new requirements
        on other protocols.</t>
      </section>
      <section title="Impact On Network Operations" toc="default">
        <t>Mechanisms defined in this document do not have any impact on
        network operations in addition to those already listed in
        <xref target="RFC5440"/>.</t>
      </section>
    </section>
    <section title="Acknowledgments" toc="default">
    <t>Thanks to Jonathan Hardwick for discussion and suggestions around this draft.</t>  
    <t>Thanks to Oscar Gonzalez de Dios and Mike Koldychev for the review comments.</t>
    </section>
  </middle>
  <back>
    <references title="Normative References">
    <?rfc include="reference.RFC.2119.xml" ?>
    
    <?rfc include="reference.RFC.5440.xml" ?>
    <?rfc include="reference.RFC.8174.xml" ?>
    <?rfc include="reference.RFC.8231.xml" ?>
    
    
    </references>
    <references title="Informative References">
     <?rfc include="reference.RFC.4655.xml" ?>
     <?rfc include="reference.RFC.7525.xml" ?>
     <?rfc include="reference.RFC.8051.xml"?>
     <?rfc include="reference.RFC.8233.xml"?>
     <?rfc include="reference.RFC.8253.xml"?>
     <?rfc include="reference.RFC.8281.xml"?>
     <?rfc include="reference.RFC.8697.xml"?>
     
     
     <?rfc include="reference.RFC.8800.xml"?>

     <?rfc include="reference.I-D.ietf-pce-pcep-yang"?>
     
     


    </references>
    <section title="Contributors" toc="default">
    <t><figure><artwork>
Dhruv Dhody
Huawei Technologies
Divyashree Techno Park, Whitefield
Bangalore, Karnataka  560066
India

Email: dhruv.ietf@gmail.com      
    </artwork></figure></t>
    </section>
  </back>
</rfc>
