<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">

<rfc number="8741" consensus="true" xmlns:xi="http://www.w3.org/2001/XInclude"
     category="std" docName="draft-ietf-pce-lsp-control-request-11"
     ipr="trust200902" obsoletes="" updates="" submissionType="IETF"
     xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true"
     sortRefs="true" version="3">

  <!-- xml2rfc v2v3 conversion 2.37.3 -->
  <front>
    <title abbrev="LSP Control Request">
    Ability for a Stateful Path Computation Element (PCE) to Request and
    Obtain Control of a Label Switched Path (LSP)</title> 
    <seriesInfo name="RFC" value="8741"/>
    <author fullname="Aswatnarayan Raghuram" initials="A." surname="Raghuram">
      <organization>AT&amp;T</organization>
      <address>
        <postal>
          <street>200 S Laurel Avenue</street>
          <city>Middletown</city>
          <region>NJ</region>
          <code>07748</code>
          <country>United States of America</country>
        </postal>
        <email>ar2521@att.com</email>
      </address>
    </author>
    <author fullname="Al Goddard" initials="A." surname="Goddard">
      <organization>AT&amp;T</organization>
      <address>
        <postal>
          <street>200 S Laurel Avenue</street>
          <city>Middletown</city>
          <region>NJ</region>
          <code>07748</code>
          <country>United States of America</country>
        </postal>
        <email>ag6941@att.com</email>
      </address>
    </author>
    <author fullname="Jay Karthik" initials="J." surname="Karthik">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>125 High Street</street>
          <city>Boston</city>
          <region>Massachusetts</region>
          <code>02110</code>
          <country>United States of America</country>
        </postal>
        <email>jakarthi@cisco.com</email>
      </address>
    </author>
    <author fullname="Siva Sivabalan" initials="S." surname="Sivabalan">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>2000 Innovation Drive</street>
          <city>Kanata</city>
          <region>Ontario</region>
          <code>K2K 3E8</code>
          <country>Canada</country>
        </postal>
        <email>msiva@cisco.com</email>
      </address>
    </author>
    <author initials="M" surname="Negi" fullname="Mahendra Singh Negi">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>Divyashree Techno Park, Whitefield</street>
          <city>Bangalore</city>
          <region>Karnataka</region>
          <code>560066</code>
          <country>India</country>
        </postal>
        <email>mahend.ietf@gmail.com</email>
      </address>
    </author>
    <date month="March" year="2020"/>
    <workgroup>PCE Working Group</workgroup>

    <abstract>
      <t>A stateful Path Computation Element (PCE) retains information about
      the placement of Multiprotocol Label Switching (MPLS) Traffic
      Engineering Label Switched Paths (TE LSPs). When a PCE has stateful
      control over LSPs, it may send indications to LSP head-ends to modify the
      attributes (especially the paths) of the LSPs. A Path Computation Client
      (PCC) that has set up LSPs under local configuration may delegate
      control of those LSPs to a stateful PCE.</t> 
      <t>There are use cases in which a stateful PCE may wish to obtain
      control of locally configured LSPs that it is aware of but have
      not been delegated to the PCE.</t> 
      <t>This document describes an extension to the Path Computation Element
   Communication Protocol (PCEP) to enable a PCE to make requests for
   such control.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="Introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>"Path Computation Element Communication Protocol (PCEP) Extensions
      for Stateful PCE" 
      <xref target="RFC8231" format="default"/> specifies a set of
      extensions to PCEP <xref target="RFC5440" format="default"/> to enable
      stateful control of Traffic Engineering Label Switched Paths (TE LSPs)
      between and across PCEP sessions in compliance with <xref
      target="RFC4657" format="default"/>. 
It includes mechanisms to
      synchronize LSP state between Path Computation Clients (PCCs) and PCEs,
      delegate control of LSPs to PCEs, and allow PCEs to control the timing and sequence
      of path computations within and across PCEP sessions. The stateful PCEP
      defines the following two useful network operations: 
</t>
      <dl newline="false" indent="13" spacing="normal">
        <dt>Delegation:</dt> 
        <dd>As per <xref target="RFC8051" format="default"/>, an operation to
	grant a PCE temporary rights to modify a 
      subset of LSP parameters on one or more LSPs of a PCC.  LSPs are
      delegated from a PCC to a PCE and are referred to as "delegated"
      LSPs.</dd>
        <dt>Revocation:</dt> 
        <dd>As per <xref target="RFC8231" format="default"/>, an operation
	performed by a PCC on a previously delegated LSP. Revocation revokes
	the rights granted to the PCE in the delegation operation.</dd>
      </dl>
      <t>For redundant stateful PCEs (<xref target="RFC8231"
      sectionFormat="of" section="5.7.4"/>), during a PCE failure, one of the redundant PCEs
      might want to request to take control over an LSP. The redundant PCEs
      may use a local policy or a proprietary election mechanism to decide
      which PCE would take control. In this case, a mechanism is needed for a
      stateful PCE to request control of one or more LSPs from a PCC so that
      a newly elected primary PCE can request to take over control.</t> 
      <t>In case of virtualized PCEs (vPCEs) running in virtual network
      function (VNF) mode, as the computation load in the network increases, a
      new instance of vPCE could be instantiated to balance the current
      load. 
The PCEs could use a proprietary algorithm to decide which LSPs can
      be assigned to the new vPCE. Thus, having a mechanism for the PCE to
      request control of some LSPs is needed.</t> 
      <t>In some deployments, the operator would like to use stateful PCE for
      global optimization algorithms but would still like to keep the control
      of the LSP at the PCC. In such cases, a stateful PCE could request to
      take control during the global optimization and return the delegation
      once done.</t> 
      <t>Note that <xref target="RFC8231" format="default"/> specifies a
      mechanism for a PCC to delegate an orphaned LSP to another PCE. The
      mechanism defined in this document can be used in conjunction with <xref
      target="RFC8231" format="default"/>. Ultimately, it is the PCC that
      decides which PCE to delegate the orphaned LSP to.</t> 

      <t>This specification provides a simple extension that allows a PCE
     to request control of one or more LSPs from any PCC over the stateful
      PCEP session. The procedures for granting and relinquishing control of
      the LSPs are specified in accordance with <xref
      target="RFC8231" format="default"/> unless explicitly set aside in this
      document.</t> 
    </section>
    <!-- Introduction -->
    <section numbered="true" toc="default">
      <name>Terminology</name>
      <t> This document uses the following terms defined in <xref target="RFC5440" format="default"/>:
      </t>

      <dl newline="false" spacing="normal" indent="6">
        <dt>  PCC:</dt>
        <dd>Path Computation Client</dd>
        <dt>  PCE:</dt>
        <dd>Path Computation Element</dd>
        <dt>  PCEP:</dt>
        <dd>Path Computation Element communication Protocol</dd>
      </dl>
      <t>This document uses the following terms defined in <xref target="RFC8231" format="default"/>:
      </t>
      <dl newline="false" spacing="normal" indent="6">
        <dt>  PCRpt:</dt>
        <dd>Path Computation State Report message</dd>
        <dt>  PCUpd:</dt>
        <dd>Path Computation Update Request message</dd>
        <dt>  PLSP-ID:</dt>
        <dd>A PCEP-specific identifier for the LSP</dd>
        <dt>  SRP:</dt>
        <dd>Stateful PCE Request Parameters</dd>
      </dl>
      <t>Readers of this document are expected to have some familiarity with <xref target="RFC8231" format="default"/>.</t>
      <section numbered="true" toc="default">
        <name>Requirements Language</name>
        <t>
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
    NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
    </section>
    <!-- Terminology -->
    <section anchor="LSP-Gain-Flag" numbered="true" toc="default">
      <name>LSP Control Request Flag</name>
      <t>The Stateful PCE Request Parameters (SRP) object is defined in
      <xref target="RFC8231" sectionFormat="of" section="7.2"/> and includes
      a Flags field.</t> 

      <t>A new "LSP Control Request" flag (30), also called the C
      flag, is introduced in the SRP object. In a PCUpd message, a PCE sets
      the C flag to 1 to indicate that it wishes to gain control of LSPs. The
      LSPs are identified by the PLSP-ID in the LSP object following the SRP
      object. A PLSP-ID value other than 0 and 0xFFFFF is used to identify
      the LSP for which the PCE requests control. A PLSP-ID value of 0
      indicates that the PCE is requesting control of all LSPs originating
      from the PCC that it wishes to delegate.  The C flag has no meaning in
      other PCEP messages that carry SRP objects and for which the C flag
      <bcp14>MUST</bcp14> be set to 0 on transmission and <bcp14>MUST</bcp14>
      be ignored on receipt.</t>
      <t>The C flag is ignored in case the R flag <xref target="RFC8281"/> in the SRP object
      is set.</t>
    </section>
    <section anchor="Operation" numbered="true" toc="default">
      <name>Operation</name>
      <t>During normal operation, a PCC that wishes to delegate the control of
      an LSP sets the Delegate (D) flag (<xref target="RFC8231"
      sectionFormat="of" section="7.3"/>) to 1 in all PCRpt messages pertaining to the
      LSP. The PCE confirms the delegation by setting the D flag to 1 in all PCUpd
      messages pertaining to the LSP. The PCC revokes the control of the LSP
      from the PCE by setting the D flag to 0 in PCRpt messages pertaining to the
      LSP. If the PCE wishes to relinquish the control of the LSP, it sets the
      D flag to 0 in all PCUpd messages pertaining to the LSP.</t> 

      <t>If a PCE wishes to gain control over an LSP, it sends a PCUpd message
      with the C flag set to 1 in the SRP object. The LSP for which the PCE requests
      control is identified by the PLSP-ID in the associated LSP object. A
      PLSP-ID value of 0 indicates that the PCE wants control over all LSPs
      originating from the PCC. 
An implementation of this feature needs to make
      sure to check for the LSP control feature (C flag set to 1) before any
      check for PLSP-ID (as per <xref target="RFC8231"
      format="default"/>). The D flag and C flag are mutually exclusive in a
      PCUpd message. The PCE <bcp14>MUST NOT</bcp14> send a control request
      for the LSP that is already delegated to the PCE, i.e., if the D flag is
      set in the PCUpd message, then the C flag <bcp14>MUST NOT</bcp14> be
      set. If a PCC receives a PCUpd message with the D flag set in the LSP object
      (i.e., LSP is already delegated) and
the C flag is also set (i.e., PCE is making a control request), the PCC
<bcp14>MUST</bcp14> ignore the C flag. A PCC can decide to delegate the
control of the LSP at its own discretion. If the PCC grants or denies the
control, it sends a PCRpt message with the D flag set to 1 and 0, respectively, in
accordance with stateful PCEP <xref target="RFC8231" format="default"/>. If
the PCC does not grant the control, it <bcp14>MAY</bcp14> choose to not
respond, and the PCE <bcp14>MAY</bcp14> choose to retry requesting the control,
preferably using an exponentially increasing timer. Note that, if the PCUpd
message with the C flag set is received for a currently non-delegated LSP (for
which the PCE is requesting delegation), this <bcp14>MUST NOT</bcp14> trigger
the error handling as specified in <xref target="RFC8231" format="default"/>
(a PCErr with Error-type=19 (Invalid Operation) and error-value 1 (Attempted
LSP Update Request for a non-delegated 
   LSP)).</t>  
      <t>As per <xref target="RFC8231" format="default"/>, a PCC cannot
      delegate an LSP to more than one PCE at any time. If a PCE requests
      control of an LSP that has already been delegated by the PCC to another
      PCE, the PCC <bcp14>MAY</bcp14> ignore the request or
      <bcp14>MAY</bcp14> revoke 
   the delegation to the first PCE before delegating it to the second. This
      choice is a matter of local policy.</t> 

      <t>
   It should be noted that a legacy implementation of PCC that does not
   support this extension may receive an LSP control request: a PCUpd
   message with the C flag set and the D flag unset. The legacy implementation
   would ignore the C flag and trigger the error condition for the D flag, as
   specified in <xref target="RFC8231" format="default"/> (i.e., a PCErr with
   Error-type=19 (Invalid Operation) and error-value 1 (Attempted LSP Update
   Request for a non-delegated LSP)). Further, in case of a PLSP-ID value of
   0, the error condition, as specified in <xref target="RFC8231"
   format="default"/>, (i.e., a PCErr with Error-type=19 (Invalid Operation)
   and error-value 3 (Attempted LSP Update Request for an LSP identified by an
   unknown PLSP-ID)) would be triggered.</t>
      <t><xref target="RFC8281" format="default"/> describes the setup,
   maintenance, and teardown of PCE-initiated LSPs under the stateful PCE
   model. It also specifies how a PCE may obtain control over an orphaned LSP
   that was PCE-initiated. A PCE implementation can apply the mechanism described
   in this document in conjunction with those in <xref target="RFC8281"
   format="default"/>.</t> 
    </section>
    <section anchor="Security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>The security considerations listed in <xref target="RFC8231"
      format="default"/> and <xref target="RFC8281" format="default"/> 
   apply to this document as well. However, this document also
   introduces a new attack vector. An attacker may flood the PCC with requests
   to delegate all of its LSPs 
   at a rate that exceeds the PCC's ability to process them, either by
   spoofing messages or by compromising the PCE itself.  
   The PCC <bcp14>SHOULD</bcp14> be configured with a threshold rate for the
      delegation requests received from the PCE. If the threshold is reached,
      it is <bcp14>RECOMMENDED</bcp14> to log the issue.</t> 
      <t>A PCC is the ultimate arbiter of delegation. As per <xref
      target="RFC8231" format="default"/>, a local policy at the PCC is used to
      influence the delegation. A PCC can also revoke the delegation at any
      time. A PCC need not blindly trust the control requests and
      <bcp14>SHOULD</bcp14> take local policy and other factors into
      consideration before honoring the request. </t> 
      <t>Note that a PCE may not be sure if a PCC supports this feature. A
      PCE would try sending a control request to a 'legacy' PCC that would
      in turn respond with an error, as described in <xref target="Operation"
      format="default"/>. So, a PCE would learn this fact only when it wants to
      take control over an LSP. A PCE might also be susceptible to downgrade
      attacks by falsifying the error condition.</t> 
      <t>As per <xref target="RFC8231" format="default"/>, it is <bcp14>RECOMMENDED</bcp14>
   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" format="default"/>, as per the recommendations and
   best current practices in 
   BCP 195 <xref target="RFC7525" format="default"/> (unless explicitly
   excluded in <xref target="RFC8253" format="default"/>).  
      </t> 
    </section>
    <section anchor="IANA" numbered="true" toc="default">
      <name>IANA Considerations</name>

        <t>IANA has allocated the following code point in the "SRP Object Flag
        Field" subregistry in the "Path Computation Element Protocol (PCEP)
        Numbers" registry.</t>
        <table align="center">
          <thead>
            <tr>
              <th align="left">Bit</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">30</td>
              <td align="left">LSP Control Request</td>
              <td align="left">RFC 8741</td>
            </tr>
          </tbody>
        </table>
      </section>

    <section toc="default" numbered="true">
      <name>Manageability Considerations</name>
      <t>
  All manageability requirements and considerations listed in <xref
  target="RFC5440" format="default"/>  
  and <xref target="RFC8231" format="default"/> 
  apply to PCEP extensions defined in this document. In addition,
  requirements and considerations listed in this section apply.  
      </t>
      <section toc="default" numbered="true">
        <name>Control of Function and Policy</name>

        <t>
  A PCC implementation <bcp14>SHOULD</bcp14> allow the operator to configure
  the policy rules that specify the conditions under which it honors the
  request to control the LSPs. This includes the handling of the case where an
  LSP control request is received for an LSP that is currently delegated to
  some other PCE. A PCC implementation <bcp14>SHOULD</bcp14> also allow the
  operator to configure the threshold rate for the delegation requests
  received from the PCE. Further, the operator <bcp14>MAY</bcp14> be allowed
  to trigger the LSP control request for a particular LSP at the PCE.  A PCE
  implementation <bcp14>SHOULD</bcp14> also allow the operator to configure an
  exponentially increasing timer to retry the control requests for which the
  PCE did not get a response.
        </t>
      </section>
      <section toc="default" numbered="true">
        <name>Information and Data Models</name>
        <t>The PCEP YANG module <xref target="I-D.ietf-pce-pcep-yang"
	format="default"/> could be extended to include a mechanism to trigger
	the LSP control request.</t> 
      </section>
      <section toc="default" numbered="true">
        <name>Liveness Detection and Monitoring</name>
        <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" format="default"/>.  
        </t>
      </section>
      <section toc="default" numbered="true">
        <name>Verify Correct Operations</name>
        <t>
  Mechanisms defined in this document do not imply any new operation
  verification requirements in addition to those already listed in <xref
  target="RFC5440" format="default"/>  
  and <xref target="RFC8231" format="default"/>. 
        </t>
      </section>
      <section toc="default" numbered="true">
        <name>Requirements on Other Protocols</name>
        <t>Mechanisms defined in this document do not imply any new
	requirements on other protocols.</t> 
      </section>
      <section toc="default" numbered="true">
        <name>Impact on Network Operations</name>
        <t>
  Mechanisms defined in <xref target="RFC5440" format="default"/> 
  and 
  <xref target="RFC8231" format="default"/> also apply to PCEP extensions defined in this document. 
  Further, the mechanism described in this document can help the operator to
	request control of the LSPs at a particular PCE.</t> 
      </section>
    </section>

  </middle>
  <back>

<displayreference target="I-D.ietf-pce-pcep-yang" to="PCEP-YANG"/>

    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5440.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8231.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8281.xml"/>
      </references>
      <references>
        <name>Informative References</name>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4657.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7525.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8051.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8253.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-pce-pcep-yang.xml"/>

      </references>
    </references>
    <section anchor="Acknowledgement" numbered="false" toc="default">
      <name>Acknowledgements</name>
      <t>Thanks to <contact fullname="Jonathan Hardwick"/> for reminding the authors to not use
      suggested values in IANA section.</t> 
      <t>Thanks to <contact fullname="Adrian Farrel"/>, <contact
      fullname="Haomian Zheng"/>, and <contact fullname="Tomonori Takeda"/> for their
      valuable comments.</t> 
      <t>Thanks to <contact fullname="Shawn M. Emery"/> for his Security Directorate review.</t>
      <t>Thanks to <contact fullname="Francesca Palombini"/> for GENART review.</t>
      <t>Thanks to <contact fullname="Benjamin Kaduk"/>, <contact
      fullname="Martin Vigoureux"/>, <contact fullname="Alvaro Retana"/>, and
      <contact fullname="Barry Leiba"/> for IESG reviews.</t> 
    </section>
    <section anchor="contributors" numbered="false">

      <name>Contributors</name>
<t>The following people contributed substantially to the content of this
document and should be considered coauthors:</t>
      <contact fullname="Dhruv Dhody">
       <organization> Huawei Technologies</organization>
       <address>
        <postal>
         <street>Divyashree Techno Park, Whitefield</street>
         <city>Bangalore</city>
         <region>Karnataka</region>
         <code>560066</code>
         <country>India</country>
        </postal>
        <email>dhruv.ietf@gmail.com</email>
       </address>
      </contact>

      <contact fullname="Jon Parker">
       <organization>Cisco Systems, Inc.</organization>
       <address>
        <postal>
         <street>2000 Innovation Drive</street>
         <city>Kanata</city>
         <region>Ontario</region>
         <code>K2K 3E8</code>
         <country>Canada</country>
        </postal>
        <email>jdparker@cisco.com</email>
       </address>
      </contact>

      <contact fullname="Chaitanya Yadlapalli">
       <organization>AT&amp;T</organization>
       <address>
        <postal>
         <street>200 S Laurel Avenue</street>
         <city>Middletown</city>
         <region>NJ</region>
         <code>07748</code>
         <country>United States of America</country>
        </postal>
        <email>cy098@att.com</email>
       </address>
     </contact>
    </section>

  </back>
</rfc>
