A computation priority is necessary to ensure that a single PCE
will perform the computation for all the LSPs in an association group:
this will allow for a more optimized LSP placement and will prevent
computation loops.¶
All PCEs in the network that are handling LSPs in a common LSP
association group MUST be aware of each other, including the
computation priority of each PCE. Note that there is no need for PCC
to be aware of this. The computation priority is a number ranging
from 0-7, where 0 represents the lowest priority, while 7 represents
the highest. The PCE having the highest priority MUST be responsible
for the computation. If several PCEs have the same priority value,
their IP address MUST be used as a tie-breaker to provide a rank:
the highest IP address has more priority. It is worth noting that when an
IPv4 address MUST be converted to its IPv4-mapped IPv6 form before
comparison, per [RFC4291].¶
The computation priorities are configured through local operator
policy on each PCE.
The priority for local and remote PCEs could be set at the global level
so the highest
priority PCE will handle all path computations, or more granular, so a
PCE may have the highest priority for only a subset of LSPs or
association groups. See Section 8.1 for more details.
In future, PCEs could also advertise and discover these parameters via PCEP,
those details are out
of the scope of this document and left for future specification.¶
A PCEP Speaker receiving a PCRpt from a PCC with the D flag set
that does not have the highest computation priority, MUST forward
the PCRpt on all state-sync sessions (as per Section 3.3) and MUST set the D flag on the state-sync session
toward the highest priority PCE, the D flag will be unset for all other
state-sync sessions. This behavior is similar to the delegation
behavior handled at the PCC side and is called a sub-delegation (the
PCE sub-delegates the control of the LSP to another PCE). When a PCEP
Speaker sub-delegates an LSP to another PCE; it loses control of the
LSP and cannot update it anymore by its own decision. When a PCE
receives a PCRpt with the D flag set on a state-sync session, as a regular
PCE, it is granted control over the LSP.¶
If failure of the highest priority PCE is detected, or if the
state-sync session between the local PCE and the highest priority PCE
has failed, control of the LSP can be moved to the next highest
priority PCE or returned to the PCE that received delegation from the
PCC. Failure detection in this context includes loss of reachability to
the target PCE, state-sync session failure, or a local implementation
policy marking that PCE as temporarily unusable. The trigger and
threshold for this decision are local-policy driven. If the PCC detects
failure of the PCE to which it
delegated the LSP, the PCC can use the existing delegation procedures in
PCRpt (setting or clearing the D flag toward the selected PCE). If a
PCE detects failure of a state-sync peer to which it sub-delegated the
LSP, the detecting PCE re-evaluates the sub-delegation using the same
priority policy and signals the selected state-sync peer using the D
flag in the PCRpt sent on the state-sync session. No new PCC awareness
of the full priority ranking is required.¶
When a PCE has the delegation for an LSP and needs to update this
LSP, it MUST send a Path Compute Update (PCUpd) message to all state-sync sessions and to
the PCC session on which it received the delegation. The D-Flag would
be unset in the PCUpd for state-sync sessions, whereas the D-Flag would
be set for the PCC. In the case of sub-delegation, the computing PCE
will send the PCUpd only to all state-sync sessions (as it has no
direct delegation from a PCC). The D-Flag would be set for the
state-sync session to the PCE that sub-delegated this LSP, and the
D-Flag would be unset for other state-sync sessions.¶
Sending PCUpd to all state-sync sessions keeps all PCEs aligned on
in-flight control actions and avoids transient state divergence during
re-optimization.¶
The PCUpd sent over a state-sync session MUST contain the
SPEAKER-ENTITY-ID TLV in the LSP Object (the value used must identify
the target PCC). The PLSP-ID used is the original PLSP-ID generated by
the PCC and learned from the forwarded PCRpt. If a PCE receives a
PCUpd on a state-sync session without the SPEAKER-ENTITY-ID TLV, it
MUST discard the PCUpd and MUST reply with a PCErr message using
error-type=6 (Mandatory Object missing) and error-value=TBD1
(SPEAKER-ENTITY-ID TLV missing).¶
A receiving PCE that currently holds delegation for that LSP on an
active PCEP session to the PCC identified by SPEAKER-ENTITY-ID MUST
forward the PCUpd to the appropriate PCC that delegated the LSP
originally and MUST remove the SPEAKER-ENTITY-ID TLV from the LSP
Object. A receiving PCE that does not currently hold delegation for that
LSP on an active PCEP session to that PCC MUST NOT attempt PCC-side
forwarding; it keeps the update only for state tracking and for
subsequent synchronization logic.¶
The acknowledgement of the PCUpd is done through a cascaded
mechanism. Acknowledgement remains driven by the PCC-originated PCRpt:
when the PCC receives the PCUpd from the local PCE, it acknowledges it
with a PCRpt as per [RFC8231]. When
receiving the new PCRpt from the PCC, the local PCE uses the forwarding
rules defined in Section 3.3 on the state-sync sessions, so
the acknowledgement is relayed to the computing PCE. However, the PCRpt
received by a PCE that did not originate the PCUpd is not required to
carry the SRP object, and where it is present the SRP-ID-number is
scoped to that PCEP session (per [RFC8231]). Therefore, a PCE MUST NOT rely on the SRP object
to correlate the PCRpt with the PCUpd. Any processing to handle
correlation or PCUpd/PCRpt reordering is implementation specific and
outside the scope of this document.¶
To ensure uniform information across all PCEs, each PCE needs to relay the information it receives from the PCCs in the Open message to other PCEs via the state-sync session. This includes various PCC capabilities and parameters such as Maximum Segment Identifier (SID) Depth (MSD).¶
As per [RFC5440], the PCEP Notification message (PCNtf) can be sent by a PCEP speaker to notify its peer of a specific event. A PCE MUST notify the other state-sync PCEs of the information it receives from the PCC's open message. Section 7.14 of [RFC5440] specifies the NOTIFICATION object. This document adds a new Notification-type=TBD6 (Inter-PCE State-sync) and two Notification-values (Notification-value=1 (Add PCC's Open Information) and Notification-value=2 (Remove PCC's Open Information)).¶
For Notification-type=TBD6, the NOTIFICATION object encodes the SPEAKER-ENTITY-ID TLV (with values that identify the PCC) and any other TLV that can be carried inside the OPEN object as a way to signal the PCC's information it received via the open message to other state-sync PCEs.¶
- Notification-value=1: Add PCC's Open Information. On session establishment with a PCC, a PCE with state-sync capability MUST send this notification to other state-sync PCEs with the SPEAKER-ENTITY-ID TLV with values that identify the PCC and any other TLVs encoded in the OPEN object received from the PCC. On session establishment with a state-sync PCE, the PCE MUST also exchange notifications for each of the PCCs for which it already has a session established. The PCE MUST exchange this notification prior to the State Synchronization (described in Section 3.2). Note that the PCNtf can be used to carry multiple NOTIFICATION objects, one for each PCC. On receiving this notification, PCE adds the information to its database.¶
- Notification-value=2: Remove PCC's Open Information. On session down with a PCC, a PCE with state-sync capability MUST send this notification to other state-sync PCEs with the SPEAKER-ENTITY-ID TLV with values that identify the PCC to remove the information from the database.¶
A PCE may receive this Notification from multiple PCEs that a given PCC has a session and can use a similar mechanism as described in Section 3.4 to keep the freshest state. In case of the termination of a state-sync session, this information is also cleaned up alongside LSP-DB.¶
All LSPs belonging to the same association group have the
same computation priorities for the PCEs. A PCE only computes
a path using an association-group constraint if it has delegation for
all of the LSPs in the association group. In this case, an implementation
MAY use a local policy on PCE to decide if PCE does not compute a path
at all for this set of LSP, or if it can compute a path by relaxing
the association-group constraint.¶