Path Computation Element Communication Protocol (PCEP) Procedures and Extensions for Using the PCE as a Central Controller (PCECC) of LSPs
updated by
- rfc-9756 — Update to the IANA Path Communication Element Protocol (PCEP) Numbers Registration Procedures and the Allowance of Experimental Error Codes
Extracted elements (29)
Label-forwarding instructions are sent after the initial PCInitiate/PCRpt exchange with the ingress PCC so that the PLSP-ID and other LSP identifiers assigned by the ingress can be included in the subsequent label-forwarding instruction PCInitiate messages to all nodes along the path.
PCECC LSP updates follow make-before-break: the PCE first downloads new label instructions for the updated path, then instructs the ingress to switch traffic via PCUpd, and only after receiving the PCRpt acknowledgment does it clean up the former label instructions.
To support scenarios where the PCC owns its label space, the C bit in the CCI object allows the PCE to request PCC-side label allocation (C=1, Label=0 for any allocation; C=1, Label=n for a specific value), enabling PCECC even when the PCE does not control the label space.
A legacy PCEP speaker that does not recognize the PCECC Capability sub-TLV will ignore it per RFC 8408 and RFC 5440. On receipt of the unsupported PST=2 in an RP/SRP object, it will send PCErr Error-Type=21, Error-value=1 (Unsupported path setup type) and terminate the session.
All PCEP messages pertaining to a PCECC LSP MUST include the PATH-SETUP-TYPE TLV in the SRP object with PST set to '2' to clearly identify that the PCECC LSP is intended.
An LSP-IDENTIFIERS TLV MUST be included for PCECC LSPs; it uniquely identifies the LSP in the network. The PLSP-ID in combination with the source in the LSP-IDENTIFIERS TLV MUST be unique.
Following removal of a label-forwarding instruction via label cleanup CCI, the PCC MUST send a PCRpt message with the SRP-ID-number from the triggering PCInitiate and the R flag set in the SRP object.
For a transit LSR in a P2P LSP via PCECC, two CCI objects are expected (incoming and outgoing labels). If the transit LSR did not receive two CCI objects with one O bit set and one unset, it MUST send PCErr Error-Type=31, Error-value=3 (Invalid CCI).
For label download CCI, the CCI object MUST be included along with the LSP object in the PCInitiate message. If a PCC receives a label out of the PCE's reserved range, it MUST send PCErr Error-Type=31, Error-value=1 (Label out of range).
For PCC-based label allocation (C bit set), the PCC MUST try to allocate the label and MUST report to the PCE via a PCRpt or PCErr message. If the PCC wishes to withdraw or modify a previously assigned label, it MUST send a PCRpt message.
If a PCECC operation is attempted when both speakers have not agreed to PCECC capability in OPEN messages, the receiver MUST send a PCErr with Error-Type=19, Error-value=16 and terminate the PCEP 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 with Error-Type=10, Error-value=33 (Missing PCECC Capability sub-TLV) and terminate the PCEP session.
If the PCECC-CAPABILITY sub-TLV is advertised but 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 with Error-Type=19, Error-value=17 and terminate the session.
Once all label operations (CCI) are completed, the PCE MUST send a PCUpd message to the ingress PCC with the D flag set, after which the PCECC LSP is considered 'up' by default.
PCECC LSPs MUST be delegated to a PCE at all times. For PCC-initiated PCECC LSPs, a PCC MUST delegate the LSP by sending a PCRpt with the PST set to '2' and D (Delegate) flag set.
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 that reserved label space for all nodes along the path.
The PCC MUST support the removal of CCI as one of the behaviors applied on expiration of the State Timeout Interval timer, ensuring PCE failure does not cause immediate service disruption but enables automatic cleanup.
Central Controller Instructions (CCI) are conveyed via PCInitiate messages for label download and cleanup, and acknowledged via PCRpt messages. The CC-ID uniquely identifies each CCI within a PCEP session; values 0 and 0xFFFFFFFF are reserved.
PCECC Capability Advertisement uses three elements in the OPEN message: a new PST value of 2 in PATH-SETUP-TYPE-CAPABILITY TLV, a new PCECC-CAPABILITY sub-TLV with L bit set, and the STATEFUL-PCE-CAPABILITY TLV with I flag set.
The PCInitiate message is extended to carry a <PCE-initiated-lsp-central-control> element consisting of SRP, LSP, and one or more CCI objects. For cleanup, the R (remove) bit MUST be set in the SRP object.
The PCRpt message is extended with a <central-control-report> element consisting of optional SRP, LSP, and one or more CCI objects, used for CCI state synchronization and acknowledgment of PCInitiate messages.
IANA created a new 'PCECC-CAPABILITY Sub-TLV Flag Field' subregistry (bit 31 = Label, bits 0-30 unassigned, assignment by Standards Action) and a new 'CCI Object Flag Field for MPLS Label' subregistry (bit 14 = C bit PCC allocation, bit 15 = O bit out-label, bits 0-13 unassigned).
This document adds new PCEP error codes: Error-Type=6 value 17 (CCI object missing), Error-Type=10 value 33 (Missing PCECC Capability sub-TLV), Error-Type=19 values 16-18, and new Error-Type=31 (PCECC failure) with values 1-5 covering label range, instruction, CCI validity, allocation, and next-hop errors.
This document allocates codepoint 1 (PCECC-CAPABILITY) in the PATH-SETUP-TYPE-CAPABILITY Sub-TLV Type Indicators subregistry, codepoint 2 (PCECC mode) in the PCEP Path Setup Types registry, and Object-Class 44 with Object-Type 1 (MPLS Label) for the new CCI Object in PCEP Objects.
A malicious or compromised PCE has complete control to download/remove labels and can cause LSPs to behave inappropriately. It is RECOMMENDED that PCECC extensions be activated only on mutually authenticated and encrypted PCEP sessions using TLS (RFC 8253) per BCP 195.
A malicious PCC creates an attack surface by requiring the PCE to maintain a CCI/label replica for each PCC. It is RECOMMENDED that PCE implementations impose a per-PCC limit on CCI resources; RFC 8231 provides a notification mechanism when such a threshold is reached.
A PCE-initiated PCECC LSP transitions through: PCInitiate to ingress (PLSP-ID=0) → PCC responds PCRpt GOING-UP → PCE downloads labels to all nodes via PCInitiate (CC-ID per node) → PCE sends PCUpd → ingress reports UP. The LSP is 'up' by default on receipt of PCUpd.
The CCI Object (Object-Class=44, Object-Type=1 for MPLS label) contains: CC-ID (32 bits), Reserved1 (16 bits), Flags (16 bits) with C bit (PCC allocation, bit 14) and O bit (out-label, bit 15), Label (20 bits), Reserved2 (12 bits), and optional TLVs.
The PCECC-CAPABILITY sub-TLV has Type=1, Length=4 octets, and a 32-bit Flags field. Bit 31 (L bit) indicates willingness to handle PCECC-based Central Controller Instructions for label download; all other bits are unassigned.