<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" docName="draft-fizgeer-pce-redundancy-extensions-00" category="std" ipr="trust200902" obsoletes="" updates="" xml:lang="en" symRefs="true" sortRefs="true" tocInclude="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <!-- Generated by id2xml 1.5.2 on 2025-10-12T12:55:00Z -->
	<!--
   draft-fizgeer-pce-redundancy-extensions-00.txt(13): Warning: Expected an expires
   indication top left, found none
   -->
  <front>
    <title abbrev="PCE Redundancy Extensions in Path Comput">PCE Redundancy Extensions in Path Computation Element Communication Protocol (PCEP)</title>
    <seriesInfo name="Internet-Draft" value="draft-fizgeer-pce-redundancy-extensions-00"/>
    <author initials="M." surname="Fizgeer" fullname="Marina Fizgeer">
      <organization abbrev="Ribbon Communications">Ribbon Communication</organization>
      <address>
        <postal>
          <street>Yagia Kapaim 24</street>
          <street>Petah Tikva</street>
          <street>Israel</street>
        </postal>
		<email>marina.fizgeer@rbbn.com</email>
      </address>
    </author>
    <date year="2025" month="October" day="11"/>
    <workgroup>PCE Working Group</workgroup>
    <abstract>
      <t>
   The Path Computation Element Communication Protocol (PCEP) provides
   mechanisms for Path Computation Elements (PCEs) to instantiate and
   manage Label Switched Paths (LSPs) on a Path Computation Client
   (PCC).</t>
      <t>
   A PCE redundance case is very important and has no real solution for
   many cases, like as active-standby, active-active or not concurrent
   sessions of PCC with different PCEs.</t>
   <t>
   This document proposes extensions to PCEP to allow a PCC and PCEs to
   support
   PCE fast and smooth redundancy in case of PCEP session and PCE
   failure.
   </t>
    </abstract>
  </front>
  <middle>
    <section anchor="sect-1" numbered="true" toc="default">
      <name>Introduction</name>
	<t>
	PCE redundancy case is very important and complicate scenario, as
	PCEP protocol doesn't support exchange of session information
	between PCEs.</t>

      <section anchor="sect-1.1" 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 [RFC2119] [RFC8174] when, and only when, they appear in all
	capitals, as shown here.</t>

      </section>
    </section>
    <section anchor="sect-2" numbered="true" toc="default">
      <name>Terminology</name>
      <t>
   This document uses the following terms defined in <xref target="RFC5440" format="default"/>: PCC,
   PCE, PCEP Peer, and PCEP speaker.</t>
      <t>
   The base PCEP specification <xref target="RFC4655" format="default"/> originally defined the use of
   the PCE architecture for MPLS and GMPLS networks with LSPs
   instantiated using the RSVP-TE signaling protocol.  Over time,
   support for additional path setup types, such as SRv6, has been
   introduced <xref target="RFC9603" format="default"/>.  The term "LSP" is used extensively in PCEP
   specifications and, in the context of this document, refers to a
   Candidate Path within an SR Policy, which may be an SRv6 path (still
   represented using the LSP Object as specified in <xref target="RFC8231" format="default"/>.</t>
    </section>
    <section anchor="sect-3" numbered="true" toc="default">
      <name>PCEP Extensions</name>
      <dl newline="false" spacing="normal" indent="5">
        <dt/>
        <dd>
        Let's consider simple configuration:</dd>
      </dl>
      <figure anchor="ure-pce-redundancy">
        <name>PCE redundancy</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
     +--------+        +--------+
     | PCE 1  |        | PCE 2  |
     +--------+        +--------+
         |                |
          |              |
           |            |
          +-------------+
          |     PCC     |
          +-------------+
]]></artwork>
      </figure>
      <artwork name="" type="" align="left" alt=""><![CDATA[
     PCE1                PCC                          PCE2
     |                   |                             |
     | Active Session    | Active Session              |
     | PCE Init          | PCE Init                    |
     |------------------>|                             |
     | Terminated Session|                             |
     |                   |                             |
     |                   | Start del and state         |
     |                   | timers                      |
     |                   |                             |
     |                   | Del timer expired           |
     |                   |                             |
     |                   | Put LSPs (PCE1) as orphan   |
     |                   |<----------------------------|
     |                   | Take delegation LSPs (PCE1) |
     |                   |---------------------------->|
     |                   | State timer expired         |
     |                   | (internal)                  |
     |                   | Delete LSPs (PCE1)          |
]]></artwork>
      <ul empty="true" spacing="normal">
        <li>
          <dl newline="true" spacing="normal" indent="2">
            <dt>Note:</dt>
            <dd>
	PCE2 session can be created/exist in different states after or
        in parallel with PCE1 session and others.
	</dd>
            <dt>Only in the timeslot between expiration of the deletion timer and</dt>
            <dd>
	the state timer, PCE2 can take delegation.
	</dd>
          </dl>
        </li>
      </ul>
      <dl newline="false" spacing="normal" indent="3">
        <dt/>
        <dd>
      Figure 2: PCE redundancy and take delegation timeslot</dd>
      </dl>
      <t>
   A PCE1 can instantiate LSPs on a PCC.  When session between
   PCE1 and PCC is terminated, PCC starts delegation and state timers.</t>
   <t>
	Once delegation timer is expired, all LSPs are changed to orphan.
	Once state timer is expired, all LSPs in orphan state are deleted
	by PCC.</t>
	<t>
	PCE2 can take delegation of orphan LSPs only, but doesn't aware
	about timers of PCE1-PCC session.</t>
      <t>
   This document specifies PCEP extensions to handle this situation
   in different scenarios:</t>
   <t>
	Multiple parallel sessions in mode active-standby
	Multiple parallel sessions in mode active-active
	Sequential sessions (one session is terminated, then
	another session is established)</t>

      <section anchor="sect-3.1" numbered="true" toc="default">
        <name>OPEN Object</name>
        <t>
	This document defines one new flag for use in the
	STATEFUL-PCE-CAPABILITY TLV.
	</t>
        <section anchor="sect-3.1.1" numbered="true" toc="default">
          <name>STATEFUL-PCE-CAPABILITY TLV</name>
          <t>
   A new flag is proposed for the STATEFUL-PCE-CAPABILITY TLV,
   originally defined in Section 5.4 of <xref target="RFC8231" format="default"/>.</t>
          <t>
   * D (DELEGATION-INFO-CAPABILITY): If set, indicates that the
   PCEP peer supports LSP delegation info.</t>
        </section>
      </section>
      <section anchor="sect-3.2" numbered="true" toc="default">
        <name>LSP object</name>
        <t>
   New TLV with address of PCE to which LSP is delegated SHALL be
   added:</t>
        <ul empty="true" spacing="normal">
          <li>
            <ul empty="true" spacing="normal">
              <li>
                <t>    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</t>
              </li>
            </ul>
          </li>
        </ul>
        <figure anchor="ure-delegated-pce-ipv4-address">
          <name>Delegated PCE IPv4 address</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
 +---------------+----------------------------------------------+
 |     Type      |               Length = 16                    |
 +---------------+----------------------------------------------+
 |                    IPv4 Delegation Address                   |
 +--------------------------------------------------------------+
]]></artwork>
        </figure>
        <figure anchor="ure-delegated-pce-ipv6-address">
          <name>Delegated PCE IPv6 address</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
 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     |               Length = 52                   |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                             |
 +                 IPv6 Delegation Address                     +
 |                        (16 octets)                          |
 +                                                             +
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <artwork name="" type="" align="left" alt=""><![CDATA[
PCC SHALL send this TLV for any delegated LSP to all PCEs with
active
session in PCRpt message.
]]></artwork>
      </section>
      <section anchor="sect-3.3" numbered="true" toc="default">
        <name>DELEGATION-TIMER-EXPIRATION TLV</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
New NT (notification type) and NV (notification value) are required
for
 PCNtf:

  New NT - Delegation timeout
  New NV - TBD

New DELEGATION-TIMER-EXPIRATION TLV is required in Notification
(PCNtf)
 Message MUST be used for this new NT:
]]></artwork>
       <t>
    PCE address (was owner) for session with its delegation timer expired.
    </t>
        <t>
    PCC SHALL send this message to all PCEs with active session.
    </t>
      </section>
    </section>
    <section anchor="sect-4" numbered="true" toc="default">
      <name>Operation</name>
      <artwork name="" type="" align="left" alt=""><![CDATA[
After receiving the PCNtf message with new NT,
the active PCE SHALL/MAY take delegation for all
LSPs that were delegated to this PCE (LSP with this IP
delegated address)
]]></artwork>
      <section anchor="sect-4.1" numbered="true" toc="default">
        <name>Optional extension for take delegation action</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
Here, maybe, new sub-TLV or new flag in PCInit message
will help: get all LSPs were delegated to specific IP
(like as PLSP ID = 0 in PCInit with remove flag message
means deletion for all PCE initiated LSPs):
]]></artwork>
        <t>
   New flag in PCInit: D take delegation, PLSP ID = 0,
   New sub-TLV: Address of the last delegation PCE</t>
        <t>
   PCC SHALL send list of above LSPs with new delegation address and
   delegation flag</t>
        <t>
   Note: : if there are more than 2 parallel session, the first PCE
   sent get delegation all, will get it ownership, P
   CC is responsible to lock other PCEs for it</t>
      </section>
    </section>
    <section anchor="sect-5" numbered="true" toc="default">
      <name>Manageability Considerations</name>
    <t>
   All manageability requirements and considerations listed in
   <xref target="RFC5440" format="default"/>, <xref target="RFC8231" format="default"/>, and <xref target="RFC9604" format="default"/> apply to the PCEP extensions
   defined in this document.</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
A PCE or PCC implementation MAY allow the capability of supporting
PCEP extensions introduced in this document to be enabled/disabled
as
part of the global configuration.  An implementation SHOULD allow
the
operator to view the advertised and received capabilities.
]]></artwork>
    </section>
    <section anchor="sect-6" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>
   The security considerations described in <xref target="RFC5440" format="default"/>, <xref target="RFC8231" format="default"/>, and
   <xref target="RFC9604" format="default"/> are applicable to this document.  No additional security
   measures are required.</t>
    </section>
    <section anchor="sect-7" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="sect-7.1" numbered="true" toc="default">
        <name>STATEFUL-PCE-CAPABILITY TLV Flag</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
IANA maintains a registry, named "STATEFUL-PCE-CAPABILITY TLV Flag
Field", within the "Path Computation Element Protocol (PCEP)
Numbers"
registry group.  IANA is requested to make the following assignment:
]]></artwork>
        <table anchor="tab-1" 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">TBD1</td>
              <td align="left">D (DELEGATION-INFO-CAPABILITY)</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sect-7.2" numbered="true" toc="default">
        <name>LSP object</name>
        <t>
   IANA maintains a registry, named "TE-PATH-BINDING TLV Flag Field",
   within the "Path Computation Element Protocol (PCEP) Numbers"
   registry group.  IANA is requested to make the following
   assignments:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
       +------+--------------------------------+---------------+
       | N    | Description                    | Reference     |
       +------+--------------------------------+---------------+
       | TBD2 | IPv4 delegation address        | This document |
       +------+--------------------------------+---------------+
       | TBD3 | IPv6 delegation address        | This document |
       +------+--------------------------------+---------------+
                               Table 2
]]></artwork>
      </section>
      <section anchor="sect-7.3" numbered="true" toc="default">
        <name>PCNtf message DELEGATION-TIMER-EXPIRATION TLV</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
       +------+--------------------------------+---------------+
       | N    | Description                    | Reference     |
       +------+--------------------------------+---------------+
       | TBD4 | PCE address (was owner) IPv4   | This document |
       +------+--------------------------------+---------------+
       | TBD5 | PCE address (was owner) IPv6   | This document |
       +------+--------------------------------+---------------+
       | TBD6 | Delegation timeoutr            | This document |
       +------+--------------------------------+---------------+
                               Table 3
]]></artwork>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <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="RFC5440" target="https://www.rfc-editor.org/info/rfc5440" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5440.xml">
          <front>
            <title>Path Computation Element (PCE) Communication Protocol (PCEP)</title>
            <author fullname="JP. Vasseur" initials="JP." role="editor" surname="Vasseur"/>
            <author fullname="JL. Le Roux" initials="JL." role="editor" surname="Le Roux"/>
            <date month="March" year="2009"/>
            <abstract>
              <t>This document specifies the Path Computation Element (PCE) Communication Protocol (PCEP) for communications between a Path Computation Client (PCC) and a PCE, or between two PCEs. Such interactions include path computation requests and path computation replies as well as notifications of specific states related to the use of a PCE in the context of Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) Traffic Engineering. PCEP is designed to be flexible and extensible so as to easily allow for the addition of further messages and objects, should further requirements be expressed in the future. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5440"/>
          <seriesInfo name="DOI" value="10.17487/RFC5440"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <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="RFC8231" target="https://www.rfc-editor.org/info/rfc8231" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8231.xml">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE</title>
            <author fullname="E. Crabbe" initials="E." surname="Crabbe"/>
            <author fullname="I. Minei" initials="I." surname="Minei"/>
            <author fullname="J. Medved" initials="J." surname="Medved"/>
            <author fullname="R. Varga" initials="R." surname="Varga"/>
            <date month="September" year="2017"/>
            <abstract>
              <t>The Path Computation Element Communication Protocol (PCEP) provides mechanisms for Path Computation Elements (PCEs) to perform path computations in response to Path Computation Client (PCC) requests.</t>
              <t>Although PCEP explicitly makes no assumptions regarding the information available to the PCE, it also makes no provisions for PCE control of timing and sequence of path computations within and across PCEP sessions. This document describes a set of extensions to PCEP to enable stateful control of MPLS-TE and GMPLS Label Switched Paths (LSPs) via PCEP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8231"/>
          <seriesInfo name="DOI" value="10.17487/RFC8231"/>
        </reference>
        <reference anchor="RFC8664" target="https://www.rfc-editor.org/info/rfc8664" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8664.xml">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for Segment Routing</title>
            <author fullname="S. Sivabalan" initials="S." surname="Sivabalan"/>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="J. Tantsura" initials="J." surname="Tantsura"/>
            <author fullname="W. Henderickx" initials="W." surname="Henderickx"/>
            <author fullname="J. Hardwick" initials="J." surname="Hardwick"/>
            <date month="December" year="2019"/>
            <abstract>
              <t>Segment Routing (SR) enables any head-end node to select any path without relying on a hop-by-hop signaling technique (e.g., LDP or RSVP-TE). It depends only on "segments" that are advertised by link-state Interior Gateway Protocols (IGPs). An SR path can be derived from a variety of mechanisms, including an IGP Shortest Path Tree (SPT), an explicit configuration, or a Path Computation Element (PCE). This document 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.</t>
              <t>This document updates RFC 8408.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8664"/>
          <seriesInfo name="DOI" value="10.17487/RFC8664"/>
        </reference>
		<reference anchor="RFC9604" target="https://www.rfc-editor.org/info/rfc9604">
  <front>
    <title>Carrying Binding Label/SID in PCE-Based Networks</title>
    <author initials="S." surname="Sivabalan"/>
    <author initials="C." surname="Filsfils"/>
    <author initials="J." surname="Tantsura"/>
    <author initials="S." surname="Previdi"/>
    <author initials="C." role="editor" surname="Li"/>
    <date month="August" year="2024"/>
  </front>
  <seriesInfo name="RFC" value="9604"/>
  <seriesInfo name="DOI" value="10.17487/RFC9604"/>
</reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC4655" target="https://www.rfc-editor.org/info/rfc4655" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4655.xml">
          <front>
            <title>A Path Computation Element (PCE)-Based Architecture</title>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="J.-P. Vasseur" initials="J.-P." surname="Vasseur"/>
            <author fullname="J. Ash" initials="J." surname="Ash"/>
            <date month="August" year="2006"/>
            <abstract>
              <t>Constraint-based path computation is a fundamental building block for traffic engineering systems such as Multiprotocol Label Switching (MPLS) and Generalized Multiprotocol Label Switching (GMPLS) networks. Path computation in large, multi-domain, multi-region, or multi-layer networks is complex and may require special computational components and cooperation between the different network domains.</t>
              <t>This document specifies the architecture for a Path Computation Element (PCE)-based model to address this problem space. This document does not attempt to provide a detailed description of all the architectural components, but rather it describes a set of building blocks for the PCE architecture from which solutions may be constructed. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4655"/>
          <seriesInfo name="DOI" value="10.17487/RFC4655"/>
        </reference>
        <reference anchor="RFC9603" target="https://www.rfc-editor.org/info/rfc9603" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9603.xml">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for IPv6 Segment Routing</title>
            <author fullname="C. Li" initials="C." role="editor" surname="Li"/>
            <author fullname="P. Kaladharan" initials="P." surname="Kaladharan"/>
            <author fullname="S. Sivabalan" initials="S." surname="Sivabalan"/>
            <author fullname="M. Koldychev" initials="M." surname="Koldychev"/>
            <author fullname="Y. Zhu" initials="Y." surname="Zhu"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>Segment Routing (SR) can be used to steer packets through a network using the IPv6 or MPLS data plane, employing the source routing paradigm.</t>
              <t>An SR Path can be derived from a variety of mechanisms, including an IGP Shortest Path Tree (SPT), explicit configuration, or a Path Computation Element (PCE).</t>
              <t>Since SR can be applied to both MPLS and IPv6 data planes, a PCE should be able to compute an SR Path for both MPLS and IPv6 data planes. The Path Computation Element Communication Protocol (PCEP) extension and mechanisms to support SR-MPLS have been defined. This document outlines the necessary extensions to support SR for the IPv6 data plane within PCEP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9603"/>
          <seriesInfo name="DOI" value="10.17487/RFC9603"/>
        </reference>
      </references>
    </references>
    <section anchor="sect-a" numbered="true" toc="default">
      <name>Acknowledgements</name>
    </section>
  </back>
</rfc>
