GENWiki

Premier IT Outsourcing and Support Services within the UK

User Tools

Site Tools


rfc:rfc9050



Internet Engineering Task Force (IETF) Z. Li Request for Comments: 9050 S. Peng Category: Standards Track Huawei Technologies ISSN: 2070-1721 M. Negi

                                                           RtBrick Inc
                                                               Q. Zhao
                                                      Etheric Networks
                                                               C. Zhou
                                                                   HPE
                                                             July 2021

Path Computation Element Communication Protocol (PCEP) Procedures and

Extensions for Using the PCE as a Central Controller (PCECC) of LSPs

Abstract

 The Path Computation Element (PCE) is a core component of Software-
 Defined Networking (SDN) systems.
 A PCE as a Central Controller (PCECC) can simplify the processing of
 a distributed control plane by blending it with elements of SDN and
 without necessarily completely replacing it.  Thus, the Label
 Switched Path (LSP) can be calculated/set up/initiated and the label-
 forwarding entries can also be downloaded through a centralized PCE
 server to each network device along the path while leveraging the
 existing PCE technologies as much as possible.
 This document specifies the procedures and Path Computation Element
 Communication Protocol (PCEP) extensions for using the PCE as the
 central controller for provisioning labels along the path of the
 static LSP.

Status of This Memo

 This is an Internet Standards Track document.
 This document is a product of the Internet Engineering Task Force
 (IETF).  It represents the consensus of the IETF community.  It has
 received public review and has been approved for publication by the
 Internet Engineering Steering Group (IESG).  Further information on
 Internet Standards is available in Section 2 of RFC 7841.
 Information about the current status of this document, any errata,
 and how to provide feedback on it may be obtained at
 https://www.rfc-editor.org/info/rfc9050.

Copyright Notice

 Copyright (c) 2021 IETF Trust and the persons identified as the
 document authors.  All rights reserved.
 This document is subject to BCP 78 and the IETF Trust's Legal
 Provisions Relating to IETF Documents
 (https://trustee.ietf.org/license-info) in effect on the date of
 publication of this document.  Please review these documents
 carefully, as they describe your rights and restrictions with respect
 to this document.  Code Components extracted from this document must
 include Simplified BSD License text as described in Section 4.e of
 the Trust Legal Provisions and are provided without warranty as
 described in the Simplified BSD License.

Table of Contents

 1.  Introduction
 2.  Terminology
   2.1.  Requirements Language
 3.  Basic PCECC Mode
 4.  PCEP Requirements
 5.  Procedures for Using the PCE as a Central Controller (PCECC)
   5.1.  Stateful PCE Model
   5.2.  New LSP Functions
   5.3.  New PCEP Object
   5.4.  PCECC Capability Advertisement
   5.5.  LSP Operations
     5.5.1.  PCE-Initiated PCECC LSP
     5.5.2.  PCC-Initiated PCECC LSP
     5.5.3.  Central Controller Instructions
       5.5.3.1.  Label Download CCI
       5.5.3.2.  Label Cleanup CCI
     5.5.4.  PCECC LSP Update
     5.5.5.  Re-delegation and Cleanup
     5.5.6.  Synchronization of Central Controller Instructions
     5.5.7.  PCECC LSP State Report
     5.5.8.  PCC-Based Allocations
 6.  PCEP Messages
   6.1.  The PCInitiate Message
   6.2.  The PCRpt Message
 7.  PCEP Objects
   7.1.  OPEN Object
     7.1.1.  PCECC Capability Sub-TLV
   7.2.  PATH-SETUP-TYPE TLV
   7.3.  CCI Object
     7.3.1.  Address TLVs
 8.  Security Considerations
   8.1.  Malicious PCE
   8.2.  Malicious PCC
 9.  Manageability Considerations
   9.1.  Control of Function and Policy
   9.2.  Information and Data Models
   9.3.  Liveness Detection and Monitoring
   9.4.  Verify Correct Operations
   9.5.  Requirements on Other Protocols
   9.6.  Impact on Network Operations
 10. IANA Considerations
   10.1.  PATH-SETUP-TYPE-CAPABILITY Sub-TLV Type Indicators
   10.2.  PCECC-CAPABILITY Sub-TLV's Flag Field
   10.3.  PCEP Path Setup Type Registry
   10.4.  PCEP Object
   10.5.  CCI Object Flag Field
   10.6.  PCEP-Error Object
 11. References
   11.1.  Normative References
   11.2.  Informative References
 Acknowledgments
 Contributors
 Authors' Addresses

1. Introduction

 The Path Computation Element (PCE) [RFC4655] was developed to offload
 the path computation function from routers in an MPLS traffic-
 engineered (TE) network.  It can compute optimal paths for traffic
 across a network and can also update the paths to reflect changes in
 the network or traffic demands.  Since then, the role and function of
 the PCE have grown to cover a number of other uses (such as GMPLS
 [RFC7025]) and to allow delegated control [RFC8231] and PCE-initiated
 use of network resources [RFC8281].
 According to [RFC7399], Software-Defined Networking (SDN) refers to a
 separation between the control elements and the forwarding components
 so that software running in a centralized system, called a
 controller, can act to program the devices in the network to behave
 in specific ways.  A required element in an SDN architecture is a
 component that plans how the network resources will be used and how
 the devices will be programmed.  It is possible to view this
 component as performing specific computations to place traffic flows
 within the network given knowledge of the availability of network
 resources, how other forwarding devices are programmed, and the way
 that other flows are routed.  This is the function and purpose of a
 PCE, and the way that a PCE integrates into a wider network control
 system (including an SDN system) is presented in [RFC7491].
 In early PCE implementations, where the PCE was used to derive paths
 for MPLS Label Switched Paths (LSPs), paths were requested by network
 elements (known as Path Computation Clients (PCCs)), and the results
 of the path computations were supplied to network elements using the
 Path Computation Element Communication Protocol (PCEP) [RFC5440].
 This protocol was later extended to allow a PCE to send unsolicited
 requests to the network for LSP establishment [RFC8281].
 The PCE was developed to derive paths for MPLS LSPs, which are
 supplied to the head end of the LSP using the PCEP.  But SDN has a
 broader applicability than signaled MPLS and GMPLS TE networks, and
 the PCE may be used to determine paths in a range of use cases.  PCEP
 has been proposed as a control protocol for use in these environments
 to allow the PCE to be fully enabled as a central controller.
 [RFC8283] introduces the architecture for the PCE as a central
 controller as an extension to the architecture described in [RFC4655]
 and assumes the continued use of PCEP as the protocol used between
 the PCE and PCC.  [RFC8283] further examines the motivations and
 applicability for PCEP as a Southbound Interface (SBI) and introduces
 the implications for the protocol.  [PCECC] describes the use cases
 for the PCECC architecture.
 A PCECC can simplify the processing of a distributed control plane by
 blending it with elements of SDN and without necessarily completely
 replacing it.  Thus, the LSP can be calculated/set up/initiated and
 the label-forwarding entries can also be downloaded through a
 centralized PCE server to each network device along the path while
 leveraging the existing PCE technologies as much as possible.
 This document specifies the procedures and PCEP extensions for using
 the PCE as the central controller for static LSPs, where LSPs can be
 provisioned as explicit label instructions at each hop on the end-to-
 end path.  Each router along the path must be told what label-
 forwarding instructions to program and what resources to reserve.
 The PCE-based controller keeps a view of the network and determines
 the paths of the end-to-end LSPs, and the controller uses PCEP to
 communicate with each router along the path of the end-to-end LSP.
 While this document is focused on the procedures for the static LSPs
 (referred to as the basic PCECC mode in Section 3), the mechanisms
 and protocol encodings are specified in such a way that extensions
 for other use cases are easy to achieve.  For example, the extensions
 for the PCECC for Segment Routing (SR) are specified in [PCECC-SR]
 and [PCECC-SRv6].

2. Terminology

 The terminology used in this document is the same as that described
 in the [RFC8283].

2.1. Requirements Language

 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.

3. Basic PCECC Mode

 In this mode, LSPs are provisioned as explicit label instructions at
 each hop on the end-to-end path.  Each router along the path must be
 told what label-forwarding instructions to program and what resources
 to reserve.  The controller uses PCEP to communicate with each router
 along the path of the end-to-end LSP.
 [RFC8283] examines the motivations and applicability for the PCECC
 and use of PCEP as an SBI.  Section 3.1.2 of [RFC8283] highlights the
 use of the PCECC for label allocation along the static LSPs, and it
 simplifies the processing of a distributed control plane by blending
 it with elements of SDN and without necessarily completely replacing
 it.  This allows the operator to introduce the advantages of SDN
 (such as programmability) into the network.  Further, Section 3.3 of
 [PCECC] describes some of the scenarios where the PCECC technique
 could be useful.  Section 4 of [RFC8283] also describes the
 implications on the protocol when used as an SDN SBI.  The operator
 needs to evaluate the advantages offered by the PCECC against the
 operational and scalability needs of the PCECC.
 As per Section 3.1.2 of [RFC8283], the PCE-based controller will take
 responsibility for managing some part of the MPLS label space for
 each of the routers that it controls and may take wider
 responsibility for partitioning the label space for each router and
 allocating different parts for different uses.  The PCC MUST NOT make
 allocations from the label space set aside for the PCE to avoid
 overlap and collisions of label allocations.  It is RECOMMENDED that
 the PCE makes allocations (from the label space set aside for the
 PCE) for all nodes along the path.  For the purpose of this document,
 it is assumed that the exclusive label range to be used by a PCE is
 known and set on both PCEP peers.  A future extension could add the
 capability to advertise this range via a possible PCEP extension as
 well (see [PCE-ID]).  The rest of the processing is similar to the
 existing stateful PCE mechanism.
 This document also allows a case where the label space is maintained
 by the PCC and the labels are allocated by it.  In this case, the PCE
 should request the allocation from the PCC, as described in
 Section 5.5.8.

4. PCEP Requirements

 The following key requirements should be considered when designing
 the PCECC-based solution:
 1.  A PCEP speaker supporting this document needs to have the
     capability to advertise its PCECC capability to its peers.
 2.  A PCEP speaker needs means to identify PCECC-based LSPs in the
     PCEP messages.
 3.  PCEP procedures need to allow for PCC-based label allocations.
 4.  PCEP procedures need to provide a means to update (or clean up)
     label entries downloaded to the PCC.
 5.  PCEP procedures need to provide a means to synchronize the labels
     between the PCE and the PCC via PCEP messages.

5. Procedures for Using the PCE as a Central Controller (PCECC)

5.1. Stateful PCE Model

 Active stateful PCE is described in [RFC8231].  A PCE as a Central
 Controller (PCECC) reuses the existing active stateful PCE mechanism
 as much as possible to control LSPs.

5.2. New LSP Functions

 Several new functions are required in PCEP to support the PCECC.
 This document extends the existing messages to support the new
 functions required by the PCECC:
 PCInitiate:  A PCEP message described in [RFC8281].  A PCInitiate
    message is used to set up a PCE-initiated LSP based on a PCECC
    mechanism.  It is also extended for Central Controller
    Instructions (CCI) (download or clean up the label-forwarding
    instructions in the context of this document) on all nodes along
    the path, as described in Section 6.1.
 PCRpt:  A PCEP message described in [RFC8231].  A PCRpt message is
    used to send the PCECC LSP Reports.  It is also extended to report
    the set of CCI (label-forwarding instructions in the context of
    this document) received from the PCE, as described in Section 6.2.
    Section 5.5.6 describes the use of a PCRpt message during
    synchronization.
 PCUpd:  A PCEP message described in [RFC8231].  A PCUpd message is
    used to send the PCECC LSP Updates.
 The new functions defined in this document are mapped onto the PCEP
 messages, as shown in Table 1.
            +================================+============+
            | Function                       | Message    |
            +================================+============+
            | PCECC Capability advertisement | Open       |
            +--------------------------------+------------+
            | Label entry Add                | PCInitiate |
            +--------------------------------+------------+
            | Label entry Clean up           | PCInitiate |
            +--------------------------------+------------+
            | PCECC-Initiated LSP            | PCInitiate |
            +--------------------------------+------------+
            | PCECC LSP Update               | PCUpd      |
            +--------------------------------+------------+
            | PCECC LSP State Report         | PCRpt      |
            +--------------------------------+------------+
            | PCECC LSP Delegation           | PCRpt      |
            +--------------------------------+------------+
            | PCECC Label Report             | PCRpt      |
            +--------------------------------+------------+
             Table 1: Functions Mapped to the PCEP Messages

5.3. New PCEP Object

 This document defines a new PCEP object called CCI (Section 7.3) to
 specify the Central Controller Instructions.  In the scope of this
 document, this is limited to label-forwarding instructions.  Future
 documents can create new CCI object-types for other types of Central
 Controller Instructions.  The CC-ID is the unique identifier for the
 CCI in PCEP.  The PCEP messages are extended in this document to
 handle the PCECC operations.

5.4. PCECC Capability Advertisement

 During the PCEP initialization phase, PCEP speakers (PCE or PCC)
 advertise their support of and willingness to use PCEP extensions for
 the PCECC using these elements in the OPEN message:
  • a new Path Setup Type (PST) (Section 7.2) in the PATH-SETUP-TYPE-

CAPABILITY TLV to indicate support for PCEP extensions for the

    PCECC - 2 (Traffic engineering path is set up using PCECC mode)
  • a new PCECC-CAPABILITY sub-TLV (Section 7.1.1) with the L bit set

to '1' inside the PATH-SETUP-TYPE-CAPABILITY TLV to indicate a

    willingness to use PCEP extensions for the PCECC-based Central
    Controller Instructions for label download
  • the STATEFUL-PCE-CAPABILITY TLV [RFC8231] (with the I flag set

[RFC8281])

 The new PST is to be listed in the PATH-SETUP-TYPE-CAPABILITY TLV by
 all PCEP speakers that support the PCEP extensions for the PCECC in
 this document.
 The new PCECC-CAPABILITY sub-TLV is included in the PATH-SETUP-TYPE-
 CAPABILITY TLV in the OPEN object to indicate a willingness to use
 the PCEP extensions for the PCECC during the established PCEP
 session.  Using the L bit in this TLV, the PCE shows the intention to
 function as a PCECC server, and the PCC shows a willingness to act as
 a PCECC client for label download instructions (see Section 7.1.1).
 If the PCECC-CAPABILITY sub-TLV is advertised and the STATEFUL-PCE-
 CAPABILITY TLV is not advertised, or is advertised without the I flag
 set, in the OPEN object, the receiver MUST:
  • send a PCErr message with Error-Type=19 (Invalid Operation) and

Error-value=17 (Stateful PCE capability was not advertised) and

  • terminate the session.
 If a PCEP speaker receives the PATH-SETUP-TYPE-CAPABILITY TLV with
 the PCECC PST but without the PCECC-CAPABILITY sub-TLV, it MUST:
  • send a PCErr message with Error-Type=10 (Reception of an invalid

object) and Error-value=33 (Missing PCECC Capability sub-TLV) and

  • terminate the PCEP session.
 The PCECC-CAPABILITY sub-TLV MUST NOT be used without the
 corresponding PST being listed in the PATH-SETUP-TYPE-CAPABILITY TLV.
 If it is present without the corresponding PST listed in the PATH-
 SETUP-TYPE-CAPABILITY TLV, it MUST be ignored.
 If one or both speakers (PCE and PCC) have not indicated support and
 willingness to use the PCEP extensions for the PCECC, the PCEP
 extensions for the PCECC MUST NOT be used.  If a PCECC operation is
 attempted when both speakers have not agreed in the OPEN messages,
 the receiver of the message MUST:
  • send a PCErr message with Error-Type=19 (Invalid Operation) and

Error-value=16 (Attempted PCECC operations when PCECC capability

    was not advertised) and
  • terminate the PCEP session.
 A legacy PCEP speaker (that does not recognize the PCECC Capability
 sub-TLV) will ignore the sub-TLV in accordance with [RFC8408] and
 [RFC5440].  As per [RFC8408], the legacy PCEP speaker, on receipt of
 an unsupported PST in a Request Parameter (RP) / Stateful PCE Request
 Parameter (SRP) object, will:
  • send a PCErr message with Error-Type=21 (Invalid traffic

engineering path setup type) and Error-value=1 (Unsupported path

    setup type) and
  • terminate the PCEP session.

5.5. LSP Operations

 The PCEP messages pertaining to a PCECC MUST include the PATH-SETUP-
 TYPE TLV [RFC8408] in the SRP object [RFC8231] with the PST set to
 '2' to clearly identify that the PCECC LSP is intended.

5.5.1. PCE-Initiated PCECC LSP

 The LSP instantiation operation is defined in [RFC8281].  In order to
 set up a PCE-initiated LSP based on the PCECC mechanism, a PCE sends
 a PCInitiate message with the PST set to '2' for the PCECC (see
 Section 7.2) to the ingress PCC.
 The label-forwarding instructions (see Section 5.5.3) from the PCECC
 are sent after the initial PCInitiate and PCRpt message exchange with
 the ingress PCC, as per [RFC8281] (see Figure 1).  This is done so
 that the PCEP-specific identifier for the LSP (PLSP-ID) and other LSP
 identifiers can be obtained from the ingress and can be included in
 the label-forwarding instruction in the next set of PCInitiate
 messages along the path, as described below.
 An LSP-IDENTIFIERS TLV [RFC8231] MUST be included for the PCECC LSPs;
 it uniquely identifies the LSP in the network.  Note that the fields
 in the LSP-IDENTIFIERS TLV are described for the RSVP-signaled LSPs
 but are applicable to the PCECC LSP as well.  The LSP object is
 included in the CCI (label download Section 7.3) to identify the
 PCECC LSP for this instruction.  The PLSP-ID is the original
 identifier used by the ingress PCC, so a transit/egress Label
 Switching Router (LSR) could have multiple Central Controller
 Instructions that have the same PLSP-ID.  The PLSP-ID in combination
 with the source (in the LSP-IDENTIFIERS TLV) MUST be unique.  The
 PLSP-ID is included for maintainability reasons to ease debugging.
 As per [RFC8281], the LSP object could also include the SPEAKER-
 ENTITY-ID TLV to identify the PCE that initiated these instructions.
 Also, the CC-ID is unique in each PCEP session, as described in
 Section 7.3.
 On receipt of a PCInitiate message for the PCECC LSP, the PCC
 responds with a PCRpt message with the status set to 'Going-up' and
 carrying the assigned PLSP-ID (see Figure 1).  The ingress PCC also
 sets the D (Delegate) flag (see [RFC8231]) and C (Create) flag (see
 [RFC8281]) in the LSP object.  When the PCE receives this PCRpt
 message with the PLSP-ID, it assigns labels along the path and sets
 up the path by sending a PCInitiate message to each node along the
 path of the LSP, as per the PCECC technique.  The CC-ID uniquely
 identifies the Central Controller Instructions within a PCEP session.
 Each node along the path (PCC) responds with a PCRpt message to
 acknowledge the CCI with the PCRpt messages including the CCI and LSP
 objects.
 The ingress node would receive one CCI object with the O bit (out-
 label) set.  The transit node(s) would receive two CCI objects with
 the in-label CCI without the O bit set and the out-label CCI with the
 O bit set.  The egress node would receive one CCI object without the
 O bit set (see Figure 1).  A node can determine its role based on the
 setting of the O bit in the CCI object(s) and the LSP-IDENTIFIERS TLV
 in the LSP object.
 The LSP deletion operation for the PCE-initiated PCECC LSP is the
 same as defined in [RFC8281].  The PCE should further perform the
 label entry cleanup operation, as described in Section 5.5.3.2, for
 the corresponding LSP.
               +-------+                              +-------+
               |PCC    |                              |  PCE  |
               |ingress|                              +-------+
        +------|       |                                  |
        | PCC  +-------+                                  |
        | transit| |                                      |
 +------|        | |<--PCInitiate,PLSP-ID=0,PST=2---------| PCECC LSP
 |PCC   +--------+ |                                      | Initiate
 |egress  |  |     |----PCRpt,PLSP-ID=2,D=1,C=1---------->| PCECC LSP
 +--------+  |     |       (GOING-UP)                     |
     |       |     |                                      |
     |<-------PCInitiate,CC-ID=X,PLSP-ID=2----------------| Label
     |       |     |                                      | download
     |--------PCRpt,CC-ID=X,PLSP-ID=2-------------------->| CCI
     |       |     |                                      |
     |       |<------PCInitiate,CC-ID=Y1,Y2,PLSP-ID=2-----| Label
     |       |     |                                      | download
     |       |-------PCRpt,CC-ID=Y1,Y2,PLSP-ID=2--------->| CCI
     |       |     |                                      |
     |       |     |<----PCInitiate,CC-ID=Z,PLSP-ID=2-----| Label
     |       |     |                                      | download
     |       |     |-----PCRpt,CC-ID=Z,PLSP-ID=2--------->| CCI
     |       |     |                                      |
     |       |     |<---PCUpd,PLSP-ID=2,PST=2,D=1---------| PCECC LSP
     |       |     |      (UP)                            | Update
     |       |     |----PCRpt,PLSP-ID=2,D=1,C=1---------->|
     |       |     |      (UP)                            |
                   Figure 1: PCE-Initiated PCECC LSP
 Once the label operations are completed, the PCE MUST send a PCUpd
 message to the ingress PCC.  As per [RFC8231], the PCUpd message is
 with the D flag set.
 The PCECC LSPs are considered to be 'up' by default (on receipt of a
 PCUpd message from the PCE).  The ingress could further choose to
 deploy a data-plane check mechanism and report the status back to the
 PCE via a PCRpt message to make sure that the correct label
 instructions are made along the path of the PCECC LSP (and it is
 ready to carry traffic).  The exact mechanism is out of scope of this
 document.
 In the case where the label allocations are made by the PCC itself
 (see Section 5.5.8), the PCE could request an allocation to be made
 by the PCC; then, the PCC would send a PCRpt message with the
 allocated label encoded in the CC-ID object (as shown in Figure 2) in
 the configuration sequence from the egress towards the ingress along
 the path.
               +-------+                              +-------+
               |PCC    |                              |  PCE  |
               |ingress|                              +-------+
        +------|       |                                  |
        | PCC  +-------+                                  |
        | transit| |                                      |
 +------|        | |<--PCInitiate,PLSP-ID=0,PST=2,--------| PCECC LSP
 |PCC   +--------+ |                                      | Initiate
 |egress  |  |     |----PCRpt,PLSP-ID=2,D=1,C=1---------->| PCECC LSP
 +--------+  |     |       (GOING-UP)                     |
     |       |     |                                      |
     |<-------PCInitiate,CC-ID=X,PLSP-ID=2----------------| Label
     |       |     |     C=1,O=0                          | download
     |--------PCRpt,CC-ID=X,PLSP-ID=2-------------------->| CCI
     |       |     |     Label=L1                         |
     |       |<------PCInitiate,PLSP-ID=2,----------------| Labels
     |       |     |            CC-ID=Y1,C=1,O=0          | download
     |       |     |            CC-ID=Y2,C=0,O=1,L1       | CCI
     |       |-------PCRpt,PLSP-ID=2--------------------->|
     |       |     |       CC-ID=Y1,O=0,Label=L2          |
     |       |     |       CC-ID=Y2,O=1                   |
     |       |     |<----PCInitiate,CC-ID=Z,PLSP-ID=2-----| Label
     |       |     |                C=0,O=1,L2            | download
     |       |     |-----PCRpt,CC-ID=Z,PLSP-ID=2--------->| CCI
     |       |     |                                      |
     |       |     |<---PCUpd,PLSP-ID=2,PST=2,D=1---------| PCECC LSP
     |       |     |      (UP)                            | Update
           Figure 2: PCE-Initiated PCECC LSP (PCC Allocation)
 In this example, it should be noted that the request is made to the
 egress node with the C bit set in the CCI object to indicate that the
 label allocation needs to be done by the egress, and the egress
 responds with the allocated label to the PCE.  The PCE further
 informs the transit PCC without setting the C bit to '1' in the CCI
 object for the out-label, but the C bit is set to '1' for the in-
 label, so the transit node makes the label allocation (for the in-
 label) and reports to the PCE.  Similarly, the C bit is unset towards
 the ingress to complete all the label allocations for the PCECC LSP.

5.5.2. PCC-Initiated PCECC LSP

 In order to set up an LSP based on the PCECC mechanism where the LSP
 is configured at the PCC, a PCC MUST delegate the LSP by sending a
 PCRpt message with the PST set for the PCECC (see Section 7.2) and D
 (Delegate) flag (see [RFC8231]) set in the LSP object (see Figure 3).
 When a PCE receives the initial PCRpt message with the D flag and PST
 set to '2', it SHOULD calculate the path and assign labels along the
 path in addition to setting up the path by sending a PCInitiate
 message to each node along the path of the LSP, as per the PCECC
 technique (see Figure 3).  The CC-ID uniquely identifies the CCI
 within a PCEP session.  Each PCC further responds with the PCRpt
 messages, including the CCI and LSP objects.
 Once the CCI (label operations) are completed, the PCE MUST send the
 PCUpd message to the ingress PCC.  As per [RFC8231], this PCUpd
 message should include the path information calculated by the PCE.
 Note that the PCECC LSPs MUST be delegated to a PCE at all times.
 The LSP deletion operation for the PCECC LSPs is the same as defined
 in [RFC8231].  If the PCE receives a PCRpt message for LSP deletion,
 then it does label the cleanup operation, as described in
 Section 5.5.3.2, for the corresponding LSP.
 The basic PCECC LSP setup sequence is as shown in Figure 3.
                +-------+                             +-------+
                |PCC    |                             |  PCE  |
                |ingress|                             +-------+
         +------|       |                                 |
         | PCC  +-------+                                 |
         | transit| |                                     |
  +------|        | |---PCRpt,PLSP-ID=1,PST=2,D=1-------->| PCECC LSP
  |PCC   +--------+ |                                     |
  |egress  |  |     |                                     |
  +--------+  |     |                                     |
      |       |     |                                     |
      |<-------PCInitiate,CC-ID=X,PLSP-ID=1---------------| Label
      |       |     |     L1,O=0                          | download
      |--------PCRpt,CC-ID=X,PLSP-ID=1------------------->| CCI
      |       |     |                                     |
      |       |<------PCInitiate,PLSP-ID=1,---------------| Labels
      |       |     |            CC-ID=Y1,O=0,L2          | download
      |       |     |            CC-ID=Y2,O=1,L1          | CCI
      |       |-------PCRpt,CC-ID=Y1,Y2,PLSP-ID=1-------->|
      |       |     |                                     |
      |       |     |<----PCInitiate,CC-ID=Z,PLSP-ID=1----| Label
      |       |     |                L2,O=1               | download
      |       |     |-----PCRpt,CC-ID=Z,PLSP-ID=1-------->| CCI
      |       |     |                                     |
      |       |     |<---PCUpd,PLSP-ID=1,PST=2,D=1--------| PCECC LSP
      |       |     |                                     | Update
      |       |     |                                     |
                   Figure 3: PCC-Initiated PCECC LSP
 In the case where the label allocations are made by the PCC itself
 (see Section 5.5.8), the PCE could request an allocation to be made
 by the PCC; then, the PCC would send a PCRpt message with the
 allocated label encoded in the CC-ID object, as shown in Figure 4.
                +-------+                             +-------+
                |PCC    |                             |  PCE  |
                |ingress|                             +-------+
         +------|       |                                 |
         | PCC  +-------+                                 |
         | transit| |                                     |
  +------|        | |---PCRpt,PLSP-ID=1,PST=2,D=1-------->| PCECC LSP
  |PCC   +--------+ |                                     |
  |egress  |  |     |                                     |
  +--------+  |     |                                     |
      |       |     |                                     |
      |<-------PCInitiate,CC-ID=X,PLSP-ID=1---------------| Label
      |       |     |     C=1                             | download
      |--------PCRpt,CC-ID=X,PLSP-ID=1------------------->| CCI
      |       |     |     Label=L1                        |
      |       |<------PCInitiate,PLSP-ID=1,---------------| Labels
      |       |     |            CC-ID=Y1,C=1             | download
      |       |     |            CC-ID=Y2,C=0,L1          | CCI
      |       |-------PCRpt,PLSP-ID=1-------------------->|
      |       |     |       CC-ID=Y1,Label=L2             |
      |       |     |       CC-ID=Y2                      |
      |       |     |<----PCInitiate,CC-ID=Z,PLSP-ID=1----| Label
      |       |     |                C=0,L2               | download
      |       |     |-----PCRpt,CC-ID=Z,PLSP-ID=1-------->| CCI
      |       |     |                                     |
      |       |     |<---PCUpd,PLSP-ID=1,PST=2,D=1--------| PCECC LSP
      |       |     |                                     | Update
      |       |     |                                     |
           Figure 4: PCC-Initiated PCECC LSP (PCC Allocation)
    |  Note:
    |  
    |  The O bit is set as before (and thus not included).
 In the case where the label allocations are made by the PCC itself
 (see Section 5.5.8), the procedure remains the same, with just an
 additional constraint on the configuration sequence.
 The rest of the PCC-initiated PCECC LSP setup operations are the same
 as those described in Section 5.5.1.

5.5.3. Central Controller Instructions

 The new CCI for the label operations in PCEP are done via the
 PCInitiate message (Section 6.1) by defining a new PCEP object for
 CCI operations.  The local label range of each PCC is assumed to be
 known by both the PCC and the PCE.

5.5.3.1. Label Download CCI

 In order to set up an LSP based on the PCECC, the PCE sends a
 PCInitiate message to each node along the path to download the label
 instructions, as described in Sections 5.5.1 and 5.5.2.
 The CCI object MUST be included, along with the LSP object in the
 PCInitiate message.  The LSP-IDENTIFIERS TLV MUST be included in the
 LSP object.  The SPEAKER-ENTITY-ID TLV SHOULD be included in the LSP
 object.
 If a node (PCC) receives a PCInitiate message that includes a label
 to download (as part of CCI) that is out of the range set aside for
 the PCE, it MUST send a PCErr message with Error-Type=31 (PCECC
 failure) and Error-value=1 (Label out of range) and MUST include the
 SRP object to specify the error is for the corresponding label update
 via a PCInitiate message.  If a PCC receives a PCInitiate message but
 fails to download the label entry, it MUST send a PCErr message with
 Error-Type=31 (PCECC failure) and Error-value=2 (Instruction failed)
 and MUST include the SRP object to specify the error is for the
 corresponding label update via a PCInitiate message.
 A new PCEP object for CCI is defined in Section 7.3.

5.5.3.2. Label Cleanup CCI

 In order to delete an LSP based on the PCECC, the PCE sends Central
 Controller Instructions via a PCInitiate message to each node along
 the path of the LSP to clean up the label-forwarding instruction.
 If the PCC receives a PCInitiate message but does not recognize the
 label in the CCI, the PCC MUST generate a PCErr message with Error-
 Type=19 (Invalid operation) and Error-value=18 (Unknown Label) and
 MUST include the SRP object to specify the error is for the
 corresponding label cleanup (via a PCInitiate message).
 The R flag in the SRP object defined in [RFC8281] specifies the
 deletion of the label entry in the PCInitiate message.
                +-------+                              +-------+
                |PCC    |                              |  PCE  |
                |ingress|                              +-------+
         +------|       |                                  |
         | PCC  +-------+                                  |
         | transit| |                                      |
  +------|        | |                                      |
  |PCC   +--------+ |                                      |
  |egress  |  |     |                                      |
  +--------+  |     |                                      |
      |       |     |                                      |
      |<-------PCInitiate,CC-ID=X,PLSP-ID=2----------------| Label
      |       |     |                   R=1                | cleanup
      |--------PCRpt,CC-ID=X,PLSP-ID=2-------------------->| CCI
      |       |     |              R=1                     |
      |       |<------PCInitiate,CC-ID=Y1,Y2,PLSP-ID=2-----| Label
      |       |     |                          R=1         | cleanup
      |       |-------PCRpt,CC-ID=Y1,Y2,PLSP-ID=2--------->| CCI
      |       |     |                         R=1          |
      |       |     |<----PCInitiate,CC-ID=Z,PLSP-ID=2-----| Label
      |       |     |                              R=1     | cleanup
      |       |     |-----PCRpt,CC-ID=Z,PLSP-ID=2--------->| CCI
      |       |     |                         R=1          |
      |       |     |<--PCInitiate,PLSP-ID=2,PST=2,R=1-----| PCECC LSP
      |       |     |                                      | remove
                        Figure 5: Label Cleanup
 As per [RFC8281], following the removal of the label-forwarding
 instruction, the PCC MUST send a PCRpt message.  The SRP object in
 the PCRpt message MUST include the SRP-ID-number from the PCInitiate
 message that triggered the removal.  The R flag in the SRP object
 MUST be set.
 In the case where the label allocation is made by the PCC itself (see
 Section 5.5.8), the removal procedure remains the same, adding the
 sequence constraint.

5.5.4. PCECC LSP Update

 The update is done as per the make-before-break procedures, i.e., the
 PCECC first updates new label instructions based on the updated path
 and then informs the ingress to switch traffic before cleaning up the
 former instructions.  New CC-IDs are used to identify the updated
 instructions; the identifiers in the LSP object uniquely identify the
 existing LSP.  Once new instructions are downloaded, the PCE further
 updates the new path at the ingress, which triggers the traffic
 switch on the updated path.  The ingress PCC acknowledges with a
 PCRpt message, on receipt of the PCRpt message, the PCE does the
 cleanup operation for the former LSP, as described in
 Section 5.5.3.2.
               +-------+                             +-------+
               |PCC    |                             |  PCE  |
               |ingress|                             +-------+
        +------|       |                                 |
        | PCC  +-------+                                 |
        | transit| |                                     |
 +------|        | |                                     |
 |PCC   +--------+ |                                     |
 |egress  |  |     |                                     |
 +--------+  |     |                                     |
     |       |     |                                     | New Path
     |<------ PCInitiate,CC-ID=XX,PLSP-ID=1 -------------| for LSP
     |       |     |                                     | trigger
     |--------PCRpt,CC-ID=XX,PLSP-ID=1------------------>| new CCI
     |       |     |                                     |
     |       |<------PCInitiate,CC-ID=YY1,YY2,PLSP-ID=1--| Label
     |       |     |                                     | download
     |       |-------PCRpt,CC-ID=YY1,YY2,PLSP-ID=1------>| CCI
     |       |     |                                     |
     |       |     |<----PCInitiate,CC-ID=ZZ,PLSP-ID=1---| Label
     |       |     |                                     | download
     |       |     |-----PCRpt,CC-ID=ZZ,PLSP-ID=1------->| CCI
     |       |     |                                     |
     |       |     |<---PCUpd,PLSP-ID=1,PST=2,D=1--------| PCECC
     |       |     |    SRP=S                            | LSP Update
     |       |     |                                     |
     |       |     |---PCRpt,PLSP-ID=1,PST=2,D=1-------->| Trigger
     |       |     |       (SRP=S)                       | Delete
     |       |     |                                     | former CCI
     |       |     |                                     |
     |<-------PCInitiate,CC-ID=X,PLSP-ID=1---------------| Label
     |       |     |                   R=1               | cleanup
     |--------PCRpt,CC-ID=X,PLSP-ID=1------------------->| CCI
     |       |     |              R=1                    |
     |       |<------PCInitiate,CC-ID=Y1,Y2,PLSP-ID=1----| Label
     |       |     |                              R=1    | cleanup
     |       |-------PCRpt,CC-ID=Y1,Y2,PLSP-ID=1-------->| CCI
     |       |     |                         R=1         |
     |       |     |<----PCInitiate,CC-ID=Z,PLSP-ID=1----| Label
     |       |     |                              R=1    | cleanup
     |       |     |-----PCRpt,CC-ID=Z,PLSP-ID=1-------->| CCI
     |       |     |                         R=1         |
                       Figure 6: PCECC LSP Update
 The modified PCECC LSPs are considered to be 'up' by default.  The
 ingress could further choose to deploy a data-plane check mechanism
 and report the status back to the PCE via a PCRpt message.  The exact
 mechanism is out of scope of this document.
 In the case where the label allocations are made by the PCC itself
 (see Section 5.5.8), the procedure remains the same.

5.5.5. Re-delegation and Cleanup

 As described in [RFC8281], a new PCE can gain control over an
 orphaned LSP.  In the case of a PCECC LSP, the new PCE MUST also gain
 control over the CCI in the same way by sending a PCInitiate message
 that includes the SRP, LSP, and CCI objects and carries the CC-ID and
 PLSP-ID identifying the instructions that it wants to take control
 of.
 Further, as described in [RFC8281], the State Timeout Interval timer
 ensures that a PCE crash does not result in automatic and immediate
 disruption for the services using PCE-initiated LSPs.  Similarly the
 Central Controller Instructions are not removed immediately upon PCE
 failure.  Instead, they are cleaned up on the expiration of this
 timer.  This allows for network cleanup without manual intervention.
 The PCC MUST support the removal of CCI as one of the behaviors
 applied on expiration of the State Timeout Interval timer.
 In the case of the PCC-initiated PCECC LSP, the control over the
 orphaned LSP at the ingress PCC is taken over by the mechanism
 specified in [RFC8741] to request delegation.  The control over the
 CCI is described above using [RFC8281].

5.5.6. Synchronization of Central Controller Instructions

 The purpose of CCI synchronization (labels in the context of this
 document) is to make sure that the PCE's view of CCI (labels) matches
 with the PCC's label allocation.  This synchronization is performed
 as part of the LSP State Synchronization, as described in [RFC8231]
 and [RFC8232].
 As per LSP State Synchronization [RFC8231], a PCC reports the state
 of its LSPs to the PCE using PCRpt messages and, as per [RFC8281],
 the PCE would initiate any missing LSPs and/or remove any LSPs that
 are not wanted.  The same PCEP messages and procedures are also used
 for the CCI synchronization.  The PCRpt message includes the CCI and
 the LSP object to report the label-forwarding instructions.  The PCE
 would further remove any unwanted instructions or initiate any
 missing instructions.

5.5.7. PCECC LSP State Report

 As mentioned before, an ingress PCC MAY choose to apply any
 Operations, Administration, and Maintenance (OAM) mechanism to check
 the status of the LSP in the data plane and MAY further send its
 status in a PCRpt message to the PCE.

5.5.8. PCC-Based Allocations

 The PCE can request the PCC to allocate the label using the
 PCInitiate message.  The C flag in the CCI object is set to '1' to
 indicate that the allocation needs to be made by the PCC.  The PCC
 MUST try to allocate the label and MUST report to the PCE via a PCRpt
 or PCErr message.
 If the value of the label is 0 and the C flag is set to '1', it
 indicates that the PCE is requesting the allocation to be made by the
 PCC.  If the label is 'n' and the C flag is set to '1' in the CCI
 object, it indicates that the PCE requests a specific value 'n' for
 the label.  If the allocation is successful, the PCC MUST report via
 the PCRpt message with the CCI object.  If the value of the label in
 the CCI object is invalid, it MUST send a PCErr message with Error-
 Type=31 (PCECC failure) and Error-value=3 (Invalid CCI).  If it is
 valid but the PCC is unable to allocate it, it MUST send a PCErr
 message with Error-Type=31 (PCECC failure) and Error-value=4 (Unable
 to allocate the specified CCI).
 If the PCC wishes to withdraw or modify the previously assigned
 label, it MUST send a PCRpt message without any label or with the
 label containing the new value, respectively, in the CCI object.  The
 PCE would further trigger the label cleanup of the older label, as
 per Section 5.5.3.2.

6. PCEP Messages

 As defined in [RFC5440], a PCEP message consists of a common header
 followed by a variable-length body made of a set of objects that can
 be either mandatory or optional.  An object is said to be mandatory
 in a PCEP message when the object must be included for the message to
 be considered valid.  For each PCEP message type, a set of rules is
 defined, which specifies the set of objects that the message can
 carry.  An implementation MUST form the PCEP messages using the
 object ordering specified in this document.
 The LSP-IDENTIFIERS TLV MUST be included in the LSP object for the
 PCECC LSP.
 The message formats in this document are specified using Routing
 Backus-Naur Form (RBNF) encoding, as specified in [RFC5511].

6.1. The PCInitiate Message

 The PCInitiate message [RFC8281] can be used to download or remove
 the labels; this document extends the message, as shown below.
      <PCInitiate Message> ::= <Common Header>
                               <PCE-initiated-lsp-list>
 Where:
  • <Common Header> is defined in [RFC5440].
      <PCE-initiated-lsp-list> ::= <PCE-initiated-lsp-request>
                                   [<PCE-initiated-lsp-list>]
      <PCE-initiated-lsp-request> ::=
                             (<PCE-initiated-lsp-instantiation>|
                              <PCE-initiated-lsp-deletion>|
                              <PCE-initiated-lsp-central-control>)
      <PCE-initiated-lsp-central-control> ::= <SRP>
                                              <LSP>
                                              <cci-list>
      <cci-list> ::=  <CCI>
                      [<cci-list>]
 Where:
  • <PCE-initiated-lsp-instantiation> and <PCE-initiated-lsp-deletion>

are as per [RFC8281].

  • The LSP and SRP object is defined in [RFC8231].
 When a PCInitiate message is used for the CCI (labels), the SRP, LSP,
 and CCI objects MUST be present.  The SRP object is defined in
 [RFC8231]; if the SRP object is missing, the receiving PCC MUST send
 a PCErr message with Error-Type=6 (Mandatory Object missing) and
 Error-value=10 (SRP object missing).  The LSP object is defined in
 [RFC8231], and if the LSP object is missing, the receiving PCC MUST
 send a PCErr message with Error-Type=6 (Mandatory Object missing) and
 Error-value=8 (LSP object missing).  The CCI object is defined in
 Section 7.3, and if the CCI object is missing, the receiving PCC MUST
 send a PCErr message with Error-Type=6 (Mandatory Object missing) and
 Error-value=17 (CCI object missing).  More than one CCI object MAY be
 included in the PCInitiate message for a transit LSR.
 To clean up entries, the R (remove) bit MUST be set in the SRP object
 to be encoded along with the LSP and CCI objects.
 The CCI object received at the ingress node MUST have the O bit (out-
 label) set.  The CCI object received at the egress MUST have the O
 bit unset.  If this is not the case, the PCC MUST send a PCErr
 message with Error-Type=31 (PCECC failure) and Error-value=3 (Invalid
 CCI).  Other instances of the CCI object, if present, MUST be
 ignored.
 For the point-to-point (P2P) LSP setup via the PCECC technique, at
 the transit LSR, two CCI objects are expected for incoming and
 outgoing labels associated with the LSP object.  If any other CCI
 object is included in the PCInitiate message, it MUST be ignored.  If
 the transit LSR did not receive two CCI objects, with one of them
 having the O bit set and another with the O bit unset, it MUST send a
 PCErr message with Error-Type=31 (PCECC failure) and Error-value=3
 (Invalid CCI).
 Note that, on receipt of the PCInitiate message with CCI object, the
 ingress, egress, or transit role of the PCC is identified via the
 ingress and egress IP address encoded in the LSP-IDENTIFIERS TLV.

6.2. The PCRpt Message

 The PCRpt message can be used to report the labels that were
 allocated by the PCE to be used during the State Synchronization
 phase or as an acknowledgment to a PCInitiate message.
       <PCRpt Message> ::= <Common Header>
                           <state-report-list>
 Where:
       <state-report-list> ::= <state-report>[<state-report-list>]
       <state-report> ::= (<lsp-state-report>|
                           <central-control-report>)
       <lsp-state-report> ::= [<SRP>]
                              <LSP>
                              <path>
       <central-control-report> ::= [<SRP>]
                                    <LSP>
                                    <cci-list>
       <cci-list> ::=  <CCI>
                       [<cci-list>]
 Where:
  • <path> is as per [RFC8231], and the LSP and SRP objects are also

defined in [RFC8231].

 When a PCRpt message is used to report the CCI (labels), the LSP and
 CCI objects MUST be present.  The LSP object is defined in [RFC8231],
 and if the LSP object is missing, the receiving PCE MUST send a PCErr
 message with Error-Type=6 (Mandatory Object missing) and Error-
 value=8 (LSP object missing).  The CCI object is defined in
 Section 7.3, and if the CCI object is missing, the receiving PCE MUST
 send a PCErr message with Error-Type=6 (Mandatory Object missing) and
 Error-value=17 (CCI object missing).  Two CCI objects can be included
 in the PCRpt message for a transit LSR.

7. PCEP Objects

 The PCEP objects defined in this document are compliant with the PCEP
 object format defined in [RFC5440].

7.1. OPEN Object

 This document defines a new PST (2) to be included in the PATH-SETUP-
 TYPE-CAPABILITY TLV in the OPEN object.  Further, a new sub-TLV for
 the PCECC capability exchange is also defined.

7.1.1. PCECC Capability Sub-TLV

 The PCECC-CAPABILITY sub-TLV is an optional TLV for use in the OPEN
 object in the PATH-SETUP-TYPE-CAPABILITY TLV when the Path Setup Type
 list includes the PCECC Path Setup Type 2.  A PCECC-CAPABILITY sub-
 TLV MUST be ignored if the PST list does not contain PST=2.
 Its format is shown in Figure 7.
     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=1          |          Length=4             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                             Flags                           |L|
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                   Figure 7: PCECC Capability Sub-TLV
 The type of the TLV is 1, and it has a fixed length of 4 octets.
 The value comprises a single field: Flags (32 bits).  Currently, the
 following flag bit is defined:
 L bit (Label):  If set to '1' by a PCEP speaker, the L flag indicates
    that the PCEP speaker will support and is willing to handle the
    PCEC-based Central Controller Instructions for label download.
    The bit MUST be set to '1' by both a PCC and a PCE for the PCECC
    label download/report on a PCEP session.
 Unassigned bits MUST be set to '0' on transmission and MUST be
 ignored on receipt.

7.2. PATH-SETUP-TYPE TLV

 The PATH-SETUP-TYPE TLV is defined in [RFC8408]; this document
 defines a new PST value:
 PST=2:  Path is set up via the PCECC mode.
 On a PCRpt/PCUpd/PCInitiate message, the PST=2 in the PATH-SETUP-TYPE
 TLV in the SRP object MUST be included for an LSP set up via the
 PCECC-based mechanism.

7.3. CCI Object

 The CCI object is used by the PCE to specify the forwarding
 instructions (label information in the context of this document) to
 the PCC and MAY be carried within a PCInitiate or PCRpt message for
 label download/report.
 CCI Object-Class is 44.
 CCI Object-Type is 1 for the MPLS label.
  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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                            CC-ID                              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |          Reserved1            |             Flags         |C|O|
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                 Label                 |     Reserved2         |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 //                        Optional TLV                         //
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                          Figure 8: CCI Object
 The fields in the CCI object are as follows:
 CC-ID:  A PCEP-specific identifier for the CCI information.  A PCE
    creates a CC-ID for each instruction; the value is unique within
    the scope of the PCE and is constant for the lifetime of a PCEP
    session.  The values 0 and 0xFFFFFFFF are reserved and MUST NOT be
    used.  Note that [SECURITY-ID] gives advice on assigning transient
    numeric identifiers, such as the CC-ID, so as to minimize security
    risks.
 Reserved1 (16 bit):  Set to 'zero' while sending; ignored on receipt.
 Flags (16 bit):  A field used to carry any additional information
    pertaining to the CCI.  Currently, the following flag bits are
    defined:
  • O bit (out-label) : If the bit is set to '1', it specifies the

label is the out-label, and it is mandatory to encode the next-

       hop information (via Address TLVs (Section 7.3.1) in the CCI
       object).  If the bit is not set, it specifies the label is the
       in-label, and it is optional to encode the local interface
       information (via Address TLVs in the CCI object).
  • C Bit (PCC allocation): If the bit is set to '1', it indicates

that the label allocation needs to be done by the PCC for the

       Central Controller Instruction.  A PCE sets this bit to request
       the PCC to make an allocation from its label space.  A PCC
       would set this bit to indicate that it has allocated the label
       and report it to the PCE.
  • All unassigned bits MUST be set to 'zero' at transmission and

ignored at receipt.

 Label (20-bit):  The label information.
 Reserved2 (12 bit):  Set to 'zero' while sending; ignored on receive.

7.3.1. Address TLVs

 [RFC8779] defines the IPV4-ADDRESS, IPV6-ADDRESS, and UNNUMBERED-
 ENDPOINT TLVs for the use of Generalized Endpoint.  The same TLVs can
 also be used in the CCI object to associate the next-hop information
 in the case of an outgoing label and local interface information in
 the case of an incoming label.  The next-hop information encoded in
 these TLVs needs to be a directly connected IP address/interface
 information.  If the PCC is not able to resolve the next-hop
 information, it MUST reject the CCI and respond with a PCErr message
 with Error-Type=31 (PCECC failure) and Error-value=5 (Invalid next-
 hop information).

8. Security Considerations

 As per [RFC8283], the security considerations for a PCE-based
 controller are a little different from those for any other PCE
 system.  That is, the operation relies heavily on the use and
 security of PCEP, so consideration should be given to the security
 features discussed in [RFC5440] and the additional mechanisms
 described in [RFC8253].  It further lists the vulnerability of a
 central controller architecture, such as a central point of failure,
 denial of service, and a focus for interception and modification of
 messages sent to individual Network Elements (NEs).
 In the PCECC operations, the PCEP sessions are also required to the
 internal routers, thus increasing the resources required for the
 session management at the PCE.
 The PCECC extension builds on the existing PCEP messages; thus, the
 security considerations described in [RFC5440], [RFC8231], and
 [RFC8281] continue to apply.  [RFC8253] specifies the support of
 Transport Layer Security (TLS) in PCEP, as it provides support for
 peer authentication, message encryption, and integrity.  It further
 provides mechanisms for associating peer identities with different
 levels of access and/or authoritativeness via an attribute in X.509
 certificates or a local policy with a specific accept-list of X.509
 certificates.  This can be used to check the authority for the PCECC
 operations.  Additional considerations are discussed in following
 sections.

8.1. Malicious PCE

 In this extension, the PCE has complete control over the PCC to
 download/remove the labels and can cause the LSPs to behave
 inappropriately and cause a major impact to the network.  As a
 general precaution, it is RECOMMENDED that this PCEP extension be
 activated on mutually authenticated and encrypted sessions across
 PCEs and PCCs belonging to the same administrative authority, using
 TLS [RFC8253], as per the recommendations and best current practices
 in BCP 195 [RFC7525].
 Further, an attacker may flood the PCC with the PCECC-related
 messages at a rate that exceeds either the PCC's ability to process
 them or the network's ability to send them, by either spoofing
 messages or compromising the PCE itself.  [RFC8281] provides a
 mechanism to protect the PCC by imposing a limit.  The same can be
 used for the PCECC operations as well.
 As specified in Section 5.5.3.1, a PCC needs to check if the label in
 the CCI object is in the range set aside for the PCE; otherwise, it
 MUST send a PCErr message with Error-Type=31 (PCECC failure) and
 Error-value=1 (Label out of range).

8.2. Malicious PCC

 The PCECC mechanism described in this document requires the PCE to
 keep labels (CCI) that it downloads and relies on the PCC responding
 (with either an acknowledgment or an error message) to request for
 LSP instantiation.  This is an additional attack surface by placing a
 requirement for the PCE to keep a CCI/label replica for each PCC.  It
 is RECOMMENDED that PCE implementations provide a limit on resources
 (in this case the CCI) a single PCC can occupy.  [RFC8231] provides a
 notification mechanism when such threshold is reached.

9. Manageability Considerations

9.1. Control of Function and Policy

 A PCE or PCC implementation SHOULD allow the PCECC capability to be
 enabled/disabled as part of the global configuration.  Section 6.1 of
 [RFC8664] list various controlling factors regarding the Path Setup
 Type.  They are also applicable to the PCECC Path Setup Types.
 Further, Section 6.2 of [RFC8664] describes the migration steps when
 the Path Setup Type of an existing LSP is changed.

9.2. Information and Data Models

 [RFC7420] describes the PCEP MIB; this MIB can be extended to get the
 PCECC capability status.
 The PCEP YANG module [PCEP-YANG] could be extended to enable/disable
 the PCECC capability.

9.3. Liveness Detection and Monitoring

 Mechanisms defined in this document do not imply any new liveness
 detection and monitoring requirements in addition to those already
 listed in [RFC5440].

9.4. Verify Correct Operations

 The operator needs the following information to verify that PCEP is
 operating correctly with respect to the PCECC Path Setup Type.
  • An implementation SHOULD allow the operator to view whether the

PCEP speaker sent the PCECC PST capability to its peer.

  • An implementation SHOULD allow the operator to view whether the

peer sent the PCECC PST capability.

  • An implementation SHOULD allow the operator to view whether the

PCECC PST is enabled on a PCEP session.

  • If one PCEP speaker advertises the PCECC PST capability, but the

other does not, then the implementation SHOULD create a log to

    inform the operator of the capability mismatch.
  • If a PCEP speaker rejects a CCI, then it SHOULD create a log to

inform the operator, giving the reason for the decision (local

    policy, label issues, etc.).

9.5. Requirements on Other Protocols

 PCEP extensions defined in this document do not put new requirements
 on other protocols.

9.6. Impact on Network Operations

 PCEP extensions defined in this document do not put new requirements
 on network operations.

10. IANA Considerations

10.1. PATH-SETUP-TYPE-CAPABILITY Sub-TLV Type Indicators

 [RFC8408] detailed the creation of the "PATH-SETUP-TYPE-CAPABILITY
 Sub-TLV Type Indicators" subregistry.  Further, IANA has allocated
 the following codepoint:
               +=======+==================+===========+
               | Value | Meaning          | Reference |
               +=======+==================+===========+
               | 1     | PCECC-CAPABILITY | RFC 9050  |
               +-------+------------------+-----------+
                 Table 2: PATH-SETUP-TYPE-CAPABILITY
                 Sub-TLV Type Indicators Subregistry
                               Addition

10.2. PCECC-CAPABILITY Sub-TLV's Flag Field

 This document defines the PCECC-CAPABILITY sub-TLV; IANA has created
 a new subregistry to manage the value of the PCECC-CAPABILITY sub-
 TLV's 32-bit Flag field.  New values are to be assigned by Standards
 Action [RFC8126].  Each bit should be tracked with the following
 qualities:
  • bit number (counting from bit 0 as the most significant bit)
  • capability description
  • defining RFC
 Currently, there is one allocation in this registry.
                   +======+============+===========+
                   | Bit  | Name       | Reference |
                   +======+============+===========+
                   | 0-30 | Unassigned | RFC 9050  |
                   +------+------------+-----------+
                   | 31   | Label      | RFC 9050  |
                   +------+------------+-----------+
                      Table 3: Initial Contents of
                      the PCECC-CAPABILITY Sub-TLV
                              Subregistry

10.3. PCEP Path Setup Type Registry

 [RFC8408] created a subregistry within the "Path Computation Element
 Protocol (PCEP) Numbers" registry called "PCEP Path Setup Types".
 IANA has allocated a new codepoint within this registry, as follows:
          +=======+============================+===========+
          | Value | Description                | Reference |
          +=======+============================+===========+
          | 2     | Traffic engineering path   | RFC 9050  |
          |       | is set up using PCECC mode |           |
          +-------+----------------------------+-----------+
             Table 4: Path Setup Type Registry Codepoint
                               Addition

10.4. PCEP Object

 IANA has allocated new codepoints in the "PCEP Objects" subregistry
 for the CCI object as follows:
   +==============+=============+=====================+===========+
   | Object-Class | Name        | Object-Type         | Reference |
   | Value        |             |                     |           |
   +==============+=============+=====================+===========+
   | 44           | CCI Object- | 0: Reserved         | RFC 9050  |
   |              | Type        | 1: MPLS Label       |           |
   |              |             | 2-15: Unassigned    |           |
   +--------------+-------------+---------------------+-----------+
             Table 5: PCEP Objects Subregistry Additions

10.5. CCI Object Flag Field

 IANA has created a new subregistry to manage the Flag field of the
 CCI object called "CCI Object Flag Field for MPLS Label".  New values
 are to be assigned by Standards Action [RFC8126].  Each bit should be
 tracked with the following qualities:
  • bit number (counting from bit 0 as the most significant bit)
  • capability description
  • defining RFC
 Two bits are defined for the CCI Object flag field in this document
 as follows:
      +======+======================================+===========+
      | Bit  | Description                          | Reference |
      +======+======================================+===========+
      | 0-13 | Unassigned                           |           |
      +------+--------------------------------------+-----------+
      | 14   | C Bit - PCC allocation               | RFC 9050  |
      +------+--------------------------------------+-----------+
      | 15   | O Bit - Specifies label is out-label | RFC 9050  |
      +------+--------------------------------------+-----------+
         Table 6: CCI Object Flag Field for MPLS Label Initial
                                Contents

10.6. PCEP-Error Object

 IANA has allocated new error types and error values within the "PCEP-
 ERROR Object Error Types and Values" subregistry of the "Path
 Computation Element Protocol (PCEP) Numbers" registry for the
 following errors:
    +============+===========+=======================+===========+
    | Error-Type | Meaning   | Error-value           | Reference |
    +============+===========+=======================+===========+
    | 6          | Mandatory | 17: CCI object        | RFC 9050  |
    |            | Object    | missing               |           |
    |            | missing   |                       |           |
    +------------+-----------+-----------------------+-----------+
    | 10         | Reception | 33: Missing PCECC     | RFC 9050  |
    |            | of an     | Capability sub-TLV    |           |
    |            | invalid   |                       |           |
    |            | object    |                       |           |
    +------------+-----------+-----------------------+-----------+
    | 19         | Invalid   | 16: Attempted PCECC   | RFC 9050  |
    |            | Operation | operations when PCECC |           |
    |            |           | capability was not    |           |
    |            |           | advertised            |           |
    |            |           |                       |           |
    |            |           | 17: Stateful PCE      |           |
    |            |           | capability was not    |           |
    |            |           | advertised            |           |
    |            |           |                       |           |
    |            |           | 18: Unknown Label     |           |
    +------------+-----------+-----------------------+-----------+
    | 31         | PCECC     | 1: Label out of range | RFC 9050  |
    |            | failure   |                       |           |
    |            |           | 2: Instruction failed |           |
    |            |           |                       |           |
    |            |           | 3: Invalid CCI        |           |
    |            |           |                       |           |
    |            |           | 4: Unable to allocate |           |
    |            |           | the specified CCI     |           |
    |            |           |                       |           |
    |            |           | 5: Invalid next-hop   |           |
    |            |           | information           |           |
    +------------+-----------+-----------------------+-----------+
     Table 7: PCEP-ERROR Object Error Types and Values Additions

11. References

11.1. Normative References

 [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
            Requirement Levels", BCP 14, RFC 2119,
            DOI 10.17487/RFC2119, March 1997,
            <https://www.rfc-editor.org/info/rfc2119>.
 [RFC5440]  Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation
            Element (PCE) Communication Protocol (PCEP)", RFC 5440,
            DOI 10.17487/RFC5440, March 2009,
            <https://www.rfc-editor.org/info/rfc5440>.
 [RFC5511]  Farrel, A., "Routing Backus-Naur Form (RBNF): A Syntax
            Used to Form Encoding Rules in Various Routing Protocol
            Specifications", RFC 5511, DOI 10.17487/RFC5511, April
            2009, <https://www.rfc-editor.org/info/rfc5511>.
 [RFC7525]  Sheffer, Y., Holz, R., and P. Saint-Andre,
            "Recommendations for Secure Use of Transport Layer
            Security (TLS) and Datagram Transport Layer Security
            (DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May
            2015, <https://www.rfc-editor.org/info/rfc7525>.
 [RFC8126]  Cotton, M., Leiba, B., and T. Narten, "Guidelines for
            Writing an IANA Considerations Section in RFCs", BCP 26,
            RFC 8126, DOI 10.17487/RFC8126, June 2017,
            <https://www.rfc-editor.org/info/rfc8126>.
 [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
            2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
            May 2017, <https://www.rfc-editor.org/info/rfc8174>.
 [RFC8231]  Crabbe, E., Minei, I., Medved, J., and R. Varga, "Path
            Computation Element Communication Protocol (PCEP)
            Extensions for Stateful PCE", RFC 8231,
            DOI 10.17487/RFC8231, September 2017,
            <https://www.rfc-editor.org/info/rfc8231>.
 [RFC8253]  Lopez, D., Gonzalez de Dios, O., Wu, Q., and D. Dhody,
            "PCEPS: Usage of TLS to Provide a Secure Transport for the
            Path Computation Element Communication Protocol (PCEP)",
            RFC 8253, DOI 10.17487/RFC8253, October 2017,
            <https://www.rfc-editor.org/info/rfc8253>.
 [RFC8281]  Crabbe, E., Minei, I., Sivabalan, S., and R. Varga, "Path
            Computation Element Communication Protocol (PCEP)
            Extensions for PCE-Initiated LSP Setup in a Stateful PCE
            Model", RFC 8281, DOI 10.17487/RFC8281, December 2017,
            <https://www.rfc-editor.org/info/rfc8281>.
 [RFC8408]  Sivabalan, S., Tantsura, J., Minei, I., Varga, R., and J.
            Hardwick, "Conveying Path Setup Type in PCE Communication
            Protocol (PCEP) Messages", RFC 8408, DOI 10.17487/RFC8408,
            July 2018, <https://www.rfc-editor.org/info/rfc8408>.
 [RFC8664]  Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W.,
            and J. Hardwick, "Path Computation Element Communication
            Protocol (PCEP) Extensions for Segment Routing", RFC 8664,
            DOI 10.17487/RFC8664, December 2019,
            <https://www.rfc-editor.org/info/rfc8664>.
 [RFC8779]  Margaria, C., Ed., Gonzalez de Dios, O., Ed., and F.
            Zhang, Ed., "Path Computation Element Communication
            Protocol (PCEP) Extensions for GMPLS", RFC 8779,
            DOI 10.17487/RFC8779, July 2020,
            <https://www.rfc-editor.org/info/rfc8779>.

11.2. Informative References

 [RFC4655]  Farrel, A., Vasseur, JP., and J. Ash, "A Path Computation
            Element (PCE)-Based Architecture", RFC 4655,
            DOI 10.17487/RFC4655, August 2006,
            <https://www.rfc-editor.org/info/rfc4655>.
 [RFC7025]  Otani, T., Ogaki, K., Caviglia, D., Zhang, F., and C.
            Margaria, "Requirements for GMPLS Applications of PCE",
            RFC 7025, DOI 10.17487/RFC7025, September 2013,
            <https://www.rfc-editor.org/info/rfc7025>.
 [RFC7399]  Farrel, A. and D. King, "Unanswered Questions in the Path
            Computation Element Architecture", RFC 7399,
            DOI 10.17487/RFC7399, October 2014,
            <https://www.rfc-editor.org/info/rfc7399>.
 [RFC7420]  Koushik, A., Stephan, E., Zhao, Q., King, D., and J.
            Hardwick, "Path Computation Element Communication Protocol
            (PCEP) Management Information Base (MIB) Module",
            RFC 7420, DOI 10.17487/RFC7420, December 2014,
            <https://www.rfc-editor.org/info/rfc7420>.
 [RFC7491]  King, D. and A. Farrel, "A PCE-Based Architecture for
            Application-Based Network Operations", RFC 7491,
            DOI 10.17487/RFC7491, March 2015,
            <https://www.rfc-editor.org/info/rfc7491>.
 [RFC8232]  Crabbe, E., Minei, I., Medved, J., Varga, R., Zhang, X.,
            and D. Dhody, "Optimizations of Label Switched Path State
            Synchronization Procedures for a Stateful PCE", RFC 8232,
            DOI 10.17487/RFC8232, September 2017,
            <https://www.rfc-editor.org/info/rfc8232>.
 [RFC8283]  Farrel, A., Ed., Zhao, Q., Ed., Li, Z., and C. Zhou, "An
            Architecture for Use of PCE and the PCE Communication
            Protocol (PCEP) in a Network with Central Control",
            RFC 8283, DOI 10.17487/RFC8283, December 2017,
            <https://www.rfc-editor.org/info/rfc8283>.
 [RFC8741]  Raghuram, A., Goddard, A., Karthik, J., Sivabalan, S., and
            M. Negi, "Ability for a Stateful Path Computation Element
            (PCE) to Request and Obtain Control of a Label Switched
            Path (LSP)", RFC 8741, DOI 10.17487/RFC8741, March 2020,
            <https://www.rfc-editor.org/info/rfc8741>.
 [PCECC]    Li, Z. (., Dhody, D., Zhao, Q., Ke, K., Khasanov, B.,
            Fang, L., Zhou, C., Zhang, B., Rachitskiy, A., and A.
            Gulida, "The Use Cases for Path Computation Element (PCE)
            as a Central Controller (PCECC).", Work in Progress,
            Internet-Draft, draft-ietf-teas-pcecc-use-cases-07, 8
            March 2021, <https://datatracker.ietf.org/doc/html/draft-
            ietf-teas-pcecc-use-cases-07>.
 [PCEP-YANG]
            Dhody, D., Ed., Hardwick, J., Beeram, V., and J. Tantsura,
            "A YANG Data Model for Path Computation Element
            Communications Protocol (PCEP)", Work in Progress,
            Internet-Draft, draft-ietf-pce-pcep-yang-16, 22 February
            2021, <https://datatracker.ietf.org/doc/html/draft-ietf-
            pce-pcep-yang-16>.
 [PCECC-SR] Li, Z., Peng, S., Negi, M. S., Zhao, Q., and C. Zhou,
            "PCEP Procedures and Protocol Extensions for Using PCE as
            a Central Controller (PCECC) for Segment Routing (SR) MPLS
            Segment Identifier (SID) Allocation and Distribution.",
            Work in Progress, Internet-Draft, draft-ietf-pce-pcep-
            extension-pce-controller-sr-02, 25 March 2021,
            <https://datatracker.ietf.org/doc/html/draft-ietf-pce-
            pcep-extension-pce-controller-sr-02>.
 [PCECC-SRv6]
            Li, Z., Peng, S., Geng, X., and M. S. Negi, "PCEP
            Procedures and Protocol Extensions for Using PCE as a
            Central Controller (PCECC) for SRv6", Work in Progress,
            Internet-Draft, draft-dhody-pce-pcep-extension-pce-
            controller-srv6-06, 21 February 2021,
            <https://datatracker.ietf.org/doc/html/draft-dhody-pce-
            pcep-extension-pce-controller-srv6-06>.
 [PCE-ID]   Li, C., Chen, M., Wang, A., Cheng, W., and C. Zhou, "PCE
            Controlled ID Space", Work in Progress, Internet-Draft,
            draft-li-pce-controlled-id-space-08, 22 February 2021,
            <https://datatracker.ietf.org/doc/html/draft-li-pce-
            controlled-id-space-08>.
 [SECURITY-ID]
            Gont, F. and I. Arce, "Security Considerations for
            Transient Numeric Identifiers Employed in Network
            Protocols", Work in Progress, Internet-Draft, draft-gont-
            numeric-ids-sec-considerations-06, 5 December 2020,
            <https://datatracker.ietf.org/doc/html/draft-gont-numeric-
            ids-sec-considerations-06>.

Acknowledgments

 We would like to thank Robert Tao, Changjing Yan, Tieying Huang,
 Avantika, and Aijun Wang for their useful comments and suggestions.
 Thanks to Julien Meuric for shepherding this document and providing
 valuable comments.  Thanks to Deborah Brungard for being the
 responsible AD.
 Thanks to Victoria Pritchard for a very detailed RTGDIR review.
 Thanks to Yaron Sheffer for the SECDIR review.  Thanks to Gyan Mishra
 for the Gen-ART review.
 Thanks to Alvaro Retana, Murray Kucherawy, Benjamin Kaduk, Roman
 Danyliw, Robert Wilton, Éric Vyncke, and Erik Kline for the IESG
 review.

Contributors

 Dhruv Dhody
 Huawei Technologies
 Divyashree Techno Park, Whitefield
 Bangalore 560066
 Karnataka
 India
 Email: dhruv.ietf@gmail.com
 Satish Karunanithi
 Huawei Technologies
 Divyashree Techno Park, Whitefield
 Bangalore 560066
 Karnataka
 India
 Email: satishk@huawei.com
 Adrian Farrel
 Old Dog Consulting
 United Kingdom
 Email: adrian@olddog.co.uk
 Xuesong Geng
 Huawei Technologies
 China
 Email: gengxuesong@huawei.com
 Udayasree Palle
 Email: udayasreereddy@gmail.com
 Katherine Zhao
 Futurewei Technologies
 Email: katherine.zhao@futurewei.com
 Boris Zhang
 Telus Ltd.
 Toronto
 Canada
 Email: boris.zhang@telus.com
 Alex Tokar
 Cisco Systems
 Slovakia
 Email: atokar@cisco.com

Authors' Addresses

 Zhenbin Li
 Huawei Technologies
 Huawei Bld., No.156 Beiqing Rd.
 Beijing
 100095
 China
 Email: lizhenbin@huawei.com
 Shuping Peng
 Huawei Technologies
 Huawei Bld., No.156 Beiqing Rd.
 Beijing
 100095
 China
 Email: pengshuping@huawei.com
 Mahendra Singh Negi
 RtBrick Inc
 N-17L, 18th Cross Rd, HSR Layout
 Bangalore 560102
 Karnataka
 India
 Email: mahend.ietf@gmail.com
 Quintin Zhao
 Etheric Networks
 1009 S Claremont St.
 San Mateo, CA 94402
 United States of America
 Email: qzhao@ethericnetworks.com
 Chao Zhou
 HPE
 Email: chaozhou_us@yahoo.com
/home/gen.uk/domains/wiki.gen.uk/public_html/data/pages/rfc/rfc9050.txt · Last modified: 2021/07/15 17:59 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki