Path Computation Element Protocol (PCEP) Extension for Color
Extracted elements (19)
The COLOR TLV is carried in the LSP object (rather than a new object) because the LSP object is already a mandatory inclusion in PCRpt, PCUpd, and PCInitiate messages under the stateful PCE model, making it a natural container for per-LSP attributes like color.
The term 'color' in this document must not be interpreted as the 'thread color' from RFC 3063 or the 'resource color' (link color) from RFCs 3630, 5329, 5305, and 7308. This clarification prevents confusion with pre-existing TE coloring concepts that serve distinct purposes.
If the COLOR TLV appears in the LSP object of a message that also carries an ASSOCIATION object of type SR Policy Association (RFC 9862), the COLOR TLV is ignored and the color encoded in the SR Policy Association takes precedence.
LSPs belonging to the same TE Tunnel within the same Path Protection Association Group (RFC 8745) are all expected to carry the same color value; inconsistency is treated as an error.
The extensions defined in this document MUST NOT be used to carry the color attribute for SR paths established using RFC 9862 (SR Policy Candidate Paths), because the color is already included as part of the SR Policy identifier encoding in that specification.
A PCEP speaker that advertises both color capability and SR Policy Association (RFC 9862) capability MUST NOT send the COLOR TLV in the LSP object for SR Paths; for such paths the color is encoded in the SR Policy Association object.
A PCEP speaker that has advertised color capability MUST NOT send the COLOR TLV in the LSP object to a PCEP peer that has not advertised color capability.
An implementation supporting this document SHOULD allow the operator to enable or disable the PCEP color capability advertisement and SHOULD allow configuration of color assignment to a TE Tunnel or SR Policy.
If a PCC is unable to honor a color value passed in a PCUpd or PCInitiate message, the PCC MUST reject the message and send a PCErr with Error-Type=19 (Invalid Operation) and Error-value=31 (Invalid color).
Only one COLOR TLV SHOULD be included in the LSP object. If the COLOR TLV appears more than once, only the first occurrence is processed and any others MUST be ignored.
When a PCEP speaker determines inconsistency in the color associated with LSPs belonging to the same Path Protection Association Group, it MUST reject the offending message and send a PCErr with Error-Type=19 and Error-value=32 (Inconsistent color).
Color capability is advertised by setting the C-bit (Bit 20) in the STATEFUL-PCE-CAPABILITY TLV during PCEP session Open message exchange. This flag signals that the PCEP speaker supports the color attribute defined in this document.
Color is a 32-bit unsigned integer attribute used to associate a TE Tunnel or SR Policy with an intent or objective (e.g., 'low latency'). It is carried in the COLOR TLV within the LSP object of PCRpt, PCUpd, and PCInitiate messages.
IANA assigned Bit 20 (COLOR-CAPABILITY) in the 'STATEFUL-PCE-CAPABILITY TLV Flag Field' registry to indicate support for the color capability defined in this document.
IANA assigned TLV Type 67 in the 'PCEP TLV Type Indicators' registry for the COLOR TLV defined by this document.
IANA assigned two new Error-values under Error-Type=19 (Invalid Operation) in the 'PCEP-ERROR Object Error Types and Values' registry: Error-value=31 (Invalid Color) and Error-value=32 (Inconsistent Color).
IANA deprecated LSP-ERROR-CODE TLV Error Code value 9 ('Unsupported Color'), which had been early-allocated for a draft version of this document but is no longer used in the final specification.
The COLOR TLV and color-capability flag do not introduce security concerns beyond those in RFC 5440, RFC 8231, and RFC 8281. However, an unauthorized PCE could maliciously associate an LSP with an incorrect color; RFC 8253 (PCEPS/TLS) and RFC 9325 (secure TLS usage) should be used to protect against this.
The COLOR TLV has Type=67, Length=4 (fixed), and a 4-byte Color field carrying the unsigned integer color value. A value of zero is explicitly allowed.