As per [
RFC 8697], LSPs are associated with other LSPs with which they interact by adding them to a common association group. As described in [
RFC 8697], the association group is uniquely identified by the combination of the following fields in the ASSOCIATION object: Association Type, Association ID, Association Source, and (if present) Global Association Source or Extended Association ID.
This document defines a new Association type, called "Disjoint Association" (2), based on the generic ASSOCIATION object. This new Association type is also called "DAT", for "Disjoint Association Type".
[
RFC 8697] specifies the mechanism for the capability advertisement of the Association types supported by a PCEP speaker by defining an ASSOC-Type-List TLV to be carried within an OPEN object. This capability exchange for the DAT (2)
MUST be done before using the disjoint association. Thus, the PCEP speaker
MUST include the DAT in the ASSOC-Type-List TLV and
MUST receive the same from the PCEP peer before using the Disjoint Association Group (DAG) in PCEP messages.
This Association type is considered to be both dynamic and operator-configured in nature. As per [
RFC 8697], the association group could be manually created by the operator on the PCEP peers, and the LSPs belonging to this association are conveyed via PCEP messages to the PCEP peer; alternately, the association group could be created dynamically by the PCEP speaker, and both the association group information and the LSPs belonging to the association group are conveyed to the PCEP peer. The Operator-configured Association Range
MUST be set for this association-type to mark a range of Association Identifiers that are used for operator-configured associations to avoid any Association Identifier clash within the scope of the Association Source. (Refer to [
RFC 8697].)
A Disjoint Association Group can have two or more LSPs, but a PCE may be limited in the number of LSPs it can take into account when computing disjointness. If a PCE receives more LSPs in the group than it can handle in its computation algorithm, it
SHOULD apply disjointness computation to only a subset of LSPs in the group. The subset of disjoint LSPs will be decided by PCE as a local policy. Local polices
MAY define the computational behavior for the other LSPs in the group. For example, the PCE may provide no path, a shortest path, or a constrained path based on relaxing disjointness, etc. The disjoint status of the computed path is informed to the PCC via the DISJOINTNESS-STATUS TLV (see
Section 5.2).
There are different types of disjointness identified by the flags (T, S, N, and L) in the DISJOINTNESS-CONFIGURATION TLV (see
Section 5.2). All LSPs in a particular Disjoint Association Group
MUST use the same combination of T, S, N, and L flags in the DISJOINTNESS-CONFIGURATION TLV. If a PCEP peer receives a PCEP message for LSPs belonging to the same Disjoint Association Group but having an inconsistent combination of T, S, N, and L flags, the PCEP peer
MUST NOT add the LSPs to the Disjoint Association Group and
MUST reply with a PCErr with Error-Type 26 (Association Error) and Error-value 6 (Association information mismatch).
A particular LSP
MAY be associated to multiple Disjoint Association Groups, but in that case, the PCE
SHOULD try to consider all the Disjoint Association Groups during path computation, if possible. Otherwise, a local policy
MAY define the computational behavior. If a PCE does not support such a path computation, it
MUST NOT add the LSP into the association group and
MUST return a PCErr with Error-Type 26 (Association Error) and Error-value 7 (Cannot join the association group).
The Disjoint Association Group (ASSOCIATION object with Association type = 2 for DAT)
MUST carry the following TLV:
-
DISJOINTNESS-CONFIGURATION TLV: Used to communicate some disjointness configuration parameters. This is applicable for all PCEP messages that include DAG.
In addition, the Disjoint Association Group (ASSOCIATION object with Association type = 2 for DAT)
MAY carry the following TLVs:
-
DISJOINTNESS-STATUS TLV: Used to communicate the status of the computed disjointness. This is applicable for messages from a PCE to a PCC only (i.e., PCUpd, PCInitiate, or PCRep messages).
-
VENDOR-INFORMATION-TLV: Used to communicate arbitrary vendor-specific behavioral information, described in [RFC 7470].
-
OF-List TLV: Used to communicate the disjointness objective function. See Section 5.3.
The DISJOINTNESS-CONFIGURATION TLV is shown in the following figure:
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 = 46 | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags |T|P|S|N|L|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
Type:
-
46
-
Length:
-
Fixed value of 4 bytes.
-
Flags:
-
-
L (Link Diverse) bit:
-
When set, this indicates that the computed paths within the Disjoint Association Group MUST NOT have any link in common.
-
N (Node Diverse) bit:
-
When set, this indicates that the computed paths within the Disjoint Association Group MUST NOT have any node in common.
-
S (SRLG Diverse) bit:
-
When set, this indicates that the computed paths within the Disjoint Association Group MUST NOT share any SRLG (Shared Risk Link Group).
-
P (Shortest Path) bit:
-
When set, this indicates that the computed path of the LSP SHOULD satisfy all the constraints and objective functions first without considering the diversity constraint. This means that all of the LSPs with P flag set in the association group are computed first, as if the disjointness constraint has not been configured; then, with those LSPs fixed, the other LSPs with P flag unset in the association group are computed by taking into account the disjointness constraint. The role of P flag is further described with examples in Section 5.5.
-
T (Strict Disjointness) bit:
-
When set, if disjoint paths cannot be found, the PCE MUST return no path for LSPs that could not be disjoint. When unset, the PCE is allowed to relax disjointness by either applying a requested objective function (cf. Section 5.3) or using the local policy if no objective function is requested (e.g., using a lower disjoint type (link instead of node) or fully relaxing disjointness constraint). See Section 5.6 for further details.
-
Unassigned bits:
-
Unassigned bits are considered reserved. They MUST be set to 0 on transmission and MUST be ignored on receipt.
If a PCEP speaker receives a Disjoint Association Group (ASSOCIATION object with Association type = 2 for DAT) without the DISJOINTNESS-CONFIGURATION TLV, it
SHOULD reply with a PCErr Error-Type 6 (Mandatory Object missing) and Error-value 15 (DISJOINTNESS-CONFIGURATION TLV missing).
The DISJOINTNESS-STATUS TLV uses the same format as the DISJOINTNESS-CONFIGURATION TLV with a different type 47 (in the TLV). The L, N, and S flags are set if the respective disjointness criterion was requested and the computed paths meet it. The P flag indicates that the computed path is the shortest path (computed first without taking disjointness constraints into consideration but considering other constraints).
The T flag has no meaning in the DISJOINTNESS-STATUS TLV and
MUST NOT be set while sending and
MUST be ignored on receipt.
Any document defining a new flag for the DISJOINTNESS-CONFIGURATION TLV automatically defines a new flag with the same name and in the same location in DISJOINTNESS-STATUS TLV; the semantics of the flag in the DISJOINTNESS-STATUS TLV
MUST be specified in the document that specifies the flag in the DISJOINTNESS-CONFIGURATION TLV.
An objective function (OF)
MAY be applied to the disjointness computation to drive the PCE computation behavior. In this case, the OF-List TLV (defined in [
RFC 5541]) is used as an optional TLV in the ASSOCIATION object. Whereas the PCEP OF-List TLV allows multiple OF-codes inside the TLV, a sender
SHOULD include a single OF-code in the OF-List TLV when included in the Association Group, and the receiver
MUST consider the first OF-code only and ignore others if included.
To minimize the common shared resources (Node, Link, or SRLG) between a set of paths during path computation, three new OF-codes are defined:
MSL
-
-
Name:
-
Minimize the number of Shared (common) Links.
-
Objective Function Code:
-
15
-
Description:
-
Find a set of paths such that it passes through the least number of shared (common) links.
-
A network comprises a set of N links {Li, (i=1...N)}.
-
A path P passes through K links {Lpi,(i=1...K)}.
-
A set of paths {P1...Pm} have L links that are common to more than one path {Lci,(i=1...L)}.
-
Find a set of paths such that the value of L is minimized.
MSS
-
-
Name:
-
Minimize the number of Shared (common) SRLGs.
-
Objective Function Code:
-
16
-
Description:
-
Find a set of paths such that it passes through the least number of shared (common) SRLGs.
-
A network comprises a set of N links {Li, (i=1...N)}.
-
A path P passes through K links {Lpi,(i=1...K)} belonging to unique M SRLGs {Spi,(i=1..M)}.
-
A set of paths {P1...Pm} have L SRLGs that are common to more than one path {Sci,(i=1...L)}.
-
Find a set of paths such that the value of L is minimized.
MSN
-
-
Name:
-
Minimize the number of Shared (common) Nodes.
-
Objective Function Code:
-
17
-
Description:
-
Find a set of paths such that they pass through the least number of shared (common) nodes.
-
A network comprises a set of N nodes {Ni, (i=1...N)}.
-
A path P passes through K nodes {Npi,(i=1...K)}.
-
A set of paths {P1...Pm} have L nodes that are common to more than one path {Nci,(i=1...L)}.
-
Find a set of paths such that the value of L is minimized.
If the OF-List TLV is included in the ASSOCIATION object, the first OF-code inside the OF object
MUST be one of the disjoint OFs defined in this document. If this condition is not met, the PCEP speaker
MUST respond with a PCErr message with Error-Type 10 (Reception of an invalid object) and Error-value 32 (Incompatible OF code).
[
RFC 5440] defines a mechanism for the synchronization of a set of path computation requests by using the SVEC object, which specifies the list of synchronized requests that can be either dependent or independent. The SVEC object identifies the relationship between the set of path computation requests, identified by 'Request-ID-number' in the RP (Request Parameters) object. [
RFC 6007] further clarifies the use of the SVEC list for synchronized path computations when computing dependent requests and describes a number of usage scenarios for SVEC lists within single-domain and multi-domain environments.
The SVEC object includes a Flags field that indicates the potential dependency between the set of path computation requests in a similar way as the Flags field in the TLVs defined in this document. The path computation request in the Path Computation Request (PCReq) message
MAY use both the SVEC and ASSOCIATION objects to identify the related path computation request, as well as the DAG. The PCE
MUST try to find a path that meets both the constraints. It is possible that the diversity requirement in the association group is different from the one in the SVEC object. The PCE
MUST consider both the objects (including the flags set inside the objects) as per the processing rules and aim to find a path that meets both of these constraints. In case no such path is possible, the PCE
MUST send a Path Computation Reply (PCRep) with a NO-PATH object indicating path computation failure, as per [
RFC 5440]. It should be noted that the LSPs in the association group can be fully same or partially overlapping with the LSPs grouped by the SVEC object in PCReq message.
Some examples of usage are listed below:
-
PCReq with SVEC object with node-diverse bit=1 (LSP1,LSP2) and DAG with S=1 (LSP1,LSP2) - both node- and SRLG-diverse path between LSP1 and LSP2.
-
PCReq with SVEC object with link-diverse bit=1 (LSP1,LSP2) and DAG with L=1 (LSP1,LSP3) - link-diverse paths between LSP1 and LSP2 and between LSP1 and LSP3. If the DAG is part of the stateful database, any future change in LSP3 will have an impact on LSP1. But any future change in LSP2 will have no impact on LSP1, as LSP2 is part of SVEC object (which is considered once on receipt of the PCReq message only).
This document defines three new OF-codes in
Section 5.3 to maximize diversity as much as possible. In other words, new OF-codes allow specification of minimization of common shared resources (Node, Link, or SRLG) among a set of paths during path computation.
It may be interesting to note that the diversity flags in the SVEC object and OF for diversity can be used together. Some examples of usage are listed below:
-
SVEC object with node-diverse bit=1 - ensure full node diversity.
-
SVEC object with node-diverse bit=1 and OF=MSS - full node diversity with as much SRLG diversity as possible.
-
SVEC object with domain-diverse bit=1 [RFC 8685]; node-diverse bit=1, and OF=MSS - full domain and node diversity with as much SRLG diversity as possible.
-
SVEC object with node-diverse bit=1 and OF=MSN - ensure full node diversity.
In the last example above, it is interesting to note that "OF" becomes redundant as "SVEC object" ensures full node diversity; however, this specification does not prohibit redundant constraints while using "SVEC object" and "OF" together for diversity.
As mentioned in
Section 5.2, the P flag (when set) indicates that the computed path of the LSP
SHOULD satisfy all constraints and objective functions first without considering the diversity constraint.
This means that an LSP with the P flag set should be placed first, as if the disjointness constraint has not been configured, while the other LSPs in the association with the P flag unset should be placed by taking into account the disjointness constraint. Setting the P flag changes the relationship between LSPs to a one-sided relationship (LSP 1 with P=0 depends on LSP 2 with P=1, but LSP 2 with P=1 does not depend on LSP 1 with P=0). Multiple LSPs in the same Disjoint Association Group may have the P flag set. In such a case, those LSPs may not be disjoint from each other but will be disjoint from other LSPs in the group that have the P flag unset.
This could be required in some primary/backup scenarios where the primary path should use the more optimal path available (taking into account the other constraints). When disjointness is computed, it is important for the algorithm to know that it should try to optimize the path of one or more LSPs in the Disjoint Association Group (for instance, the primary path), while other paths are allowed to be costlier (compared to a similar path without the disjointness constraint). Without such a hint, the disjointness algorithm may set a path for all LSPs that may not completely fulfill the customer's requirement.
_________________________________________
/ \
/ +------+ \
| | PCE | |
| +------+ |
| |
| |
| +------+ 10 +------+ |
CE1 ****| PE 1 | ----- R1 ---- R2 ------- | PE 2 |**** CE2
| +------+ | | +------+ |
| | | |
| | | |
| +------+ | | +------+ |
CE3 ****| PE 3 | ----- R3 ---- R4 ------- | PE 4 |**** CE4
| +------+ \ | / +------+ |
| \ | 10 / |
\ +-- R5 --------- R6 /
\_________________________________________/
Note: In
Figure 4, the cost of all the links is 1, unless explicitly marked otherwise.
In the figure above, a customer has two dual-homed sites (CE1/CE3 and CE2/CE4). Let us consider that this customer wants two link disjoint paths between the two sites. Due to physical meshing, the customer wants to use CE1 and CE2 as the primary (and CE3 and CE4 are hosted in a remote site for redundancy purpose).
Without any hint (constraint) provided, the PCE may compute the two link disjoint LSPs together, leading to PE1->PE2 using path PE1->R1->R2->PE2 and PE3->PE4 using PE3->R3->R4->PE4. In this case, even if the disjointness constraint is fulfilled, the path from PE1 to PE2 does not use the best optimal path available in the network (path delay may be higher); the customer requirement is thus not completely fulfilled.
The usage of the P flag allows the PCE to know that a particular LSP should be tied to the best path, as if the disjointness constraint was not requested.
In our example, if the P flag is set to the LSP PE1->PE2, the PCE should use the path PE1->R1->R3->R4->R2->PE2 for this LSP, while the other LSP should be link disjoint from this path. The second LSP will be placed on PE3->R5->R6->PE4, as it is allowed to be costlier.
Driving the PCE disjointness computation may be done in other ways, for instance, setting a metric boundary reflecting a path delay boundary. Other constraints may also be used.
The P flag allows to simply express that the disjointness constraint should not make the LSP worst.
Any constraint added to a path disjointness computation may reduce the chance to find suitable paths. The usage of the P flag, as any other constraint, may prevent finding a disjoint path. In the example above, if we consider that router R5 is down and if PE1->PE2 has the P flag set, there is no room available to place PE3->PE4 (the link disjointness constraint cannot be fulfilled). If PE1->PE2 has the P flag unset, the algorithm may be able to place PE1->PE2 on the R1->R2 link leaving room for PE3->PE4 using the R3->R4 link. When using the P flag or any additional constraint on top of the disjointness constraint, the user should be aware that there is less chance to fulfill the disjointness constraint.
_________________________________________
/ \
/ +------+ \
| | PCE | |
| +------+ |
| |
| |
| +------+ 10 +------+ |
CE1 ****| PE 1 | ----- R1 ---- R2 ------- | PE 2 |**** CE2
| +------+ | \ | +------+ |
| | \2 | |
| | \ | |
| +------+ | \ | +------+ |
CE3 ****| PE 3 | ----- R3 ---- R4 ------- | PE 4 |**** CE4
| +------+ +------+ |
| |
\ /
\_________________________________________/
Note: In
Figure 5, the cost of all the links is 1, unless explicitly marked otherwise.
In the figure above, we still consider the same previous requirements, so PE1->PE2 LSP should be optimized (P flag set), while PE3->PE4 should be link disjoint and may use a costlier path.
Regarding PE1->PE2, there are two paths that are satisfying the constraints (ECMP): PE1->R1->R4->R2->PE2 (path 1) and PE1->R1->R3->R4->R2->PE2 (path 2). An implementation may choose one of the paths.
If the implementation elects only one path, there is a chance that picking up one path may prevent link disjointness. In our example, if path 2 is used for PE1->PE2, there is no room left for PE3->PE4, while if path 1 is used, PE3->PE4 can be placed on R3->R4 link.
When the P flag is set for an LSP and when ECMPs are available, an implementation should aim to select a path that allows disjointness.
There may be some cases where the PCE is not able to provide a set of disjoint paths for one or more LSPs in the association.
When the T flag is set (Strict disjointness), if disjointness cannot be ensured for one or more LSPs, the PCE
MUST reply to a PCReq with a PCRep message containing a NO-PATH object. In case of a PCRpt message, the PCE
MUST return a PCErr message with Error-Type 26 (Association Error) and Error-value 7 (Cannot join the association group).
In case of a network event leading to an impossible strict disjointness, the PCE
MUST send a PCUpd message containing an empty Explicit Route Object (ERO) to the corresponding PCCs. In addition to the empty ERO object, the PCE
MAY add the NO-PATH-VECTOR TLV [
RFC 5440] in the LSP object.
This document adds new bits in the Flags field of the NO-PATH-VECTOR TLV:
-
bit 11: When set, the PCE indicates that it could not find a disjoint path for this LSP.
-
bit 10: When set, the PCE indicates that it does not support the requested disjointness computation.
When the T flag is unset, the PCE is allowed to relax disjointness by applying a requested objective function (
Section 5.3) if specified. Otherwise, if no objective function is specified, the PCE is allowed to reduce the required level of disjointness as it deems fit. The actual level of disjointness of the paths computed by the PCE can be reported through the DISJOINTNESS-STATUS TLV by setting the appropriate flags in the TLV. While the DISJOINTNESS-CONFIGURATION TLV defines the desired level of disjointness required by configuration, the DISJOINTNESS-STATUS TLV defines the achieved level of disjointness computed.
There are some cases where the PCE may need to completely relax the disjointness constraint in order to provide a path to all the LSPs that are part of the association. A mechanism that allows the PCE to fully relax a constraint is considered by the authors as more global to PCEP rather than linked to the disjointness use case. As a consequence, it is considered out of scope of the document. See [
PCE-OPTIONAL] for a proposed mechanism.