<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?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 docName="draft-sidor-pce-lsp-state-reporting-extensions-05" ipr="trust200902" submissionType="IETF" category="std">
  <front>
    <title abbrev="STATE-REPORTING-EXTENSIONS">LSP State Reporting Extensions in Path Computation Element Communication Protocol (PCEP)</title>
    <author fullname="Samuel Sidor" initials="S." surname="Sidor">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Eurovea Central 3</street>
          <street>Pribinova 10</street>
          <city>Bratislava</city>
          <code>811 09</code>
          <country>Slovakia</country>
        </postal>
        <email>ssidor@cisco.com</email>
      </address>
    </author>
    <author fullname="Zafar Ali" initials="Z." surname="Ali">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <email>zali@cisco.com</email>
      </address>
    </author>
    <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>
        <email>c.l@huawei.com</email>
      </address>
    </author>
    <author fullname="Mike Koldychev" initials="M." surname="Koldychev">
      <organization>Ciena Corporation</organization>
      <address>
        <postal>
          <street>385 Terry Fox Dr.</street>
          <city>Kanata</city>
          <region>Ontario</region>
          <code>K2K 0L1</code>
          <country>Canada</country>
        </postal>
        <email>mkoldych@proton.me</email>
      </address>
    </author>
    <author fullname="Andrew Stone" initials="A." surname="Stone">
      <organization>Nokia</organization>
      <address>
        <email>andrew.stone@nokia.com</email>
     </address>
    </author>
    <date/>
    <area>Routing</area>
    <workgroup>PCE Working Group</workgroup>
    <abstract>
      <t>
        The Path Computation Element Communication Protocol (PCEP) is defined in multiple RFCs for enabling communication between Path Computation Elements (PCEs) and Path Computation Clients (PCCs).
      </t>
      <t>
        Although PCEP defines various Label Switched Path (LSP) identifiers, attributes, and constraints, there are operational attributes available on the PCC that can enhance path computation and improve the debugging experience, which are not currently supported in PCEP.
      </t>
      <t>
        This document proposes extensions to PCEP to include:
      </t>
      <t>
        <ul spacing="compact">
          <li>Support for explicit or dynamic path types</li>
          <li>Mechanisms to mark LSPs as eligible for use as transit LSPs</li>
        </ul>
      </t>
      <t>
        These extensions aim to address the existing gaps, enhancing the overall functionality and operational efficiency of PCEP.
      </t>
    </abstract>
  </front>
  <middle>
    <section title="Introduction">
      <t>
        A Stateful Path Computation Element (PCE) maintains comprehensive information on the current network state, including computed Label Switched Paths (LSPs), reserved network resources, and the pending path computation requests. This information is critical for computing paths for traffic-engineering LSPs and any associated or dependent LSPs.
      </t>
      <t>
        This document introduces the ability to encode information regarding whether a path included in an Explicit Route Object (ERO) was specified explicitly or it is the result of dynamic path computation executed by a PCE or PCC. Such information can help in debuggability and can be used by other PCEs in the network to avoid triggering unnecessary path computations for LSPs where it is not intended (e.g., PCE-initiated LSPs with explicit path).
      </t>
      <t>
        Additionally, this document specifies a set of extensions to PCEP to enhance the accuracy of path computations by considering LSP transit eligibility, for example as described in case of LSP stitching in <xref target="I-D.ietf-pce-stateful-interdomain"/>.
      </t>
      <t>
        The mechanisms described in this document are applicable to all path setup types.
      </t>
      <section anchor="Language" 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> <xref target="RFC8174"></xref> when,
      and only when, they appear in all capitals, as shown here.</t>
    </section>
    </section>
    <section title="Terminology">
      <t>The following terminologies are used in this document:
        <ul spacing="compact">
          <li>ERO: Explicit Route Object.</li>
          <li>PCE: Path Computation Element.</li>
          <li>PCEP: Path Computation Element Protocol.</li>
          <li>LSP: Label Switched Path.</li>
        </ul>
      </t>
    </section>
    <section title="Object Formats">
      <section anchor="STATEFUL-PCE-CAPABILITY" title="STATEFUL-PCE-CAPABILITY TLV">
        <t>
          A new flag is proposed for the STATEFUL-PCE-CAPABILITY TLV, originally defined in <xref format="default" section="5.4" sectionFormat="of" target="RFC8231"/>.
        </t>
        <t>
          <ul spacing="compact">
            <li>T (TRANSIT-ELIGIBLE-CAPABILITY): If set, indicates that the PCEP peer supports the advertisement of the Transit Eligible flag in the LSP-EXTENDED-FLAG as described in <xref target="LSP-Eligibility"/>.</li>
            <li>X (EXPLICIT-PATH-CAPABILITY): If set, indicates that the PCEP peer supports the advertisement of the Explicit flag in the LSP-EXTENDED-FLAG.</li>
          </ul>
        </t>
      </section>
      <section title="LSP-EXTENDED-FLAG TLV">
        <t>
          New flags are introduced in the LSP-EXTENDED-FLAG TLV, which was initially defined in <xref format="default" section="3.1" sectionFormat="of" target="RFC9357"/>.
        </t>
        <t>
          <ul spacing="compact">
            <li>X (Explicit): If set, indicates that the path encoded in the ERO is explicitly specified and not dynamically computed by the PCEP peer.</li>
            <li>T (Transit Eligible): If set, indicates that the binding value of the LSP can be used in paths computed for other LSPs.</li>
          </ul>
        </t>
      </section>
    </section>
    <section title="Operation">
      <section title="Explicit or Dynamic Path">
        <t>
          The X flag in the LSP-EXTENDED-FLAG TLV MUST NOT be set unless the EXPLICIT-PATH-CAPABILITY is supported by both PCEP peers.
        </t>
        <t>
          If the EXPLICIT-PATH-CAPABILITY is not advertised, the PCE implementation MAY use a local policy to determine the type of path.
        </t>
        <t>
          For instance, if an operator requests the creation of a PCE-Initiated Candidate Path with an Explicit Path, then such path will be encoded in the ERO object of the PCInitiate message sent to the PCC. If the delegation of such LSP is transferred to another PCE, the new PCE will not know whether the path of the LSP was computed dynamically or explicitly specified by the operator.
        </t>
        <t>
          Even if a similar problem does not exist for LSPs originated on the PCC, information about the type of path may be valuable for other purposes, such as debuggability.
        </t>
        <t>
          For LSPs initiated by PCC, the X flag value is initially set by the PCC in the PCRpt message and the PCE MUST set the flag value in PCUpd messages for such LSP based on the last reported state.
        </t>
        <t>
          For PCE-initiated LSPs, the X flag value is initially set by the PCE in PCInitiate message but MAY be modified in the PCUpd messages. The PCC MUST set the flag value in PCRpt messages for such LSP based on the value received from the last PCInitiate or PCUpd message.
        </t>
        <t>Both explicitly specified and dynamically computed paths, can contain a mix of strict and loose subobjects:
          <ul spacing="compact">
            <li>For an Explicitly Specified Path (X flag set): An operator might define a path that explicitly specifies certain hops (strict) but allows the forwarding to select the exact route for other nodes (loose). For example, "go strictly through Router A, then loosely to Network B, then strictly through Router C."</li>
            <li>For a Dynamically Computed Path (X flag not set): A PCE, when computing a path, might generate an ERO that includes strict hops (e.g., to satisfy specific constraints like avoiding certain links) and loose hops (e.g., where flexibility is allowed to optimize for metrics like shortest path).</li>
          </ul>
        </t>
        <t>
          For LSPs with multiple Segment Lists (SLs) per Candidate Path (CP), the path type (explicit or dynamic) is advertised only once per Candidate Path. Therefore, it is not possible to mix dynamic and explicit Segment Lists within a single Candidate Path.
        </t>
      </section>
      <section anchor="LSP-Eligibility" title="LSP Transit Eligibility">
        <t>
          The T flag in the LSP-EXTENDED-FLAG TLV MUST NOT be set unless the TRANSIT-ELIGIBLE-CAPABILITY is supported by both PCEP peers.
        </t>
        <t>
          If the TRANSIT-ELIGIBLE-CAPABILITY is not advertised, the PCE implementation MAY use a local policy to determine the value of the Transit Eligible flag.
        </t>
        <t>
          For PCC-initiated LSPs, the T flag value is initially set by the PCC in the PCRpt message. The PCE MUST set the flag value in PCUpd messages for these LSPs based on the last reported state.
        </t>
        <t>
          For PCE-initiated LSPs, the T flag value is initially set by the PCE in the PCInitiate message but MAY be modified in subsequent PCUpd messages. The PCC MUST set the flag value in PCRpt messages for these LSPs based on the value received from the latest PCInitiate or PCUpd message.
        </t>
      </section>
    </section>
    <section title="Manageability Considerations" numbered="true" toc="default">
      <t>All manageability requirements and considerations listed in <xref target="RFC5440"/> and <xref target="RFC8231"/> apply to PCEP protocol extensions defined in this document. In addition, requirements and considerations listed in this section apply.</t>
      <section title="Control of Function and Policy" numbered="true" toc="default">
        <t>A PCE or PCC implementation MAY allow the capability of supporting PCEP extensions introduced in this document to be enabled or disabled as part of the global configuration.</t>
      </section>
      <section title="Information and Data Models" numbered="true" toc="default">
        <t>An implementation SHOULD allow the operator to view the capability defined in this document. Sections 4.1 and 4.1.1 of <xref target="I-D.ietf-pce-pcep-yang"/> should be extended to include the capability introduced in <xref target="STATEFUL-PCE-CAPABILITY"/> for the PCEP peer.</t>
        </section>
      <section title="Verify Correct Operations" numbered="true" toc="default">
        <t>Operation verification requirements already listed in <xref target="RFC5440"/> and <xref target="RFC8231"/> are applicable to mechanisms defined in this document.</t>
      </section>
      <section title="Impact On Network Operations" numbered="true" toc="default">
        <t>The mechanisms defined in <xref target="RFC5440"/> and <xref target="RFC8231"/> also apply to the PCEP extensions defined in this document.</t>
      </section>
    </section>
    <section  title="Implementation Status">
      <t>[Note to the RFC Editor - remove this section before publication, as
      well as remove the reference to RFC 7942.]</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>


      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and
      working groups to assign due consideration to documents that have the
      benefit of running code, which may serve as evidence of valuable
      experimentation and feedback that have made the implemented protocols
      more mature. It is up to the individual working groups to use this
      information as they see fit".</t>
    </section>

    <section title="Security Considerations">
      <t>
        The security considerations described in <xref target="RFC8231"/> and <xref target="RFC5440"/> are applicable to this document. No additional security measures are required.
      </t>
    </section>
    <section title="IANA Considerations">
     <section anchor="SR-CAPABILITY-FLAG" title="STATEFUL-PCE-CAPABILITY TLV Flag">
      <t>
        IANA maintains a registry, named "STATEFUL-PCE-CAPABILITY TLV Flag Field", within the "Path Computation Element Protocol (PCEP) Numbers" registry group to manage the Flags field of the STATEFUL-PCE-CAPABILITY TLV. IANA is requested to make the following assignments:
      </t>
      <texttable>
        <ttcol>Bit</ttcol>
        <ttcol>Description</ttcol>
        <ttcol>Reference</ttcol>
        <c>TBA1</c>
        <c>T (TRANSIT-ELIGIBLE-CAPABILITY)</c>
        <c>This document</c>
        <c>TBA4</c>
        <c>X (EXPLICIT-PATH-CAPABILITY)</c>
        <c>This document</c>
      </texttable>
     </section>
     <section anchor="LSP-EXTENDED-FLAG" title="LSP-EXTENDED-FLAG TLV Flags">
      <t>
        IANA maintains a registry, named "LSP-EXTENDED-FLAG TLV Flag Field", within the "Path Computation Element Protocol (PCEP) Numbers" registry group to manage the Flags field of the LSP-EXTENDED-FLAG TLV. IANA is requested to make the following assignments:
      </t>
      <texttable>
        <ttcol>Bit</ttcol>
        <ttcol>Description</ttcol>
        <ttcol>Reference</ttcol>
        <c>TBA2</c>
        <c>X (Explicit)</c>
        <c>This document</c>
        <c>TBA3</c>
        <c>T (Transit Eligible)</c>
        <c>This document</c>
      </texttable>
     </section>
    </section>
  </middle>
  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>
      <?rfc include="reference.RFC.8174"?>
      <?rfc include="reference.RFC.5440"?>
      <?rfc include="reference.RFC.8231"?>
      <?rfc include="reference.RFC.9357"?>
      <?rfc include="reference.I-D.ietf-pce-pcep-yang"?>
    </references>
    <references title="Informative References">
      <?rfc include="reference.RFC.7942"?>
      <?rfc include="reference.I-D.ietf-pce-stateful-interdomain"?>
    </references>
    <section title="Acknowledgements">
      <t>The authors would like to thank Rajesh Melarcode Venkateswaran for their contributions to this document.</t>
    </section>
  </back>
</rfc>