rfc-9604

Carrying Binding Label/SID in PCE-Based Networks

S. Sivabalan, C. Filsfils, J. Tantsura, S. Previdi, C. Li (Editor)
date2024-08 streamIETF areartg wgpce statusPROPOSED STANDARD pages19 canonicalhttps://www.rfc-editor.org/rfc/rfc9604 doi10.17487/RFC9604
In order to provide greater scalability, network confidentiality, and service independence, Segment Routing (SR) utilizes a Binding Segment Identifier (BSID), as described in RFC 8402. It is possible to associate a BSID to an RSVP-TE-signaled Traffic Engineering (TE) Label Switched Path (LSP) or an SR TE path. The BSID can be used by an upstream node for steering traffic into the appropriate TE path to enforce SR policies. This document specifies the concept of binding value, which can be either an MPLS label or a Segment Identifier (SID). It further specifies an extension to Path Computation Element Communication Protocol (PCEP) for reporting the binding value by a Path Computation Client (PCC) to the Path Computation Element (PCE) to support PCE-based TE policies.

updated by

Extracted elements (26)

design-rationale §1.1

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.

routing, mpls

design-rationale §5

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.

routing, ip

design-rationale §1.2

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.

routing, mpls

normative-requirement §5 RECOMMENDED

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.

routing, ip

normative-requirement §5 MUST

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').

routing

normative-requirement §5 MUST

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.

routing

normative-requirement §5 MUST

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').

routing, mpls

normative-requirement §5 MUST

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.

routing

normative-requirement §5 MUST

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').

routing

normative-requirement §8 MUST

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.

routing

normative-requirement §6 MUST

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.

routing, mpls

normative-requirement §7 MUST

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.

routing, ip

normative-requirement §9 RECOMMENDED

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.

security, tls, routing

normative-requirement §4.1 MUST

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.

routing

normative-requirement §8 MUST

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').

routing

normative-requirement §5 MUST

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.

routing

protocol-element §8

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.

routing

protocol-element §4

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.

routing

protocol-element §4

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.

mpls, routing, registry

registry §11.1.1

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.

registry, routing

registry §11.2

IANA allocated bit 0 in the 'LSP Object Flag Field' registry for the new P (PCE-allocation) flag defined in this document.

registry, routing

registry §11.1.1

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.

registry, routing

registry §11.3

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.

registry, routing

security-consideration §9

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.

security, routing

wire-format §4

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).

mpls, routing

wire-format §4.1

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.

routing, ip