Association groups and their memberships are defined using a new ASSOCIATION object.
The ASSOCIATION Object-Class value is 40.
The ASSOCIATION Object-Type value is 1 for IPv4, and its format is shown in
Figure 3:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | Flags |R|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Association Type | Association ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 Association Source |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Optional TLVs //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The ASSOCIATION Object-Type value is 2 for IPv6, and its format is shown in
Figure 4:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | Flags |R|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Association Type | Association ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| IPv6 Association Source |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Optional TLVs //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
Reserved (2 bytes):
-
MUST be set to 0 and ignored upon receipt.
-
Flags (2 bytes):
-
The following flag is currently defined:
-
R (Removal - 1 bit):
-
When set, the requesting PCEP peer requires the removal of an LSP from the association group. When unset, the PCEP peer indicates that the LSP is added or retained as part of the association group. This flag is used for the ASSOCIATION object in the Path Computation Report (PCRpt) and Path Computation Update (PCUpd) messages. It is ignored in other PCEP messages.
The unassigned flags
MUST be set to 0 on transmission and
MUST be ignored on receipt.
-
Association Type (2 bytes):
-
The Association Type (Section 7.4). The Association Types will be defined in future documents.
-
Association ID (2 bytes):
-
The identifier of the association group. When combined with other association parameters, such as an Association Type and Association Source, this value uniquely identifies an association group. The values 0xffff and 0x0 are reserved. The value 0xffff is used to indicate all association groups and could be used with the R flag to indicate removal for all associations for the LSP within the scope of the Association Type and Association Source.
-
Association Source:
-
Contains a valid IPv4 address (4 bytes) if the ASSOCIATION Object-Type is 1 or a valid IPv6 address (16 bytes) if the ASSOCIATION Object-Type is 2. The address provides scoping for the Association ID. See Section 6.1.3 for details.
-
Optional TLVs:
-
The optional TLVs follow the PCEP TLV format defined in [RFC 5440]. This document defines two optional TLVs. Other documents can define more TLVs in the future.
The Global Association Source TLV is an optional TLV for use in the ASSOCIATION object. The meaning and usage of the Global Association Source TLV are as per
Section 4 of
RFC 6780.
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 | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Global Association Source |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
Type:
-
30
-
Length:
-
Fixed value of 4 bytes.
-
Global Association Source:
-
As defined inSection 4 of RFC 6780.
The Extended Association ID TLV is an optional TLV for use in the ASSOCIATION object. The meaning and usage of the Extended Association ID TLV are as per
Section 4 of
RFC 6780.
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 | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Extended Association ID //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
Type:
-
31
-
Length:
-
Variable.
-
Extended Association ID:
-
As defined in Section 4 of RFC 6780.
The Association Source field in the ASSOCIATION object is set to a valid IP address to identify the node that originated the association. In the case of dynamic associations, the Association Source is usually set as the local PCEP speaker address unless local policy dictates otherwise, in which case the Association Source is set based on the local policy. In the case of PCE redundancy, local policy could set the source as a virtual IP address that identifies all instances of the PCE. In the case of Operator-configured Associations, the Association Source is manually configured, and it could be set as one of the PCEP speakers, an NMS, or any other valid IP address that scopes the Association ID for the Association Type.
The combination of the mandatory fields Association Type, Association ID, and Association Source in the ASSOCIATION object uniquely identifies the association group. If the optional TLVs (Global Association Source and Extended Association ID) are included, then they
MUST be included in combination with mandatory fields to uniquely identify the association group. In this document, all these fields are collectively called "association parameters". Note that the ASSOCIATION object
MAY include other optional TLVs (not defined in this document) based on the Association Types. These TLVs provide "information" related to the Association Type. This document refers to this information as "association information".
The format of the PCEP ASSOCIATION object defined in this document is aligned with the RSVP ASSOCIATION object [
RFC 6780]. Various Association Types related to RSVP association are defined in [
RFC 4872], [
RFC 4873], and [
RFC 7551]. The PCEP extensions that define new Association Types should clarify how the PCEP associations would work with RSVP associations and vice versa.
Message formats in this document are expressed using Routing BNF (RBNF) as used in [
RFC 5440] and defined in [
RFC 5511].
The ASSOCIATION object
MAY be carried in the PCUpd, PCRpt, and Path Computation Initiate (PCInitiate) messages.
When carried in a PCRpt message, this object is used to report the association group membership pertaining to an LSP to a stateful PCE. The PCRpt message is used for initial State Synchronization operations (
Section 5.6 of
RFC 8231), as well as whenever the state of the LSP changes. If the LSP belongs to an association group, then the associations
MUST be included during the State Synchronization operations.
The PCRpt message can also be used to remove an LSP from one or more association groups by setting the R flag to 1 in the ASSOCIATION object.
When an LSP is first reported to the PCE, the PCRpt message
MUST include all the association groups that it belongs to. Any subsequent PCRpt message
SHOULD include only the associations that are being modified or removed.
The PCRpt message is defined in [
RFC 8231] and updated as shown below:
<PCRpt Message> ::= <Common Header>
<state-report-list>
Where:
<state-report-list> ::= <state-report>[<state-report-list>]
<state-report> ::= [<SRP>]
<LSP>
[<association-list>]
<path>
Where:
<path>::= <intended-path>
[<actual-attribute-list><actual-path>]
<intended-attribute-list>
<association-list> ::= <ASSOCIATION> [<association-list>]
When an LSP is delegated to a stateful PCE, the stateful PCE can create a new association group for this LSP or associate it with one or more existing association groups. This is done by including the ASSOCIATION object in a PCUpd message. A stateful PCE can also remove a delegated LSP from one or more association groups by setting the R flag to 1 in the ASSOCIATION object.
The PCUpd message
SHOULD include the association groups that are being modified or removed. There is no need to include associations that remain unchanged.
The PCUpd message is defined in [
RFC 8231] and updated as shown below:
<PCUpd Message> ::= <Common Header>
<update-request-list>
Where:
<update-request-list> ::= <update-request>[<update-request-list>]
<update-request> ::= <SRP>
<LSP>
[<association-list>]
<path>
Where:
<path>::= <intended-path><intended-attribute-list>
<association-list> ::= <ASSOCIATION> [<association-list>]
Unless a PCEP speaker wants to delete an association from an LSP or make changes to the association, it does not need to include the ASSOCIATION object in future stateful messages.
A PCE initiating a new LSP can also include the association groups that this LSP belongs to. This is done by including the ASSOCIATION object in a PCInitiate message. The PCInitiate message
MUST include all the association groups that it belongs to. The PCInitiate message is defined in [
RFC 8281] and updated as shown below:
<PCInitiate Message> ::= <Common Header>
<PCE-initiated-lsp-list>
Where:
<PCE-initiated-lsp-list> ::= <PCE-initiated-lsp-request>
[<PCE-initiated-lsp-list>]
<PCE-initiated-lsp-request> ::= (<PCE-initiated-lsp-instantiation>|
<PCE-initiated-lsp-deletion>)
<PCE-initiated-lsp-instantiation> ::= <SRP>
<LSP>
[<END-POINTS>]
<ERO>
[<association-list>]
[<attribute-list>]
Where:
<association-list> ::= <ASSOCIATION> [<association-list>]
In the case of a passive (stateful or stateless) PCE, the ASSOCIATION object is
OPTIONAL and
MAY be carried in the PCReq message.
When carried in a PCReq message, the ASSOCIATION object is used to associate the path computation request to an association group. The association (and the other LSPs) should be known to the PCE beforehand. These could be operator configured or dynamically learned beforehand via stateful PCEP messages. The R flag in the ASSOCIATION object within a PCReq message
MUST be set to 0 while sending and ignored on receipt.
The PCReq message is defined in [
RFC 5440] and updated in [
RFC 8231]. It is further updated below for association groups:
<PCReq Message>::= <Common Header>
[<svec-list>]
<request-list>
Where:
<svec-list>::= <SVEC>[<svec-list>]
<request-list>::= <request>[<request-list>]
<request>::= <RP>
<END-POINTS>
[<LSP>]
[<LSPA>]
[<BANDWIDTH>]
[<metric-list>]
[<association-list>]
[<RRO>[<BANDWIDTH>]]
[<IRO>]
[<LOAD-BALANCING>]
Where:
<association-list> ::= <ASSOCIATION> [<association-list>]
Note that the LSP object
MAY be present for the passive stateful PCE mode.
In the case of a passive (stateful or stateless) PCE, the ASSOCIATION object is
OPTIONAL and
MAY be carried in the PCRep message with the NO-PATH object. The ASSOCIATION object in the PCRep message indicates the association group that caused the PCE to fail to find a path.
The PCRep message is defined in [
RFC 5440] and updated in [
RFC 8231]. It is further updated below for association groups:
<PCRep Message> ::= <Common Header>
<response-list>
Where:
<response-list>::=<response>[<response-list>]
<response>::=<RP>
[<LSP>]
[<NO-PATH>]
[<association-list>]
[<attribute-list>]
[<path-list>]
Where:
<association-list> ::= <ASSOCIATION> [<association-list>]
Note that the LSP object
MAY be present for the passive stateful PCE mode.
Association groups can be operator configured on the necessary PCEP speakers, and the PCEP speakers can join the existing association groups. In addition, a PCC or a PCE can create association groups dynamically, and the PCEP speaker can also report the associations to its peer via PCEP messages. The Operator-configured Associations are created via configurations (where all association parameters are manually set) and exist until explicitly removed via configurations. The PCEP speaker can add LSPs to these configured associations and provide this information via stateful PCEP messages. The dynamic associations are created dynamically by the PCEP speaker (where all association parameters are populated dynamically). The association group is attached to the LSP state, and the association group exists until there is at least one LSP as part of the association. As described in
Section 6.1.4, the association parameters are the combination of Association Type, Association ID, and Association Source, as well as the optional Global Association Source and Extended Association ID TLVs; this combination uniquely identifies an association group. The information related to the Association Types encoded via the TLVs of a particular Association Type (not described in this document) is the association information (
Section 6.1.4).
If a PCEP speaker does not recognize the ASSOCIATION object in the stateful message, it will return a PCErr message with Error-Type "Unknown Object" as described in [
RFC 5440]. In the case of a PCReq message, the PCE would react based on the P flag as per [
RFC 5440]. If a PCEP speaker understands the ASSOCIATION object but does not support the Association Type, it
MUST return a PCErr message with Error-Type 26 "Association Error" and Error-value 1 "Association Type is not supported". If any association parameters are invalid in the ASSOCIATION object, the PCEP speaker would consider this object malformed and process it as a malformed message [
RFC 5440]. On receiving a PCEP message with an ASSOCIATION object, if a PCEP speaker finds that too many LSPs belong to the association group, it
MUST return a PCErr message with Error-Type 26 "Association Error" and Error-value 2 "Too many LSPs in the association group". If a PCEP speaker cannot handle a new association, it
MUST return a PCErr message with Error-Type 26 "Association Error" and Error-value 3 "Too many association groups". These numbers
MAY be set by the operator or chosen based on a local policy.
If a PCE peer is unwilling or unable to process the ASSOCIATION object in the stateful message, it
MUST return a PCErr message with the Error-Type "Not supported object" and follow the relevant procedures described in [
RFC 5440]. In the case of a PCReq message, the PCE would react based on the P flag as per [
RFC 5440]. On receiving a PCEP message with an ASSOCIATION object, if a PCEP speaker could not add the LSP to the association group for any reason, it
MUST return a PCErr message with Error-Type 26 "Association Error" and Error-value 7 "Cannot join the association group".
If a PCEP speaker receives an ASSOCIATION object for an Operator-configured Association and the Association ID is not in the Operator-configured Association Range for the Association Type and Association Source, it
MUST return a PCErr message with Error-Type 26 "Association Error" and Error-value 8 "Association ID not in range".
If a PCEP speaker receives an ASSOCIATION object in a PCReq message and the association is not known (the association is not configured, was not created dynamically, or was not learned from a PCEP peer), it
MUST return a PCErr message with Error-Type 26 "Association Error" and Error-value 4 "Association unknown".
If the association information (related to the association group as a whole) received from the peer does not match the local operator-configured information, it
MUST return a PCErr message with Error-Type 26 "Association Error" and Error-value 5 "Operator-configured association information mismatch". On receiving association information (related to the association group as a whole) that does not match the association information previously received about the same association from a peer, it
MUST return a PCErr message with Error-Type 26 "Association Error" and Error-value 6 "Association information mismatch". Note that information related to each LSP within the association as part of the association information TLVs could be different.
If a PCEP speaker receives an ASSOCIATION object with the R bit set for removal and the association group (identified by association parameters) is not known, it
MUST return a PCErr message with Error-Type 26 "Association Error" and Error-value 4 "Association unknown".
The dynamic associations are cleared along with the LSP state information as per [
RFC 8231]. When a PCEP session is terminated, after expiry of the State Timeout Interval at the PCC, the LSP state associated with that PCEP session is reverted to operator-defined default parameters or behaviors. The same procedure is also followed for the association groups. On session termination at the PCE, when the LSP state reported by the PCC is cleared, the association groups are also cleared. When there are no LSPs in an association group, the association is considered empty and thus deleted.
If the LSP is delegated to another PCE on session failure, the associations (and association information) set by the PCE remain intact, unless updated by the new PCE that takes over.
Upon LSP delegation revocation, the PCC
MAY clear the association created by the PCE, but in order to avoid traffic loss, it
SHOULD perform this action in a make-before-break fashion (same as [
RFC 8231]).