PCEP Procedures and Protocol Extensions for
Using PCE as a Central Controller (PCECC) of LSPsHuawei TechnologiesHuawei Bld., No.156 Beiqing Rd.Beijing 100095Chinalizhenbin@huawei.comHuawei TechnologiesHuawei Bld., No.156 Beiqing Rd.Beijing100095Chinapengshuping@huawei.comRtBrick IncN-17L, 18th Cross Rd, HSR LayoutBangaloreKarnataka560102Indiamahend.ietf@gmail.comEtheric Networks1009 S CLAREMONT STSAN MATEOCA94402USAqzhao@ethericnetworks.comHPEchaozhou_us@yahoo.com
Routing
PCE Working GroupThe Path Computation Element (PCE) is a core component of Software-
Defined Networking (SDN) systems. 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.PCE was developed to derive paths for MPLS Label Switched Paths
(LSPs), which are supplied to the head end of the LSP using the Path
Computation Element Communication Protocol (PCEP). But SDN has a broader
applicability than signaled MPLS and GMPLS traffic-engineered
(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.A PCE-based 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 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.
The Path Computation Element (PCE) was developed to offload the
path computation function from routers in an MPLS traffic-engineered
network. Since then, the role and function of the PCE has grown to
cover a number of other uses (such as GMPLS ) and to allow
delegated control and PCE-initiated use of network
resources .According to , 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 .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) .
This protocol was later extended to allow a PCE to send unsolicited
requests to the network for LSP establishment . introduces the architecture for PCE as a central
controller as an extension of the architecture described in
and assumes the continued use of PCEP as the protocol used between
PCE and PCC. further examines the motivations and applicability
for PCEP as a Southbound Interface (SBI), and introduces the implications for the
protocol. describes the use cases for
the PCECC architecture.A PCE-based 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 LSP can be
calculated/setup/initiated and the label forwarding entries can also be
downloaded through a centralized PCE server to each network devices
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 basic PCECC mode in ), 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 PCECC for Segment Routing (SR) are specified in and .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 when, and only when, they
appear in all capitals, as shown here.The terminology used in this document is the same as that described in the draft
.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.Note that 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. This is also described in section 3.1.2. of
. For the purpose
of this document, it is assumed that the 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 the range via possible PCEP extensions as well (see ).
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 itself, and the labels are
allocated by the PCC, in this case, the PCE should request the allocation from
PCC as described in .The following key requirements should be considered when
designing the PCECC-based solution:A PCEP speaker supporting this draft needs to have the capability to
advertise its PCECC capability to its peers.A PCEP speaker need means to identify PCECC-based LSP in the
PCEP messages.PCEP procedures need to allow for PCC-based label allocations.PCEP procedures need to provide a mean to update (or clean up) the label-download entry to the PCC.PCEP procedures need to provide a mean to synchronize the labels between
the PCE and the PCC via PCEP messages.Active stateful PCE is described in . PCE
as a central controller (PCECC) reuses the existing active stateful PCE
mechanism as much as possible to control LSPs.Several new functions are required in PCEP to support PCECC. This document extends the
existing messages to support the new functions required by PCECC:a PCEP message described in .
PCInitiate message is used to set up PCE-Initiated LSP based on 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.a PCEP message described in .
PCRpt message is used to send PCECC LSP Reports. It is also extended to report the set of Central Controller Instructions (CCI) (label forwarding instructions in the context of this document) received
from the PCE. See for more details.a PCEP message described in .
PCUpd message is used to send PCECC LSP Update.The new functions defined in this document are mapped onto the PCEP messages as
shown in .FunctionMessagePCECC 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 This document specifies a new PCEP object called CCI (see ) for the encoding of 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 central controller instructions in PCEP. The PCEP messages are extended in this document to handle the PCECC operations.During the PCEP Initialization Phase, PCEP Speakers (PCE or PCC)
advertise their support of PCECC extensions.This document defines a new Path Setup Type (PST) for PCECC, as follows:PST = TBD1: Path is set up via PCECC mode.A PCEP speaker MUST indicate its support of the function described
in this document by sending a PATH-SETUP-TYPE-CAPABILITY TLV in the
OPEN object with this new PST included in the PST list.This document also defines the PCECC Capability sub-TLV . PCEP
speakers use this sub-TLV to exchange information about their PCECC
capability. If a PCEP speaker includes PST=TBD1 in the PST List of the
PATH-SETUP-TYPE-CAPABILITY TLV then the receiving peer MUST also include the
PCECC Capability sub-TLV (with the L bit set to 1) inside the PATH-SETUP-TYPE-CAPABILITY TLV. If the
sub-TLV is absent or the L bit is not set to 1, then the receiving PCEP speaker MUST send a PCErr message
with Error-Type 10 (Reception of an invalid object) and Error-Value
TBD2 (Missing PCECC Capability sub-TLV) and MUST then close the PCEP
session. If a PCEP speaker receives a PATH-SETUP-TYPE-CAPABILITY TLV
with a PCECC-CAPABILITY sub-TLV, but the PST list does not contain
PST=TBD1, then the PCEP speaker MUST ignore the PCECC-CAPABILITY sub-TLV.The presence of the PST=TBD1 and PCECC Capability sub-TLV (with the L bit set to 1, see ) in a PCC's OPEN Object indicates that the PCC is willing to function as a PCECC client for label download instructions.
The presence of the PST=TBD1 and PCECC Capability sub-TLV (with the L bit set to 1) in a PCE's OPEN message indicates that the PCE is interested in function as a PCECC server for label download instructions.The PCEP extensions for PCECC for label download MUST NOT be used if one or
both PCEP Speakers have not included the PST=TBD1 or the PCECC Capability sub-TLV (with the L bit set to 1) in their
respective OPEN message. If a PCEP speaker which supports the extensions of this draft but did not advertise this capability attempts a PCECC operation, then a PCErr message with Error-Type=19 (Invalid Operation) and Error-Value=TBD3 (Attempted PCECC operations when PCECC capability was not advertised) MUST be generated by its peer and the PCEP session will be terminated. If a PCEP speaker does not recognize the PCECC Capability sub-TLV, it will ignore the sub-TLV in accordance with and .A PCC or a PCE MUST include both the PCECC-CAPABILITY sub-TLV (with the L bit set to 1) and the STATEFUL-PCE-CAPABILITY TLV () (with the I flag set ) in the OPEN Object to support the extensions defined in this document. If the PCECC-CAPABILITY sub-TLV is advertised and the STATEFUL-PCE-CAPABILITY TLV is not advertised in the OPEN Object, it MUST send a PCErr message with Error-Type=19 (Invalid Operation) and Error-value=TBD4 (stateful PCE capability was not advertised) and terminate the session. This error is also triggered if the PCECC-CAPABILITY sub-TLV is advertised and the I flag in the STATEFUL-PCE-CAPABILITY TLV is not set. The PCEP messages pertaining to a PCECC MUST include PATH-SETUP-TYPE
TLV in the SRP object
to clearly identify that PCECC LSP is intended.The LSP Instantiation operation is the same as defined in .In order to set up a PCE-Initiated LSP based on the PCECC mechanism, a PCE
sends PCInitiate message with Path Setup Type set for PCECC
(see ) to the ingress PCC.An LSP-IDENTIFIER TLV MUST be included for PCECC LSPs, the tuple uniquely identifies the LSP in the network. The LSP object is included in the central controller instructions (label download ) to identify the PCECC LSP for this instruction. The PLSP-ID is the original identifier used by the ingress PCC, so a transit/egress LSR could have multiple central controller instructions that have the same PLSP-ID. The PLSP-ID in combination with the source (in LSP-IDENTIFIER TLV) MUST be unique. The PLSP-ID is included for maintainability reasons to ease debugging. As per , 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 the PCEP session as described in .The ingress PCC MUST also set D (Delegate) flag (see ) and C (Create) flag (see ) in the LSP object of the PCRpt message to the PCE. The PCC responds with a PCRpt message with the status set to "GOING-UP" and carrying the assigned PLSP-ID. 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 instruction within a PCEP session. Each PCC further responds with the PCRpt messages including the central controller instruction (CCI) and the LSP objects.Note that the label forwarding instructions (see ) from PCECC are sent after the initial PCInitiate and PCRpt message exchange with the ingress PCC. This is done so that the 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.The ingress node would receive one CCI object with O bit (out-label) set. The transit node(s) would receive two CCI objects with the in-label CCI without an O bit set and the out-label CCI with O bit set. The egress node would receive one CCI object without O bit set. A node can determine its role based on the setting of the O bit in the CCI object(s) and the LSP-IDENTIFIER TLV in the LSP object.The LSP deletion operation for PCE-Initiated PCECC LSP is the same as defined
in . The PCE should further
perform Label entry clean up operation as described in
for the corresponding LSP.The PCE-Initiated PCECC LSP setup sequence is shown in .Once the label operations are completed, the PCE SHOULD send a PCUpd message to the
ingress PCC. The PCUpd message is as per .The PCECC LSPs are considered to be 'up' by default (on receipt of PCUpd message from PCE).
The ingress MAY 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).In the case where the label allocations are made by the PCC itself (see ), the PCE could request an allocation to be made by the PCC, and
then the PCC would send a PCRpt with the allocated label encoded in
the CC-ID object as shown in in the configuration sequence from the egress towards the ingress along the path.It should be noted that in this example, 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 inform the
transit PCC without setting the C bit to 1 in the CCI object for out-label but the C bit is set to 1 for in-label so the transit node make the label allocation (for the in-label) and report to the PCE. Similarly, the C bit is unset towards the ingress to complete all the label allocation for the 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 PST set for PCECC (see ) and D (Delegate)
flag (see ) set in the LSP object.When a PCE receives the initial PCRpt message with D flag and PST Type set to TBD1, it SHOULD calculate the path and 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 instruction within a PCEP session. Each PCC further responds with the PCRpt messages including the central controller instruction (CCI) and the LSP objects.Once the central controller instructions (label operations) are completed, the PCE MUST send the PCUpd message to the
ingress PCC. Per , 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 PCECC LSPs
is the same as defined in . If the PCE receives
a PCRpt message for LSP deletion then it does label clean up operation as
described in for the corresponding LSP.The Basic PCECC LSP setup sequence is as shown in .In the case where the label allocations are made by the PCC itself (see ), the PCE could request an allocation to be made by the PCC, and
then the PCC would send a PCRpt with the allocated label encoded in
the CC-ID object as shown in .In the case where the label allocations are made by the PCC itself (see ), 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 .The new central controller instructions (CCI) for the label operations in PCEP is done via the PCInitiate message, 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. In order to set up an LSP based on PCECC, the PCE sends a PCInitiate message
to each node along the path to download the Label instruction as described in and
.
The CCI object MUST be included, along with the LSP object in the PCInitiate message. The LSP-IDENTIFIER 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 which 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=TBD5
(PCECC failure) and Error-value=TBD6 (Label out of range) and MUST include the
SRP object to specify the error is for the corresponding label update via 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=TBD5
(PCECC failure) and Error-value=TBD7 (instruction failed) and MUST include the
SRP object to specify the error is for the corresponding label update via PCInitiate message.A new PCEP object for central controller instructions (CCI) is defined in .In order to delete an LSP based on PCECC, the PCE sends a 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=TBD8, "Unknown Label" and
MUST include the SRP object to specify the error is for the
corresponding label clean up (via PCInitiate message).
The R flag in the SRP object defined in specifies
the deletion of Label Entry in the PCInitiate message.As per , following the removal of the Label forwarding instruction, the PCC MUST send a PCRpt message.
The SRP object in the PCRpt 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 ), the removal procedure remains the same, adding the sequence constraint.In case of a modification of a PCECC LSP with a new path, a PCE sends
a PCUpd message to the
ingress PCC. But to follow the make-before-break procedures, the PCECC first updates new instructions based on the updated LSP and then update to the ingress to switch traffic, before cleaning up the former instructions. A new CC-ID is used to identify the updated instruction, the existing identifiers in the LSP object 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 clean up operation for the former LSP as described in .The PCECC LSP Update sequence is shown in .
The modified PCECC LSPs are considered to be 'up' by default.
The ingress MAY further choose to deploy a data plane check
mechanism and report the status back to the PCE via a PCRpt message.In the case where the label allocations are made by the PCC itself (see ), the procedure remains the same.As described in , 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 central controller instructions 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 instruction that it wants to take control of. Further, as described in , 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 clean up 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 case of PCC-initiated PCECC LSP, the control over the orphaned LSP at the ingress PCC is taken over by the mechanism specified in to request delegation. The control over the central controller instructions is described above using .The purpose of Central Controllers Instructions 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 and
.As per LSP State Synchronization , a PCC reports the state of
its LSPs to the PCE using PCRpt messages and as per , 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 Central Controllers Instructions 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.As mentioned before, an ingress PCC MAY choose to apply any OAM mechanism to check the status
of LSP in the Data plane and MAY further send its status in a PCRpt message to the PCE.
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 done by the PCC.
The PCC SHOULD allocate the Label
and SHOULD report to the PCE using the PCRpt
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 done 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. Else, it MUST send a PCErr message with Error-Type =
TBD5 ("PCECC failure") and Error Value = TBD9 ("Invalid CCI"). If
the value of the Label in the CCI object is valid, but the PCC is unable to
allocate it, it MUST send a PCErr message with Error-Type =
TBD5 ("PCECC failure") and Error Value = TBD10 ("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 removal of the
central controller instruction as per this document.As per , when a stateful PCE is deployed for setting up TE paths, it may be desirable to report the binding label to the stateful PCE for the purpose of enforcing end-to-end TE. In the case of the PCECC, the binding label may be allocated by the PCE itself as described in this section. This procedure is
thus applicable for all path setup types including PCECC.A P flag in the LSP object is introduced in to indicate the allocation needs to be made by the PCE. A PCC would set this bit to 1 (and carry the TE-PATH-BINDING TLV in the LSP object) to request for
allocation of the binding label by the PCE in the PCReq or PCRpt
message. A PCE would also set this bit to 1 to indicate that the
binding label is allocated by PCE and encoded in the PCRep,
PCUpd, or PCInitiate message (the TE-PATH-BINDING TLV is present in
LSP object). Further, a PCE would set this bit to 0 to indicate
that the allocation is done by the PCC instead.The ingress PCC could request the binding label to be allocated by the PCE
via a PCRpt message as per . The delegate flag (D-flag) MUST
also be set for this LSP. The TE-PATH-BINDING TLV MUST be included with no Binding
Value. The PCECC would allocate the binding label and further respond to
ingress PCC with PCUpd message as per and MUST include the
TE-PATH-BINDING TLV in an LSP object. The P flag in the LSP object would be set to 1 to indicate that the allocation is made by the PCE.The PCE could allocate the binding label on its own accord for a PCE-
Initiated (or delegated) LSP. The allocated binding label needs to be
informed to the PCC. The PCE would use the
PCInitiate message or PCUpd message towards the
PCC and MUST include the TE-PATH-BINDING TLV in the LSP object. The P flag in the LSP object would be set to 1 to indicate that the allocation is made by the PCE.Before a PCE can allocate a binding label the PCECC capability MUST be exchanged on the PCEP session. Note that the CCI object is not used for binding allocation; this is done to maintain consistency with the rest of the binding label/SID procedures as per .As defined in , 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 that specify the set of objects that the message can carry.
An implementation MUST form the PCEP messages using the object
ordering specified in this document.LSP-IDENTIFIERS TLV MUST be included in the LSP object for PCECC
LSP.The message formats in this document are specified using Routing
Backus-Naur Form (RBNF) encoding as specified in .The PCInitiate message can be used to download or remove the labels, this document extends the message as shown below - When PCInitiate message is used for the central controller instructions (labels), the SRP, LSP, and CCI objects MUST be present.
The SRP object is defined in and 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 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 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=TBD11 (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 the CCI object.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, PCC MUST send a PCErr message with Error-Type = TBD5 ("PCECC failure") and Error Value = TBD9 ("Invalid CCI"). Other instances of the CCI object if present, MUST be ignored.At most two instances of the CCI object can be included, in the case of transit LSR to encode both in-coming and out-going label forwarding instructions. Other instances MUST be ignored for P2P LSP. If the transit LSR did not receive two CCI object with one of them having the O bit set and another with O bit unset, it MUST send a PCErr message with Error-Type = TBD5 ("PCECC failure") and Error Value = TBD9 ("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.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 acknowledgemnt to PCInitiate message.
When PCRpt message is used to report the central controller instructions (labels), the LSP and CCI objects MUST be present.
The LSP object is defined in 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 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=TBD11 (CCI object missing).
Two CCI objects can be included in the PCRpt message
for a transit LSR.The PCEP objects defined in this document are compliant with the PCEP object
format defined in . This document defines new optional TLVs for use in the OPEN Object.The PCECC-CAPABILITY sub-TLV is an optional TLV for use in the OPEN Object
for PCECC capability advertisement in PATH-SETUP-TYPE-CAPABILITY TLV. Advertisement of the PCECC capability
implies support of LSPs that are set up through PCECC as per PCEP extensions
defined in this document.Its format is shown in .The type of the TLV is TBD12 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 allows PCECC 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.The PATH-SETUP-TYPE TLV is defined in ;
this document defines a new PST value:
PST = TBD1: Path is set up via PCECC mode.On a PCRpt/PCUpd/PCInitiate message, the PST=TBD1 in PATH-SETUP-TYPE TLV
in SRP object indicates that this LSP was set up via a PCECC-based mechanism.The Central Controller Instructions (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 PCInitiate or PCRpt message for label download/report.CCI Object-Class is TBD13.CCI Object-Type is 1 for the MPLS Label.The fields in the CCI object are as follows:
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.Set to zero while sending, ignored on receive. 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 IPV4-ADDRESS TLV or
IPV6-ADDRESS TLV or UNNUMBERED-IPV4-ID-ADDRESS TLV 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 IPV4-ADDRESS TLV or
IPV6-ADDRESS TLV or UNNUMBERED-IPV4-ID-ADDRESS TLV in
the CCI object).C Bit (PCC Allocation): If the bit is set to 1, it indicates that
the allocation needs to be done by the PCC for this 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 CC-ID and report it
to the PCE.All unassigned bits MUST be set to zero at transmission and ignored at receipt.The Label information.Set to zero while sending, ignored on receive.This document defines the following TLVs for 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 address TLVs are as follows:
an IPv4 address.an IPv6 address.a Node ID / Interface ID tuple.a pair of (global IPv6
address, interface ID) tuples.[Note to the RFC Editor - remove this section before publication, as well as remove the reference to RFC 7942.]This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in
. The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs. Please note that the listing of any
individual implementation here does not imply endorsement by the
IETF. Furthermore, no effort has been spent to verify the
information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features. Readers
are advised to note that other implementations may exist.According to , "this will allow reviewers and working
groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented
protocols more mature. It is up to the individual working groups
to use this information as they see fit".The PCE function was developed in the ONOS open source platform. This extension was implemented on a private version as a proof of concept for PCECC.
Organization: HuaweiImplementation: Huawei's PoC based on ONOSDescription: PCEP as a southbound plugin was added to ONOS. To support PCECC, an earlier version of this I-D was implemented. Refer https://wiki.onosproject.org/display/ONOS/PCEP+ProtocolMaturity Level: PrototypeCoverage: PartialContact: satishk@huawei.comThe security considerations described in and
apply to the extensions described in
this document. Additional considerations related to a malicious PCE are introduced.PCE has complete control over PCC to update the labels and can
cause the LSP's to behave inappropriately and cause major impact
to the network. As a general precaution, it is RECOMMENDED that
this PCEP extension be activated on authenticated and encrypted
sessions across PCEs and PCCs belonging to the same administrative
authority, using Transport Layer Security (TLS) ,
as per the recommendations and best current practices in . A PCE or PCC implementation SHOULD allow to configure to
enable/disable PCECC capability as a global configuration. describes the PCEP MIB, this MIB can be extended to get the
PCECC capability status.The PCEP YANG module could be extended
to enable/disable PCECC capability.Mechanisms defined in this document do not imply any new liveness
detection and monitoring requirements in addition to those already
listed in .Mechanisms defined in this document do not imply any new operation
verification requirements in addition to those already listed in
and .PCEP extensions defined in this document do not put new requirements
on other protocols.PCEP extensions defined in this document do not put new requirements
on network operations.IANA is requested to allocate the following
TLV Type Indicator values within the "PCEP TLV Type Indicators" sub-registry of the PCEP Numbers registry:ValueMeaningReferenceTBD14IPV4-ADDRESS TLVThis documentTBD15IPV6-ADDRESS TLVThis documentTBD16UNNUMBERED-IPV4-ID-ADDRESS TLVThis documentTBD17LINKLOCAL-IPV6-ID-ADDRESS TLVThis document requested the creation of "PATH-SETUP-TYPE-CAPABILITY Sub-TLV Type Indicators" sub-registry. Further IANA is requested to allocate the following code-point:ValueMeaningReferenceTBD12PCECC-CAPABILITYThis documentThis document defines the
PCECC-CAPABILITY sub-TLV and requests that IANA to create a new sub-registry to
manage the value of the PCECC-CAPABILITY sub-TLV's 32-bits Flag field. New
values are to be assigned by Standards Action . Each bit
should be tracked with the following qualities:Bit number (counting from bit 0 as the most significant bit)Capability descriptionDefining RFCCurrently, there is one allocation in this registry.BitNameReference31LabelThis document0-30UnassignedThis document created a sub-registry within the "Path Computation Element
Protocol (PCEP) Numbers" registry called "PCEP Path Setup Types".
IANA is requested to allocate a new code point within this registry,
as follows:ValueDescriptionReferenceTBD1Traffic engineering path isThis documentset up using PCECC modeIANA is requested to allocate new code-point in the "PCEP Objects" sub-registry for the CCI object as follows:Object-Class ValueNameReferenceTBD13CCI Object-TypeThis document0Reserved 1MPLS LabelIANA is requested to create a new sub-registry to manage the Flag field
of the CCI object called "CCI Object 16-bits Flag Field". New
values are to be assigned by Standards Action . Each bit
should be tracked with the following qualities:Bit number (counting from bit 0 as the most significant bit)Capability descriptionDefining RFCTwo bits to be defined for the CCI Object flag field in this document as follows:BitDescriptionReference0-13UnassignedThis document14C Bit - PCC allocationThis document15O Bit - Specifies labelThis documentis out-labelIANA is requested to allocate new error types and error values within
the "PCEP-ERROR Object Error Types and Values" sub-registry of the
PCEP Numbers registry for the following errors:
MeaningMandatory Object missing.
CCI object missingReception of an invalid object.
Missing PCECC Capability sub-TLVInvalid operation.
Attempted PCECC operations when PCECC capability was not advertisedStateful PCE capability was not advertisedUnknown LabelPCECC failure.
Label out of range.Instruction failed.Invalid CCI.Unable to allocate the specified CCI.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 I-D and providing valuable comments.