rfc-9603

Path Computation Element Communication Protocol (PCEP) Extensions for IPv6 Segment Routing

C. Li (Editor), P. Kaladharan, S. Sivabalan, M. Koldychev, Y. Zhu
date2024-07 streamIETF areartg wgpce statusPROPOSED STANDARD pages23 canonicalhttps://www.rfc-editor.org/rfc/rfc9603 doi10.17487/RFC9603
Segment Routing (SR) can be used to steer packets through a network using the IPv6 or MPLS data plane, employing the source routing paradigm. An SR Path can be derived from a variety of mechanisms, including an IGP Shortest Path Tree (SPT), explicit configuration, or a Path Computation Element (PCE). Since SR can be applied to both MPLS and IPv6 data planes, a PCE should be able to compute an SR Path for both MPLS and IPv6 data planes. The Path Computation Element Communication Protocol (PCEP) extension and mechanisms to support SR-MPLS have been defined. This document outlines the necessary extensions to support SR for the IPv6 data plane within PCEP.

updated by

Extracted elements (32)

design-rationale §4.1.1

It is recommended that SRv6 MSD information not be included in the SRv6-PCE-CAPABILITY sub-TLV in deployments where the PCE can obtain it via IGP/BGP-LS as topology information, since the sub-TLV reflects only the local PCC's capabilities while path computation requires per-hop MSD across all nodes.

routing

design-rationale §4.3.1.1

The SID Structure optional field enables the PCE and PCC to parse and validate SRv6 SIDs (LOC:FUNCT:ARG breakdown), enabling conformance checking against the operator's SRv6 SID allocation scheme and potential future provisioning of filtering rules at domain boundaries.

routing, ip, security

interoperability-note §5.2.1

If a PCC does not support the SRv6 PCE Capability and cannot recognize SRv6-ERO or SRv6-RRO subobjects, it should respond according to the rules for a malformed object as described in RFC 5440.

routing

interoperability-note §5.3

SRv6-RRO subobject syntax checking rules are identical to those for the SRv6-ERO subobject except the L flag is absent, and the V flag has no meaning in SRv6-RRO and is ignored on receipt at the PCE.

routing

interoperability-note §4.1.1

The (MSD-Type,MSD-Value) pair in SRv6-PCE-CAPABILITY reflects only the sender PCC's SID imposition limit. The PCE must also consider MSD capabilities of intermediate SRv6 endpoint nodes and tail-end nodes, learnable via BGP-LS or PCEP sessions with those nodes.

routing

normative-requirement §5.1 MUST NOT

A PCE MUST NOT send SRv6 paths that exceed the SRv6 MSD capabilities of the PCC. If a PCC receives such a path, it MUST send a PCErr with Error-Type=10 and Error-Value=40 ('Unsupported number of SRv6-ERO subobjects').

routing

normative-requirement §5.2.1 MUST

If a PCC detects that ERO subobjects mix SRv6-ERO subobjects with other subobject types, it MUST send a PCErr with Error-Type=10 and Error-Value=43. Similarly for RRO mixing, Error-Value=36.

routing

normative-requirement §5.2.1 MUST

If a PCC receives an SRv6-ERO subobject where both the S and F bits are set to 1 (SID and NAI both absent), it MUST consider the entire ERO invalid and send a PCErr with Error-Type=10 and Error-Value=42.

routing

normative-requirement §5.1 MUST

If a PCEP speaker includes PST=3 in the PST list of the PATH-SETUP-TYPE-CAPABILITY TLV, it MUST also include the SRv6-PCE-CAPABILITY sub-TLV inside that TLV; if it is absent, the receiver MUST send a PCErr (Error-Type=10, Error-Value=34) and MUST close the PCEP session.

routing

normative-requirement §5.2.1 MUST

If a PCEP speaker receives an SRv6-ERO subobject when PST is not set to 3 or the SRv6-PCE-CAPABILITY sub-TLV was not exchanged, it MUST send a PCErr with Error-Type=19 and Error-Value=19 ('Attempted SRv6 when the capability was not advertised').

routing

normative-requirement §5.2.1 MUST

If the S bit is set (SID absent) in an SRv6-ERO subobject and the PCC does not support NAI resolution, the PCC MUST consider the entire ERO invalid and send a PCErr with Error-Type=4 and Error-Value=4 ('Unsupported parameter').

routing

normative-requirement §4.3.1.1 MUST

If the sum of all four sizes in the SID Structure is larger than 128 bits, the corresponding SRv6 SID MUST be considered invalid and a PCErr with Error-Type=10 and Error-Value=37 ('Invalid SRv6 SID Structure') is returned.

routing, ip

normative-requirement §5.2.1 MUST

On receiving an SRv6-ERO, a PCC MUST validate consistency of the Length, S, F, T bits, and NT field against defined rules (e.g., NT=0 requires F=1, S=0, Length=24). Inconsistency MUST cause a PCErr with Error-Type=10 and Error-Value=11 ('Malformed object').

routing

normative-requirement §3.2 MUST

PCEP messages pertaining to SRv6 MUST include the PATH-SETUP-TYPE TLV in the RP or SRP object with PST=3 to clearly identify that SRv6 is intended.

routing

normative-requirement §3 MUST

SRv6-capable PCEP speakers MUST be able to generate and/or process SRv6-ERO and SRv6-RRO subobjects.

routing

normative-requirement §4.3.1 MUST NOT

The L flag in SRv6-ERO controls SID mutability: if set to zero, a PCC MUST NOT overwrite the SID value. If set to one, a PCC MAY expand or replace one or more SIDs based on local policy.

routing

normative-requirement §5.1 MUST

The N flag and (MSD-Type,MSD-Value) pair in the SRv6-PCE-CAPABILITY sub-TLV MUST be set to zero and MUST NOT be present in an Open message sent to a PCC; a PCC MUST ignore flags and any (MSD-Type,MSD-Value) pair received in an Open message.

routing

normative-requirement §5.1 MUST

Whenever a PCE learns SRv6 MSD values via alternate mechanisms (e.g., IGP/BGP-LS), it MUST use those values regardless of the values exchanged in the SRv6-PCE-CAPABILITY sub-TLV.

routing

protocol-element §4.1.1

A new Path Setup Type PST=3 is defined to indicate that a traffic engineering path is set up using SRv6. It is carried in the PATH-SETUP-TYPE TLV and the PATH-SETUP-TYPE-CAPABILITY TLV.

routing, registry

protocol-element §4.3.1

SRv6-ERO NAI Type (NT) field is 4 bits. NT=0 means NAI is absent; NT=2 means IPv6 node ID; NT=4 means IPv6 adjacency with global IPv6 addresses; NT=6 means link-local IPv6 adjacency with (global IPv6 address, interface ID) tuples.

routing, ip

protocol-element §4.3.1

The Endpoint Behavior field in the SRv6-ERO/SRv6-RRO subobject is a 16-bit value representing the behavior associated with the SRv6 SID per RFC 8986. If behavior is unknown, value 0xFFFF is used. The field is optional but recommended for maintainability and diagnostics.

routing, ip

protocol-element §4.1.1

The N bit (bit position 14) in the SRv6-PCE-CAPABILITY sub-TLV Flags field indicates that the PCC is capable of resolving a Node or Adjacency Identifier (NAI) to an SRv6-SID. It is meaningful only in Open messages sent to a PCE.

routing

registry §8.8

IANA allocated new error values in 'PCEP-ERROR Object Error Types and Values': under Error-Type=10 — values 34–43 covering missing sub-TLV, absent SID/NAI, mixed subobject types, invalid SID Structure, unsupported MSD, unsupported NAI type; under Error-Type=19 — value 19 for attempting SRv6 without advertised capability.

registry, routing

registry §8.1

IANA allocated SRv6-ERO (PCEP-specific) subobject type value 40 in the 'Subobject type - 20 EXPLICIT_ROUTE' registry and SRv6-RRO (PCEP-specific) subobject type value 40 in the 'Subobject type - 21 ROUTE_RECORD' registry.

registry, routing

registry §8.2

IANA created the 'PCEP SRv6-ERO NAI Types' registry (IETF Review policy) managing the 4-bit NT field. Defined values: 0 (NAI absent), 2 (IPv6 node ID), 4 (IPv6 adjacency, global addresses), 6 (IPv6 adjacency, link-local addresses).

registry, routing

registry §8.3

IANA created the 'SRv6-ERO Flag Field' registry (Standards Action policy) managing the 12-bit Flags field. Defined bits: 8 (V, SID Verification), 9 (T, SID Structure present), 10 (F, NAI absent), 11 (S, SID absent).

registry, routing

registry §8.5

IANA registered PATH-SETUP-TYPE-CAPABILITY sub-TLV type 27 as 'SRv6-PCE-CAPABILITY', created the 'SRv6 Capability Flag Field' registry (Standards Action) for the 16-bit Flags of the sub-TLV, and allocated Path Setup Type PST=3 for SRv6 in the 'PCEP Path Setup Types' registry.

registry, routing

security-consideration §6 RECOMMENDED

Without integrity protection on the PCEP session, an attacker could inject an SRv6 path bypassing verification checks. Additionally, the MSD field in the Open message can disclose node forwarding capabilities. Therefore, securing PCEP sessions using TLS (RFC 8253) is RECOMMENDED.

security, routing

wire-format §4.3.1.1

The SID Structure is an optional 8-byte field within the SRv6-ERO/SRv6-RRO subobject encoding the bit lengths of the SRv6 SID components: LB Length (1 octet, locator block), LN Length (1 octet, locator node), Fun. Length (1 octet, function), and Arg. Length (1 octet, arguments), followed by a 3-octet Reserved and 1-octet Flags.

routing, ip

wire-format §4.3.1

The SRv6-ERO subobject (Type=40) contains an L flag, 4-bit NT field, 12-bit Flags field (V/T/F/S bits), 2-octet Reserved, 2-octet Endpoint Behavior, an optional 128-bit SRv6 SID, an optional variable-length NAI, and an optional 8-byte SID Structure. The Length MUST be at least 24 and a multiple of 4.

routing, ip

wire-format §4.1.1

The SRv6-PCE-CAPABILITY sub-TLV (Type=27) is a variable-length sub-TLV carried inside the PATH-SETUP-TYPE-CAPABILITY TLV. Its value field contains a 2-octet Reserved field, a 2-octet Flags field (bit 14 is the N flag), and optional (MSD-Type, MSD-Value) pairs, each 1 octet each, padded to 4-octet alignment.

routing

wire-format §4.4.1

The SRv6-RRO subobject (Type=40) has the same format as the SRv6-ERO subobject, but without the L flag. The V flag has no meaning in the SRv6-RRO and is ignored on receipt.

routing, ip