Path Computation Element Communication Protocol (PCEP) Extensions to Redundancy Policy
Fan Yang
Huawei
156 Beiqing Rd.
Beijing
100095
China
shirley.yangfan@huawei.com
Xuesong Geng
Huawei
156 Beiqing Rd.
Beijing
100095
China
gengxuesong@huawei.com
Tianran Zhou
Huawei
156 Beiqing Rd.
Beijing
100095
China
zhoutianran@huawei.com
11 July 2022
PCE Working Group
PCEP is used to provide a communication between a PCC and a PCE. This document defines the extensions to PCEP to support the redundancy paths computation. Specifically, two new TLVs are defined to support the request of redundancy path computation and protection method, and one TLV is defined to distribute the Candidate Path Flag of an SR Policy.

Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in .

Introduction
Redundancy protection [I-D.ietf-spring-sr-redundancy-protection] is a generalized protection mechanism by replicating and transmitting copies of flow packets on the redundancy node over multiple different and disjoint paths, and further eliminating the redundant packets at the merging node. To support redundancy protection in Segment Routing, Redundancy Policy[I-D.geng-spring-redundancy-policy] is provided to instantiate the segment lists of more than one disjoint forwarding paths. This document extends the PCEP protocols to support the request of redundancy paths computation and protection method, and further distribute the flag of redundancy policy to instantiate more than one segment lists for redundancy forwarding.

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

RP Object
The RP (Request Parameters) object defined in [RFC5440] is used to specify various characteristics of the path computation request and MUST be carried within each PCReq and PCRep messages. The format of RP object is as follows:
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          Flags                    |O|B|R| Pri |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Request-ID-number                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   //                      Optional TLVs                          //
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Request Parameters Object

Redundancy Protection TLV
In order to request PCE to compute multiple redundancy forwarding paths with the intention of redundancy protection, this document defines a new TLV named Redundancy Protection TLV. The format of Redundancy Protection TLV is shown as follows.
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Type = TBD1          |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Flag       |     Number    |            Reserved           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Redundancy Protection TLV
Where:
- Type: to be assigned by IANA.
- Length: 16-bit value to indicate the length of the value portion in bytes.
- Flag: 8-bit bitmap to indicate the redundancy constraint of path computation that PCC requires.
  0
  0 1 2 3 4 5 6 7
 +-+-+-+-+-+-+-+-+
 |R|U|U|U|U|U|U|U|
 +-+-+-+-+-+-+-+-+
where:
a) R-Flag: One bit Redundancy Flag is used to indicate whether PCC requires the common path computation or a redundancy path computation. When redundancy flag bit is set to 0, it means PCC requests a common path computation. When redundancy flag bit is set to 1, it means PCC requests a redundancy path computation.
b) U-Flag: Unused and undefined
- Number: 8-bit value to indicate how many redundancy forwarding paths that PCC requires. The range of the number is recommended from 2 to 8.
- Reserved: 16-bit of reserved bits. SHOULD be set to zero on transmission and MUST be ignored on receipt.
When PCC requests a redundancy path computation, it MUST include the Redundancy Flag TLV in the RP object in PCReq message. When PCC includes the Redundancy Flag TLV in a path computation request, PCE would reply with the required number of redundancy forwarding paths and the set of Redundancy Flag associated with the computed paths.

Protection Type TLV
As specified in [I-D.geng-spring-redundancy-policy], multiple candidate paths can co-exist with different types of protection. In order to differetiate the types of protection, a new TLV named Protection Type TLV is defined. The format of Protection Type TLV is shown as follows.
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Type = TBD2          |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Prot |                        Reserved                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Protection Type TLV
where:
- Type: to be assigned by IANA.
- Length: 16-bit value to indicate the length of the value portion in bytes.
- Protection: 4-bit value to indicate the protection type of path computation that PCC requires. The following Table gives the values and corresponding protection types.
   +--------------+-------------------------+
   |    Value     |     Protection Type     |
   +--------------+-------------------------+
   |      0       |      No protection      |
   +--------------+-------------------------+
   |      1       |     Backup Protection   |
   +--------------+-------------------------+
   |      2       |  Redundancy Protection  |
   +--------------+-------------------------+
   |     3-15     |       Undefined         |
   +--------------+-------------------------+
Protection Type Values
- Reserved: 24-bit of reserved bits. SHOULD be set to zero on transmission and MUST be ignored on receipt.

PCEP Extensions for Redundancy Policy
As per [I-D.ietf-pce-segment-routing-policy-cp], the mapping between PCEP Associations and SR Policies is always one-to-one, and the mapping between PCEP Tunnels and SR Policy Candidate Paths may be either one-to-one or many-to-one. Regarding Redundancy Policy, the mapping between PCEP Associations and Redundancy Policy is always one-to-one. PCEP Tunnels and Redundancy Policy Candidate Paths are always many-to-one. The definitions of SR Policy Association Type (SRPAT) and SR Policy Association Group (SRPAG) apply same to Redundancy policy.
This document introduces a new SR Policy Candidate Path Attribute called Flag, which identify the Flag of SR Policy Candidate Path within the context of an SR Policy. This Flag identifier MUST NOT change for a given LSP during its lifetime. When these rules are not satisfied, the PCE MUST send a PCErr message with Error-Type = 26 "Association Error", Error Value = TBD4 "SR Policy Candidate Path Flag Mismatch".

SR Policy Candidate Path Flag TLV
A new SR Policy Association Type TLV [I-D.ietf-pce-segment-routing-policy-cp] called SR Policy Candidate Path Flag TLV is defined to indicate the Flag of a candidate path. The format of SR Policy Candidate Path Flag TLV is shown in following.
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |           Type (TBD3)         |             Length            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |     Flag      |                    RESERVED                   |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

SRPOLICY-CPPATH-Flag TLV
where:
- Type: to be allocated by IANA.
- Length: specifies the length of the value field not including Type and Length fields.
- Flag: 8-bit bitmap of Flag. A new registry "SR Policy Candidate Path Flags" is created. One flag is defined at this writing:
  0
  0 1 2 3 4 5 6 7
 +-+-+-+-+-+-+-+-+
 |R|U|U|U|U|U|U|U|
 +-+-+-+-+-+-+-+-+
where:
a) R-Flag: One bit Redundancy Flag is used to indicate the type of candidate path. When R Flag is set, it represents the candidate path is used for the redundancy forwarding.
b) U-Flag: Unused and undefined
- RESERVED: 3-octet of reserved bits. SHOULD be set to zero on transmission and MUST be ignored on receipt.

Path Binding TLV
Since Redundancy Policy can be optionally associated with the Binding Segment, specifically the Redundancy Segment, according to [I-D.ietf-pce-segment-routing-policy-cp], the functionality of specified-BSID-only is not mandatory to be enabled. It means that the given Redundancy Segment is not required to be allocated and programmed for the LSP to be operationally up. When there is a Redundancy Segment associated with Redundancy Policy, TE-PATH-BINDIND TLV [I-D.ietf-pce-binding-label-sid] is used to distribute Redundancy Segment as the Binding Segment of Redundancy Policy.

IANA Considerations

New TLV Type
This document defines three new TLVs.
  +-----------------+------------------------------------+----------------+
  |       Value     |               Name                 |    Reference   |
  +-----------------+------------------------------------+----------------+
  |       TBD1      |    Redundancy Protection TLV       | This document  |
  +-----------------+------------------------------------+----------------+
  |       TBD2      |       Protection Type TLV          | This document  |
  +-----------------+------------------------------------+----------------+
  |       TBD3      | SR Policy Candidate Path Flag TLV  | This document  |
  +-----------------+------------------------------------+----------------+

PCEP Errors
This document defines one new Error-Value within the "Association Error" Error-Type. IANA is requested to allocate new error values within the "PCEP-ERROR Object Error Types and Values" sub-registry of the PCEP Numbers registry, as follows:
   +------------+------------------+-----------------------+-----------+
   | Error-Type | Meaning          | Error-value           | Reference |
   +------------+------------------+-----------------------+-----------+
   | 26         | Association      |                       | [RFC8697] |
   |            | Error            |                       |           |
   +------------+------------------+-----------------------+-----------+
   |            |                  | TBD4: SR Policy       | This I-D  |
   |            |                  | Candidate Path        |           |
   |            |                  | Flag Mismatch         |           |
   +------------+------------------+-----------------------+-----------+

Security Considerations
TBD

Normative References

Informative References
[I-D.ietf-spring-sr-redundancy-protection]
[I-D.geng-spring-redundancy-policy]
[RFC2119]
[RFC8174]
[RFC5440]
[I-D.ietf-pce-segment-routing-policy-cp]
[I-D.ietf-pce-binding-label-sid]