Path Computation Element Communication Protocol (PCEP) Extensions for Associated Bidirectional Segment Routing (SR) Paths
Cheng Li
Huawei Technologies
Huawei Campus, No. 156 Beiqing Rd.
Beijing
100095
China
c.l@huawei.com
Mach(Guoyi) Chen
Huawei Technologies
Huawei Campus, No. 156 Beiqing Rd.
Beijing
100095
China
Mach.chen@huawei.com
Weiqiang Cheng
China Mobile
China
chengweiqiang@chinamobile.com
Rakesh Gandhi
Cisco Systems, Inc.
Canada
rgandhi@cisco.com
Quan Xiong
ZTE Corporation
China
xiong.quan@zte.com.cn
11 August 2024
Routing Area
PCE Working Group
The Path Computation Element Communication Protocol (PCEP) provides mechanisms for Path Computation Elements (PCEs) to perform path computations in response to Path Computation Clients (PCCs) requests. Segment routing (SR) leverages the source routing and tunneling paradigms. The Stateful PCEP extensions allow stateful control of Segment Routing Traffic Engineering (TE) Paths. Furthermore, PCEP can be used for computing SR TE paths in the network.
This document defines PCEP extensions for grouping two unidirectional SR Paths (one in each direction in the network) into a single associated bidirectional SR Path. The mechanisms defined in this document can also be applied using a stateful PCE for both PCE-initiated and PCC-initiated LSPs or when using a stateless PCE.

Introduction
Segment routing (SR) [RFC8402] leverages the source routing and tunneling paradigms. SR supports steering packets onto an explicit forwarding path at the ingress node. SR is specified for unidirectional paths. However, some applications require bidirectional paths in SR networks, for example, in mobile backhaul transport networks. The requirement for bidirectional SR Paths is specified in [I-D.ietf-spring-mpls-path-segment] and [I-D.ietf-spring-srv6-path-segment].
[RFC5440] describes the Path Computation Element (PCE) Communication Protocol (PCEP). PCEP enables the communication between a Path Computation Client (PCC) and a PCE, or between PCE and PCE, for the purpose of computation of Traffic Engineering (TE) Label Switched Paths (LSP). [RFC8231] specifies a set of extensions to PCEP to enable stateful control of TE LSPs within and across PCEP sessions. The mode of operation where LSPs are initiated from the PCE is described in [RFC8281].
[RFC8408] specifies extensions to the Path Computation Element Protocol (PCEP) [RFC5440] for SR networks, that allow a stateful PCE to compute and initiate SR TE paths, as well as a PCC to request, report or delegate them.
[RFC8697] introduces a generic mechanism to create a grouping of LSPs. This grouping can then be used to define associations between sets of LSPs or between a set of LSPs and a set of attributes, and it is equally applicable to the stateful PCE (active and passive modes) [RFC8231] and the stateless PCE [RFC5440].
For bidirectional SR paths, there are use-cases such as directed BFD [I-D.ietf-mpls-bfd-directed] and Performance Measurement (PM) [I-D.ietf-spring-stamp-srpm] those require ingress node (PCC) to be aware of the reverse direction SR Path. For such use-cases, the reverse SR Paths need to be communicated to the ingress node (PCCs) using PCEP mechanisms. This allows both endpoint ingress nodes to be aware of the SR Paths in both directions, including their status and all other path related information.
[RFC9059] defines PCEP extensions for grouping two unidirectional Resource Reservation Protocol - Traffic Engineering (RSVP-TE) LSPs into an associated bidirectional LSP when using a stateful PCE for both PCE-initiated and PCC-initiated LSPs as well as when using a stateless PCE. Specifically, it defines the procedure for 'Double-Sided Bidirectional LSP Association', where the PCE creates the association and provisions the forward LSPs at their ingress nodes. The RSVP-TE signals the forward LSPs to the egress nodes. Thus, both endpoints learn the reverse LSPs forming the bidirectional LSP association.
This document extends the bidirectional LSP association to SR paths by specifying PCEP extensions for grouping two unidirectional SR Paths into an associated bidirectional SR Path. Note that the procedure for using the association group defined in this document is specific to the associated bidirectional SR Paths. Associating an unidirectional SR Path with a reverse direction unidirectional RSVP-TE LSP to form a bidirectional LSP and vice versa, are outside the scope of this document.

Bidirectional SR Policy Association
An SR Policy contains one or more SR Policy Candidate Paths (CPs) [RFC9256] where one or more such Candidate Paths can be computed via PCE. Each Candidate Path maps to a unique PLSP-ID in PCEP. Multiple Candidate Paths can be associated together into a single SR Policy, via the use of the PCEP Association object with the "SR Policy Association" type as specified in [RFC9256]. The two such unidirectional Candidate Paths can be associated to form a bidirectional Candidate Path using the procedure defined in this document.
Each Candidate Path of an SR Policy can contain one or more Segment Lists (SLs) [RFC9256]. When a Candidate Path is computed by the PCE, it means that the PCE computed all SLs of that Candidate Path. [I-D.ietf-pce-multipath] defines procedure for carrying multiple SLs in a Candidate Path. That procedure works at the SL level to identify the forward and the reverse direction SLs in a Candidate Path as shown in an Example in Section 7.4 (Opposite Direction Tunnels) in [I-D.ietf-pce-multipath]. Whereas the procedure defined in this document works at the Candidate Path level to identify the forward and the reverse direction Candidate Paths in a bidirectional SR Policy.

Terminology
This document makes use of the terms defined in [RFC8408]. The reader is assumed to be familiar with the terminology defined in [RFC5440], [RFC8231], [RFC8281], [RFC8697], and [RFC9059].

Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

PCEP Extensions
As per [RFC8697], TE LSPs are associated by adding them to a common association group by a PCEP peer. [RFC9059] uses the association group object and the procedures as specified in [RFC8697] to group two unidirectional RSVP-TE LSPs. Similarly, two SR Paths can also be associated using similar technique. This document extends these association mechanisms for bidirectional SR Paths. Two unidirectional SR Paths (one in each direction in the network) can be associated together by using the association group defined in this document for PCEP messages.
[I-D.ietf-pce-sr-path-segment] defines a mechanism for communicating Path Segment Identifier (PSID) in PCEP for SR. The SR-MPLS PSID is defined in [I-D.ietf-spring-mpls-path-segment] and SRv6 PSID is defined in [I-D.ietf-spring-srv6-path-segment]. The PSID can be used for identifying the SR Path of an associated bidirectional SR Path. The PATH-SEGMENT TLV MAY be included for the SR Path in the LSP object to support the use-cases as required. The PATH-SEGMENT TLV MUST be handled as defined in [I-D.ietf-pce-sr-path-segment] and is not modified for associated bidirectional SR Path.

Double-Sided Bidirectional with Reverse LSP Association
For associating two unidirectional SR Paths, this document defines a new Association Type called 'Double-Sided Bidirectional with Reverse LSP Association' for Association Group object (Class-Value 40) as follows:
- Association Type (value 8, early allocation) to be assigned by IANA) = Double-Sided Bidirectional with Reverse LSP Association
The bidirectional association is considered to be both dynamic and operator-configured in nature. As per [RFC8697], the association group could be manually created by the operator on the PCEP peers, and the LSPs belonging to this association are conveyed via PCEP messages to the PCEP peer; alternately, the association group could be created dynamically by the PCEP speaker, and both the association group information and the LSPs belonging to the association group are conveyed to the PCEP peer. The Operator-configured Association Range MUST be set for this Association Type to mark a range of Association Identifiers that are used for operator-configured associations to avoid any Association Identifier clash within the scope of the Association Source (Refer to [RFC8697]). Specifically, for the PCE-initiated associated bidirectional SR Paths, the Association Type is dynamically created by the PCE on the PCE peers.
The handling of the Association ID, Association Source, optional Global Association Source and optional Extended Association ID in this association are set in the same way as [RFC9059].
[RFC8697] specifies the mechanism for the capability advertisement of the Association Types supported by a PCEP speaker by defining an ASSOC-Type-List TLV (value 35) to be carried within an OPEN object. This capability exchange for the Bidirectional Association MUST be done before using the Bidirectional Association Type. Thus, the PCEP speaker MUST include the bidirectional Association Type in the ASSOC-Type-List TLV and MUST receive the same from the PCEP peer before using the Bidirectional Association in PCEP messages.
A member of the 'Double-Sided Bidirectional with Reverse LSP Association' can take the role of a forward or reverse direction SR Path and follow the similar rules defined in [RFC9059] for LSPs.
- An SR Path (forward or reverse) MUST NOT be part of more than one 'Double-Sided Bidirectional with Reverse LSP Association'.
- The endpoint nodes of the SR Paths in 'Double-Sided Bidirectional with Reverse LSP Association' MUST be matching in the reverse directions.

Bidirectional LSP Association Group TLV
In 'Double-Sided Bidirectional with Reverse LSP Association', for properties such as forward and reverse direction and co-routed path, it uses the 'Bidirectional LSP Association Group TLV' defined in [RFC9059]. All fields and processing rules are as per [RFC9059].

PCEP Procedures
For an associated bidirectional SR Path, an ingress node PCC is aware of the forward direction SR Path beginning from itself to the egress node PCC using the existing PCEP procedures. For the use-cases which require the ingress node PCC to be aware of the reverse direction SR Path, PCE informs the reverse SR Path to the ingress node PCC. To achieve this, a PCInitiate message for the reverse SR Path is sent to the ingress node PCC and a PCInitiate message for the forward SR Path is sent to the egress node PCC (with the matching association group). These PCInitiate message MUST NOT trigger initiation of SR Paths on PCCs.
The PCEP procedure defined in this document is applicable to the following three scenarios:
- Neither unidirectional LSP exists, and both must be established.
- Both unidirectional LSPs exist, but the association must be established.
- One LSP exists, but the reverse associated LSP must be established.

PCE-Initiated Associated Bidirectional SR Paths
As specified in [RFC8697], associated bidirectional SR Paths can be created and updated by a Stateful PCE as shown in Figure 1.
- Stateful PCE MAY create and update the forward and reverse SR Paths independently for the 'Double-Sided Bidirectional with Reverse LSP Association'.
- Stateful PCE MAY establish and remove the association relationship on a per SR Path basis.
- Stateful PCE MUST create and update the SR Path and the association on a PCC via PCInitiate and PCUpd messages, respectively, using the procedures described in [RFC8697].
- The reverse direction SR Path (LSP2(R) at node S, LSP1(R) at node D as shown in Figure 1) SHOULD be informed by the PCE via PCInitiate message with the matching association group for the use-cases which require the PCC to be aware of the reverse direction SR Path.

                               +-----+
                               | PCE |
                               +-----+
  PCInitiate:                  /     \     PCInitiate:
  Tunnel 1 (F)                /       \    Tunnel 2 (F)
  LSP1 (F,0), LSP2 (R,0)     /         \   LSP2 (F,0), LSP1 (R,0)
  Association #1            /           \  Association #1
                           /             \
                          v               v
                     +-----+    LSP1     +-----+
                     |  S  |------------>|  D  |
                     |     |<------------|     |
                     +-----+    LSP2     +-----+
                           <no signaling>

      Legends: F = Forward LSP, R = Reverse LSP, (0) = PLSP-IDs

      Figure 1a: PCE-Initiated Associated Bidirectional SR Path
                 with Forward and Reverse Direction SR Paths

                               +-----+
                               | PCE |
                               +-----+
  PCRpt:                       ^     ^     PCRpt:
  Tunnel 1 (F)                /       \    Tunnel 2 (F)
  LSP1 (F,100), LSP2 (R,300) /         \   LSP2 (F,200), LSP1 (R,400)
  Association #1            /           \  Association #1
                           /             \
                          /               \
                     +-----+    LSP1     +-----+
                     |  S  |------------>|  D  |
                     |     |<------------|     |
                     +-----+    LSP2     +-----+
                           <no signaling>

  Legends: F=Forward LSP, R = Reverse LSP, (100,200,300,400)=PLSP-IDs

      Figure 1b: PCC-Reported Bidirectional SR Path
                 with Forward and Reverse Direction SR Paths

PCC-Initiated Associated Bidirectional SR Paths
As specified in [RFC8697], associated bidirectional SR Paths can also be created and updated by a PCC as shown in Figure 2a and 2b.
- PCC MAY create and update the forward SR Path and update the reverse SR Path independently for the 'Double-Sided Bidirectional with Reverse LSP Association'.
- PCC MUST NOT instantiate a reverse SR Path in a bidirectional SR Path.
- PCC MAY establish and remove the association relationship on a per SR Path basis.
- PCC MUST report the change in the association group of an SR Path to PCE(s) via PCRpt message.
- PCC reports the forward and reverse SR Paths independently to PCE(s) via PCRpt message.
- PCC MAY delegate the forward and reverse SR Paths independently to a Stateful PCE, where PCE would control the SR Paths.
- Stateful PCE updates the SR Paths in the 'Double-Sided Bidirectional with Reverse LSP Association' via PCUpd message, using the procedures described in [RFC8697].
- The reverse direction SR Path (LSP2(R) at node S, LSP1(R) at node D as shown in Figure 2b) SHOULD be informed by the PCE via PCInitiate message with the matching association group for the use-cases which require the PCC to be aware of the reverse direction SR Path.

                              +-----+
                              | PCE |
                              +-----+
     Report/Delegate:         ^     ^        Report/Delegate:
     Tunnel 1 (F)            /       \       Tunnel 2 (F)
     LSP1 (F,100)           /         \      LSP2 (F,200)
     Association #2        /           \     Association #2
                          /             \
                         /               \
                    +-----+    LSP1     +-----+
                    |  S  |------------>|  D  |
                    |     |<------------|     |
                    +-----+    LSP2     +-----+
                          <no signaling>

  Legends: F = Forward LSP, R = Reverse LSP, (100,200) = PLSP-IDs

  Figure 2a: Step 1: PCC-Initiated Associated Bidirectional SR
                     Path with Forward Direction SR Paths

                              +-----+
                              | PCE |
                              +-----+
 PCInitiate:                  /     \     PCInitiate:
 Tunnel 1 (F)                /       \    Tunnel 2 (F)
 LSP1 (F,100), LSP2 (R,0)   /         \   LSP2 (F,200), LSP1 (R,0)
 Association #2            /           \  Association #2
                          /             \
                         v               v
                    +-----+    LSP1     +-----+
                    |  S  |------------>|  D  |
                    |     |<------------|     |
                    +-----+    LSP2     +-----+
                          <no signaling>

  Legends: F = Forward LSP, R = Reverse LSP, (0,100,200) = PLSP-IDs

  Figure 2b: Step 2: PCE-Initiated Associated Bidirectional SR
                    Path with Reverse Direction SR Paths

                              +-----+
                              | PCE |
                              +-----+
 PCRpt:                       ^     ^     PCRpt:
 Tunnel 1 (F)                /       \    Tunnel 2 (F)
 LSP1 (F,100), LSP2 (R,300) /         \   LSP2 (F,200), LSP1 (R,400)
 Association #2            /           \  Association #2
                          /             \
                         /               \
                    +-----+    LSP1     +-----+
                    |  S  |------------>|  D  |
                    |     |<------------|     |
                    +-----+    LSP2     +-----+
                          <no signaling>

  Legends: F=Forward LSP, R = Reverse LSP, (100,200,300,400)=PLSP-IDs

  Figure 2c: Step 3: PCC-Reported Associated Bidirectional SR
                     Path with Reverse Direction SR Paths

Stateless PCE
As defined in [RFC9059], for a stateless PCE, it might be useful to associate a path computation request to an association group, thus enabling it to associate a common set of configuration parameters or behaviors with the request [RFC8697]. A PCC can request co-routed or non-co-routed forward and reverse direction paths from a stateless PCE for a bidirectional SR Path.

Bidirectional (B) Flag
The Bidirectional (B) flag in Request Parameters (RP) object [RFC5440] and Stateful PCE Request Parameter (SRP) object [I-D.ietf-pce-pcep-stateful-pce-gmpls] follow the procedure defined in [RFC9059].

PLSP-ID Usage
For a bidirectional LSP computation when using both direction LSPs on a node, the same LSP would need to be identified using 2 different PLSP-IDs based on the PCEP session to the ingress or the egress node. Note that the PLSP-ID space is independent at each PCC, the PLSP-ID allocated by the egress PCC cannot be used for the LSP at the ingress PCC (PLSP-ID conflict may occur). As per normal PCInitiate operations, PCC assigns the PLSP-IDs for the local LSPs. Hence, when the PCE notifies an ingress PCC of the reverse LSP, it does so by using PCInitiate operations and sets PLSP-ID to zero and sets the R bit in the 'Bidirectional LSP Association Group TLV' in the association object to indicate that this PCInitiate LSP is a reverse LSP. The PCC upon receiving the PCInitiate MUST locally assign a new PLSP-ID and it MUST issue a PCRpt to PCE for this LSP containing the new PLSP-ID. This reverse direction LSP MUST NOT be instantiated on the PCC.
In other words, a given LSP will be identified by PLSP-ID A at the ingress node while it will be identified by PLSP-ID B at the egress node. The PCE will maintain two PLSP-IDs for the same LSP. For example, ingress PCC1 may report to PCE an LSP1 with PLSP-ID 100. Egress PCC2 may report to PCE an LSP2 with PLSP-ID 200. Both of these LSPs are part of a bidirectional association. When PCE notifies PCC1 of the reverse direction LSP2, it does so by sending a PCInitiate to PCC1 with PLSP-ID set to zero and R bit set in the 'Bidirectional LSP Association Group TLV'. PCC1 upon reception of this generates a new PLSP-ID (example PLSP-ID 300) and issues a PCRpt to PCE. Thus there would two PLSP-ID associated for LSP2 (300 at PCC1 and 200 at PCC2).
For an associated bidirectional SR Path, LSP-IDENTIFIERS TLV [RFC8231] MUST be included in all forward and reverse LSPs.

State Synchronization
During state synchronization, a PCC MUST report all the existing Bidirectional Associations to the Stateful PCE as per [RFC8697]. After the state synchronization, the PCE MUST remove all stale Bidirectional Associations.

Error Handling
The error handling as described in section 5.7 of [RFC9059] continue to apply.
The PCEP Path Setup Type (PST) for SR is set to 'TE Path is Setup using Segment Routing' [RFC8408] or 'Path is setup using SRv6' [RFC9256].
If a PCEP speaker receives a different PST value for the 'Double-Sided Bidirectional with Reverse LSP Association', the PCE speaker MUST return a PCErr message with Error-Type = 26 (Association Error) and Error-value = '16: Path Setup Type not supported' defined in [RFC9059].

Implementation Status
[Note to the RFC Editor - remove this section before publication, as well as remove the reference to [RFC7942].
This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in [RFC7942]. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs. Please note that the listing of any individual implementation here does not imply endorsement by the IETF. Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features. Readers are advised to note that other implementations may exist.
According to [RFC7942], "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature. It is up to the individual working groups to use this information as they see fit".

Huawei's Commercial Delivery
The feature is developing based on Huawei VRP8.
- Organization: Huawei
- Implementation: Huawei's Commercial Delivery implementation based on VRP8.
- Description: The implementation is under development.
- Maturity Level: Product
- Contact: tanren@huawei.com

ZTE's Commercial Delivery
- Organization: ZTE
- Implementation: ZTE's Commercial Delivery implementation based on Rosng v8.
- Description: The implementation is under development.
- Maturity Level: Product
- Contact: zhan.shuangping@zte.com.cn

Security Considerations
The security considerations described in [RFC5440], [RFC8231], [RFC8281], and [RFC8408] apply to the extensions defined in this document as well.
A new Association Type for the Association object, 'Double-Sided Bidirectional with Reverse LSP Association' is introduced in this document. Additional security considerations related to LSP associations due to a malicious PCEP speaker are described in [RFC8697] and apply to this Association Type. Hence, securing the PCEP session using Transport Layer Security (TLS) [RFC8253] is recommended.

Manageability Considerations
All manageability requirements and considerations listed in [RFC5440], [RFC8231], and [RFC8281] apply to PCEP protocol extensions defined in this document. In addition, requirements and considerations listed in this section apply.

Control of Function and Policy
The mechanisms defined in this document do not imply any control or policy requirements in addition to those already listed in [RFC5440], [RFC8231], and [RFC8281].

Information and Data Models
[RFC7420] describes the PCEP MIB, there are no new MIB Objects defined for 'Double-Sided Bidirectional with Reverse LSP Associations'. The PCEP YANG module [I-D.ietf-pce-pcep-yang] defines data model for associated bidirectional SR Paths.

Liveness Detection and Monitoring
Mechanisms defined in this document do not imply any new liveness detection and monitoring requirements in addition to those already listed in [RFC5440], [RFC8231], and [RFC8281].

Verify Correct Operations
Mechanisms defined in this document do not imply any new operation verification requirements in addition to those already listed in [RFC5440], [RFC8231], and [RFC8408].

Requirements On Other Protocols
Mechanisms defined in this document do not imply any new requirements on other protocols.

Impact On Network Operations
Mechanisms defined in [RFC5440], [RFC8231], and [RFC8408] also apply to PCEP extensions defined in this document.

IANA Considerations

Association Type
This document defines a new Association Type, originally described in [RFC8697]. IANA is requested to assign the following value in the "ASSOCIATION Type Field" registry [RFC8697] within the "Path Computation Element Protocol (PCEP) Numbers" registry group:

Type                  Name                           Reference
---------------------------------------------------------------------
8                     Double-Sided Bidirectional     [This document]
(Early Allocation)    with Reverse LSP Association

Normative References

Informative References
[RFC8402]
[I-D.ietf-spring-mpls-path-segment]
[I-D.ietf-spring-srv6-path-segment]
[RFC5440]
[RFC8231]
[RFC8281]
[RFC8408]
[RFC8697]
[I-D.ietf-mpls-bfd-directed]
[I-D.ietf-spring-stamp-srpm]
[RFC9059]
[RFC9256]
[I-D.ietf-pce-multipath]
[RFC2119]
[RFC8174]
[I-D.ietf-pce-sr-path-segment]
[I-D.ietf-pce-pcep-stateful-pce-gmpls]
[RFC7942]
[RFC8253]
[RFC7420]
[I-D.ietf-pce-pcep-yang]

Acknowledgments
Many thanks to Marina Fizgeer, Adrian Farrel, Andrew Stone, Tarek Saad, and Mike Koldychev for the detailed review of this document and providing many useful comments.

Contributors
The following people have substantially contributed to this document:
 Dhruv Dhody
 Huawei Technologies
 Divyashree Techno Park, Whitefield
 Bangalore, Karnataka  560066
 India

 Email: dhruv.ietf@gmail.com

 Zhenbin Li
 Huawei Technologies
 Huawei Campus, No. 156 Beiqing Rd.
 Beijing  100095
 China

 Email: lizhenbin@huawei.com

 Jie Dong
 Huawei Technologies
 Huawei Campus, No. 156 Beiqing Rd.
 Beijing  100095
 China

 Email: jie.dong@huawei.com