Carrying Binding Label/SID in PCE-Based Networks
updated by
- rfc-9756 — Update to the IANA Path Communication Element Protocol (PCEP) Numbers Registration Procedures and the Allowance of Experimental Error Codes
Extracted elements (26)
A binding label/SID enables upstream nodes to steer traffic with a single SID instead of imposing a full SID stack. As illustrated in the DC/WAN example, the access node uses {Y, X} rather than {Y, A, B, C, D}, directly reducing the forwarding capacity burden on access nodes.
BT=3 is defined separately from BT=2 to allow the sender to explicitly convey SRv6 Endpoint Behavior and SID Structure. With BT=2 the receiver interprets these per local policy, which reduces control; BT=3 gives the PCE or PCC full visibility and control over locator block/node/function/argument boundaries.
The TE-PATH-BINDING TLV is deliberately generic, supporting both MPLS labels and SRv6 SIDs via the Binding Type (BT) field, to unify binding label/SID handling across SR-TE, RSVP-TE, and any future path setup types. This avoids separate TLVs for each data-plane technology.
For SRv6 BSIDs, it is RECOMMENDED to always explicitly specify the SRv6 Endpoint Behavior and SID Structure by setting BT=3. A sender MAY set BT=2, in which case the receiver interprets the SRv6 Endpoint Behavior and SID Structure according to local policy.
If a PCC considers a binding value specified by the PCE invalid, it MUST send PCErr with Error-Type=32, Error-value=1 ('Invalid SID'). If the value is valid but cannot be allocated, it MUST send Error-Type=32, Error-value=2 ('Unable to allocate the specified binding value').
If a PCC receives a TE-PATH-BINDING TLV in any message other than PCUpd or PCInitiate, it MUST close the PCEP session with reason 'Reception of a malformed PCEP message'. Similarly, if a PCE receives a TE-PATH-BINDING TLV outside a PCRpt, or associated with an object other than LSP or PCEP-ERROR, it MUST close the session.
If a PCE recognizes an invalid binding value (e.g., a label from the reserved MPLS label space), it MUST send a PCErr with Error-Type=10 ('Reception of an invalid object') and Error-value=2 ('Bad label value').
If a PCE recognizes the TE-PATH-BINDING TLV but does not support it, it MUST send a PCErr with Error-Type=2 ('Capability not supported'). If the PCE does not recognize it at all, it ignores the TLV per RFC 5440.
If a PCEP speaker receives multiple TE-PATH-BINDING TLVs with the same SRv6 SID or MPLS Label but different BT values, it MUST send a PCErr with Error-Type=32, Error-value=5 ('Inconsistent binding types').
If PCECC capability per RFC 9050 has not been mutually advertised and a peer receives P=1 in the LSP object, it MUST send PCErr with Error-Type=19, Error-value=16 ('Attempted PCECC operations when PCECC capability was not advertised') and terminate the PCEP session.
In the SR-ERO subobject, when carrying a Binding SID, the NAI MUST NOT be included and the NT field MUST be set to zero.
In the SRv6-ERO subobject (RFC 9603), when carrying a Binding SID, the NAI MUST NOT be included and the NT MUST be set to zero.
It is RECOMMENDED that PCEP extensions defined in this document be activated only on authenticated and encrypted sessions using TLS (RFC 8253) as per BCP 195, across PCEs and PCCs belonging to the same administrative authority.
The sum of LB Length, LN Length, Function Length, and Arguments Length MUST be less than or equal to 128 bits. If this condition is not met, or if the Endpoint Behavior is unknown or inconsistent, the TE-PATH-BINDING TLV is considered invalid and a PCErr with Error-Type=10, Error-value=37 ('Invalid SRv6 SID Structure') MUST be sent.
To request PCE allocation of a binding label/SID, a PCC MUST set P=1, D=1, and include an empty TE-PATH-BINDING TLV in the PCRpt message. If the PCE cannot allocate, it MUST send PCErr with Error-Type=32, Error-value=3 ('Unable to allocate a new binding label/SID').
To withdraw a previously reported binding value, a PCC MUST send a PCRpt with the TE-PATH-BINDING TLV having R flag set to 1. To modify a binding, the PCC MUST first withdraw the former value (R=1) and include a new TE-PATH-BINDING TLV with the new binding value.
A new P flag (PCE-allocation, bit 0) is added to the LSP object. When set to 1, it signals that the PCC requests the PCE to make allocations for the LSP, or conversely that the PCE has allocated the binding label/SID. The TE-PATH-BINDING TLV must be present alongside P=1.
The R (Removal) flag, bit 0 of the Flags field in the TE-PATH-BINDING TLV, when set to 1 indicates that the requesting PCEP peer requires removal of the binding value for the LSP. It is used in PCRpt and PCUpd messages and ignored in other PCEP messages.
The TE-PATH-BINDING TLV (type=55, variable length) is defined to carry a binding label/SID for a TE path. It is associated with the LSP object and may also appear in the PCEP-ERROR object. Multiple instances MAY be present in the same LSP object.
A new 'TE-PATH-BINDING TLV Flag Field' registry was created. Bit 0 is the R (Removal) flag; bits 1-7 are Unassigned. New values require Standards Action.
IANA allocated bit 0 in the 'LSP Object Flag Field' registry for the new P (PCE-allocation) flag defined in this document.
IANA allocated TLV type 55 for 'TE-PATH-BINDING' in the 'PCEP TLV Type Indicators' registry. A new 'TE-PATH-BINDING TLV BT Field' registry was created with values 0 (MPLS Label), 1 (MPLS Label Stack Entry), 2 (SRv6 SID), 3 (SRv6 SID with Behavior and Structure), 4-255 Unassigned; new values require Standards Action.
IANA created Error-Type 32 ('Binding label/SID failure') with Error-values 0 (Unassigned), 1 (Invalid SID), 2 (Unable to allocate the specified binding value), 3 (Unable to allocate a new binding label/SID), 4 (Unable to remove the binding value), 5 (Inconsistent binding types) in the 'PCEP-ERROR Object Error Types and Values' registry.
BSID values are opaque aliases for longer path representations. A rogue PCE propagating paths containing BSIDs can substitute a BSID from a different LSP, redirecting traffic without the recipient detecting the change. When BT=3 is used, mischaracterizing the SRv6 SID structure bit division (e.g., shifting bits into or out of the 'argument') is an additional attack vector affecting packet processing.
The TE-PATH-BINDING TLV contains a 1-octet Binding Type (BT) field, a 1-octet Flags field, a 2-octet Reserved field, and a variable-length Binding Value padded to a 4-octet boundary. BT=0 encodes a 20-bit MPLS label (Length=7); BT=1 encodes a 32-bit MPLS Label Stack Entry per RFC 3032 (Length=8); BT=2 encodes a 128-bit SRv6 SID (Length=20); BT=3 encodes an SRv6 SID with Endpoint Behavior and SID Structure (Length=28).
When BT=3, the Binding Value is a 24-octet field: 16 octets for the SRv6 Binding SID, 2 octets Reserved, 2 octets Endpoint Behavior, followed by four 1-octet fields for LB Length (locator block bits), LN Length (locator node bits), Function Length, and Arguments Length.