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.¶
The operator MUST provision, on every PCE of a state-sync PCE set,
the computation priority of every PCE of the set, including the local
PCE, so that all the PCEs that handle LSPs in a common LSP association
group are aware of each other and of each other's computation
priority; see Section 7.2 and Section 7.1. Note that there is no need for the PCC to be
aware of this. The computation priority is a number ranging from 0 to
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. 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 can be set
at the global level, so that the highest priority PCE handles all
path computations, or at a more granular level (per association group
or per PCC), so that a PCE has the highest priority for only a subset
of LSPs or association groups. The most specific configured level
applies; see Section 7.2 for the precedence rules. If a
PCE has no computation priority configured for a remote PCE at any
level, it MUST treat that PCE as having priority 0. 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 (see Section 1).¶
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 4.3) and MUST set the D flag on the state-sync session
toward the highest priority PCE; the D flag MUST be unset on 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 MUST NOT update it by its own decision. When a PCE receives a
PCRpt with the D flag set on a state-sync session, it is granted
control over the LSP as a regular PCE would be. A PCE that has been
granted control by sub-delegation MUST NOT sub-delegate the LSP
further, even if, from its own view, another PCE has a higher
computation priority: the view of the delegated PCE governs the LSPs
it received from its PCCs. Sub-delegation is therefore never deeper
than one level.¶
Sub-delegation is not visible to the PCC. The PCC continues to
interact only with the PCE to which it delegated the LSP: it receives
PCUpd messages only from that PCE and sends its PCRpt messages to it.
The sub-delegated PCE never acts toward the PCC directly; it may not
even have a PCEP session with that PCC.¶
When a PCE holds the delegation for an LSP directly from the PCC,
is the highest priority PCE, and needs to update this LSP, it MUST
send a PCUpd message to all state-sync sessions and to the PCC
session on which it received the delegation. The D flag MUST be unset
in the PCUpd sent on the state-sync sessions and MUST be set in the
PCUpd sent to the PCC. In the case of sub-delegation, the computing
PCE MUST send the PCUpd to all state-sync sessions (it has no direct
delegation from a PCC). The D flag MUST be set in the PCUpd sent on
the state-sync session to the PCE that sub-delegated this LSP and
MUST be unset in the PCUpd sent on the other state-sync sessions.¶
Sending the PCUpd to all state-sync sessions keeps all PCEs aware
of the path updates that have been sent toward the PCC but not yet
confirmed by a corresponding PCRpt, 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 that PCC 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 forward the PCUpd to the PCC; it keeps the update only for state
tracking and for subsequent synchronization logic.¶
The PCUpd is acknowledged through the PCRpt originated by the
PCC. When the PCC receives the PCUpd from the delegated PCE, it
acknowledges it with a PCRpt as per [RFC8231]. On receiving this PCRpt, the
delegated PCE applies the forwarding rules defined in Section 4.3 on the state-sync sessions, so the acknowledgement
is relayed to the computing PCE. The PCRpt received by a PCE that did
not originate the PCUpd is not required to carry the Stateful PCE
Request Parameters (SRP) object [RFC8231], and any SRP-ID-number it carries is
scoped to that PCEP session (per [RFC8231]). Therefore, a PCE MUST NOT rely on the SRP object
to correlate a PCRpt received on a state-sync session with a PCUpd it
sent.¶
The computing PCE MUST correlate the relayed PCRpt with
its PCUpd using the identity of the LSP, that is, the
SPEAKER-ENTITY-ID TLV together with the PLSP-ID, which are preserved
end to end by the forwarding rules. The ORIGINAL-LSP-DB-VERSION TLV
establishes that the relayed PCRpt is fresher than the state the PCUpd
was computed from. The content of the PCRpt (including any
LSP-ERROR-CODE TLV [RFC8231]) tells
the computing PCE whether its update was applied or rejected. The
delegated PCE handles the SRP object on its session with the PCC as
per [RFC8231].¶
A failure may be detected through loss of
reachability to the peer, state-sync session failure, or a local
policy that marks the PCE as temporarily unusable.
The trigger and threshold are determined by local policy. The
Redelegation Timeout and State Timeout procedures of
[RFC8231] do not apply to
state-sync sessions.¶
On failure of a state-sync session, the local PCE:¶
- MUST remove the failed peer from the source list of every LSP
state in which it appears. If the source list becomes empty, the
LSP state
MUST be retained and marked as stale until refreshed or removed
by the procedures of Section 4.4; it MUST NOT be removed because of the
failure. Stale state SHOULD continue to be used for path
computation.¶
- MUST remove the PCC information entries whose only source was
the failed peer (Section 4.5.2). LSP state is retained
even when no PCC information entry remains for its PCC.¶
- MUST consider any sub-delegation received from the failed
peer as revoked, and MUST NOT send further PCUpd messages for
those LSPs.¶
- MUST re-evaluate the sub-delegation of every LSP it had
sub-delegated to the failed peer, using the same priority policy
for the reachable state-sync peers, and either
sub-delegate the LSP to the next highest priority PCE (D flag set
in the PCRpt sent to that PCE, unset towards the others) or, if it
is itself the highest priority reachable PCE, perform the
computation itself.¶
No re-synchronisation with the other peers is triggered by the
failure of a single state-sync session, as the same LSP state is
normally still held, with the owner PCC and the other peers
remaining as sources. If the PCC detects failure of the PCE to which it
delegated the LSP, the PCC uses the existing delegation procedures
of [RFC8231], and the newly
delegated PCE applies Section 4.5. The PCC does not
need to know
the PCE priority ranking.¶
A PCE that receives a sub-delegation MUST accept it and act as
computing PCE for that LSP even if, from its own view, a PCE with a
higher computation priority is reachable. The sub-delegating PCE
uses its own view for the LSPs received from its PCCs; the
receiving PCE cannot sub-delegate them again. When the PCEs of a set have
different views of which peers are reachable, different LSPs of an
association group may therefore temporarily have different
computing PCEs. This gives less optimal results for association-based
computation (Section 4.5.3) but cannot create a
message loop or a computation loop, because the forwarding rules
and the limit of one sub-delegation still apply. Such a
condition SHOULD be reported to the operator (Section 7.5).¶
When a state-sync session to a higher priority PCE is
re-established, the state synchronisation of Section 4.2 MUST complete before any sub-delegation towards
that PCE. This means that the End Of Synchronization Marker has been
received from that PCE. The delegated PCE MAY then revert the
sub-delegation to it (D flag set in the PCRpt sent to the
returning PCE, unset towards the previous computing PCE). Local policy
determines whether to revert. As with the initial switch-over,
reversion may disrupt the existing path if the two PCEs compute
different results (Section 2.2).¶
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). Each PCE records this information,
together with the source(s) it was learned from (the direct
session with the PCC and/or state-sync peers), in a PCC
information database. This database is used, in particular, to
select a peer with a session to a given PCC (Section 4.7).¶
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
send this notification for each of the PCCs with which it
currently has a session established. The PCE MUST send these
notifications prior to the State Synchronization (described in
Section 4.2). Note that the PCNtf can be used to carry
multiple NOTIFICATION objects, one for each PCC. On receiving
this notification, the PCE adds the information to its PCC
information database and records the sending peer as a
source.¶
- Notification-value=2: Remove PCC's Open Information. When a
PCE with state-sync capability clears the state of a PCC whose
session has gone down, that is, on expiry of the State Timeout
Interval of [RFC8231], it MUST
send this notification to other state-sync PCEs with the
SPEAKER-ENTITY-ID TLV with values that identify the PCC. It is
not sent on session down while the PCE still retains the PCC's
state. On receiving this notification, the PCE removes the
sending peer from the sources of the entry, and removes the
entry when no source is left.¶
A PCE may receive this Notification from multiple PCEs that a
given PCC has a session with, and uses the recorded sources in a
similar way to the source list of Section 4.4.
In case of the termination of a state-sync session, the entries
whose only source was that peer are removed (Section 4.5.1); upon re-establishment, the
Notification-value=1 exchange rebuilds them before LSP state
synchronization starts.¶
All LSPs belonging to the same association group MUST be
configured with the same computation priorities for the PCEs. A PCE
only computes a path using an association-group constraint if it
has control of all of the LSPs in the association group, either by
delegation from the PCC or by sub-delegation. Otherwise, an
implementation MAY use a local policy on the PCE to decide whether
it does not compute a path at all for this set of LSPs, or whether
it computes a path by relaxing the association-group constraint.¶
The same local policy applies if the PCE does not control all
LSPs in the group because the priorities for an association group
are not configured
consistently on all PCEs, because a state-sync session is down
(Section 4.5.1), or because a newly added PCE has not yet
been provisioned (and is therefore treated as priority 0, Section 4.5). No LSP state is removed in any of
these cases.¶