| < draft-ietf-pce-binding-label-sid-12.txt | draft-ietf-pce-binding-label-sid-13.txt > | |||
|---|---|---|---|---|
| PCE Working Group S. Sivabalan | PCE Working Group S. Sivabalan | |||
| Internet-Draft Ciena Corporation | Internet-Draft Ciena Corporation | |||
| Intended status: Standards Track C. Filsfils | Intended status: Standards Track C. Filsfils | |||
| Expires: 28 July 2022 Cisco Systems, Inc. | Expires: 14 August 2022 Cisco Systems, Inc. | |||
| J. Tantsura | J. Tantsura | |||
| Microsoft Corporation | Microsoft Corporation | |||
| S. Previdi | S. Previdi | |||
| C. Li, Ed. | C. Li, Ed. | |||
| Huawei Technologies | Huawei Technologies | |||
| 24 January 2022 | 10 February 2022 | |||
| Carrying Binding Label/Segment Identifier in PCE-based Networks. | Carrying Binding Label/Segment Identifier (SID) in PCE-based Networks. | |||
| draft-ietf-pce-binding-label-sid-12 | draft-ietf-pce-binding-label-sid-13 | |||
| Abstract | Abstract | |||
| In order to provide greater scalability, network confidentiality, and | In order to provide greater scalability, network confidentiality, and | |||
| service independence, Segment Routing (SR) utilizes a Binding Segment | service independence, Segment Routing (SR) utilizes a Binding Segment | |||
| Identifier (BSID). It is possible to associate a BSID to an RSVP-TE- | Identifier (SID) (called BSID) as described in RFC 8402. It is | |||
| signaled Traffic Engineering Label Switched Path or an SR Traffic | possible to associate a BSID to an RSVP-TE-signaled Traffic | |||
| Engineering path. The BSID can be used by an upstream node for | Engineering Label Switched Path or an SR Traffic Engineering path. | |||
| steering traffic into the appropriate TE path to enforce SR policies. | The BSID can be used by an upstream node for steering traffic into | |||
| This document specifies the concept of binding value, which can be | the appropriate TE path to enforce SR policies. This document | |||
| either an MPLS label or Segment Identifier. It further specifies an | specifies the concept of binding value, which can be either an MPLS | |||
| extension to Path Computation Element (PCE) communication | label or Segment Identifier. It further specifies an extension to | |||
| Protocol(PCEP) for reporting the binding value by a Path Computation | Path Computation Element (PCE) communication Protocol(PCEP) for | |||
| Client (PCC) to the PCE to support PCE-based Traffic Engineering | reporting the binding value by a Path Computation Client (PCC) to the | |||
| policies. | PCE to support PCE-based Traffic Engineering policies. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on 28 July 2022. | This Internet-Draft will expire on 14 August 2022. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| skipping to change at page 2, line 28 ¶ | skipping to change at page 2, line 28 ¶ | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.1. Motivation and Example . . . . . . . . . . . . . . . . . 4 | 1.1. Motivation and Example . . . . . . . . . . . . . . . . . 4 | |||
| 1.2. Summary of the Extension . . . . . . . . . . . . . . . . 5 | 1.2. Summary of the Extension . . . . . . . . . . . . . . . . 5 | |||
| 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 5 | 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4. Path Binding TLV . . . . . . . . . . . . . . . . . . . . . . 6 | 4. Path Binding TLV . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.1. SRv6 Endpoint Behavior and SID Structure . . . . . . . . 8 | 4.1. SRv6 Endpoint Behavior and SID Structure . . . . . . . . 8 | |||
| 5. Operation . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 5. Operation . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 6. Binding SID in SR-ERO . . . . . . . . . . . . . . . . . . . . 11 | 6. Binding SID in SR-ERO . . . . . . . . . . . . . . . . . . . . 12 | |||
| 7. Binding SID in SRv6-ERO . . . . . . . . . . . . . . . . . . . 11 | 7. Binding SID in SRv6-ERO . . . . . . . . . . . . . . . . . . . 12 | |||
| 8. PCE Allocation of Binding label/SID . . . . . . . . . . . . . 11 | 8. PCE Allocation of Binding label/SID . . . . . . . . . . . . . 12 | |||
| 9. Implementation Status . . . . . . . . . . . . . . . . . . . . 13 | 9. Implementation Status . . . . . . . . . . . . . . . . . . . . 14 | |||
| 9.1. Huawei . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 9.1. Huawei . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 9.2. Cisco . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 9.2. Cisco . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | |||
| 11. Manageability Considerations . . . . . . . . . . . . . . . . 15 | 11. Manageability Considerations . . . . . . . . . . . . . . . . 16 | |||
| 11.1. Control of Function and Policy . . . . . . . . . . . . . 15 | 11.1. Control of Function and Policy . . . . . . . . . . . . . 17 | |||
| 11.2. Information and Data Models . . . . . . . . . . . . . . 15 | 11.2. Information and Data Models . . . . . . . . . . . . . . 17 | |||
| 11.3. Liveness Detection and Monitoring . . . . . . . . . . . 15 | 11.3. Liveness Detection and Monitoring . . . . . . . . . . . 17 | |||
| 11.4. Verify Correct Operations . . . . . . . . . . . . . . . 15 | 11.4. Verify Correct Operations . . . . . . . . . . . . . . . 17 | |||
| 11.5. Requirements On Other Protocols . . . . . . . . . . . . 15 | 11.5. Requirements On Other Protocols . . . . . . . . . . . . 17 | |||
| 11.6. Impact On Network Operations . . . . . . . . . . . . . . 15 | 11.6. Impact On Network Operations . . . . . . . . . . . . . . 17 | |||
| 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 12.1. PCEP TLV Type Indicators . . . . . . . . . . . . . . . . 16 | 12.1. PCEP TLV Type Indicators . . . . . . . . . . . . . . . . 17 | |||
| 12.1.1. TE-PATH-BINDING TLV . . . . . . . . . . . . . . . . 16 | 12.1.1. TE-PATH-BINDING TLV . . . . . . . . . . . . . . . . 18 | |||
| 12.2. LSP Object . . . . . . . . . . . . . . . . . . . . . . . 17 | 12.2. LSP Object . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 12.3. PCEP Error Type and Value . . . . . . . . . . . . . . . 17 | 12.3. PCEP Error Type and Value . . . . . . . . . . . . . . . 19 | |||
| 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18 | 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 14.1. Normative References . . . . . . . . . . . . . . . . . . 18 | 14.1. Normative References . . . . . . . . . . . . . . . . . . 20 | |||
| 14.2. Informative References . . . . . . . . . . . . . . . . . 20 | 14.2. Informative References . . . . . . . . . . . . . . . . . 22 | |||
| Appendix A. Contributor Addresses . . . . . . . . . . . . . . . 21 | Appendix A. Contributor Addresses . . . . . . . . . . . . . . . 24 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 1. Introduction | 1. Introduction | |||
| A Path Computation Element (PCE) can compute Traffic Engineering | A Path Computation Element (PCE) can compute Traffic Engineering | |||
| paths (TE paths) through a network where those paths are subject to | paths (TE paths) through a network where those paths are subject to | |||
| various constraints. Currently, TE paths are set up using either the | various constraints. Currently, TE paths are set up using either the | |||
| RSVP-TE signaling protocol or Segment Routing (SR). We refer to such | RSVP-TE signaling protocol or Segment Routing (SR). We refer to such | |||
| paths as RSVP-TE paths and SR-TE paths respectively in this document. | paths as RSVP-TE paths and SR-TE paths respectively in this document. | |||
| As per [RFC8402] SR allows a head-end node to steer a packet flow | As per [RFC8402] SR allows a head-end node to steer a packet flow | |||
| skipping to change at page 3, line 40 ¶ | skipping to change at page 3, line 40 ¶ | |||
| document, the term 'binding label/SID' is used to generalize the | document, the term 'binding label/SID' is used to generalize the | |||
| allocation of binding value for both SR and non-SR paths. | allocation of binding value for both SR and non-SR paths. | |||
| [RFC5440] describes the PCEP for communication between a Path | [RFC5440] describes the PCEP for communication between a Path | |||
| Computation Client (PCC) and a PCE or between a pair of PCEs as per | Computation Client (PCC) and a PCE or between a pair of PCEs as per | |||
| [RFC4655]. [RFC8231] specifies extensions to PCEP that allow a PCC | [RFC4655]. [RFC8231] specifies extensions to PCEP that allow a PCC | |||
| to delegate its Label Switched Paths (LSPs) to a stateful PCE. A | to delegate its Label Switched Paths (LSPs) to a stateful PCE. A | |||
| stateful PCE can then update the state of LSPs delegated to it. | stateful PCE can then update the state of LSPs delegated to it. | |||
| [RFC8281] specifies a mechanism allowing a PCE to dynamically | [RFC8281] specifies a mechanism allowing a PCE to dynamically | |||
| instantiate an LSP on a PCC by sending the path and characteristics. | instantiate an LSP on a PCC by sending the path and characteristics. | |||
| This document specifies an extension to PCEP to manage of binding | This document specifies an extension to PCEP to manage the binding of | |||
| label/SID for both SR and non-SR paths. | label/SID that can be applied to SR, RSVP-TE, and other path setup | |||
| types. | ||||
| [RFC8664] provides a mechanism for a PCE (acting as a network | [RFC8664] provides a mechanism for a PCE (acting as a network | |||
| controller) to instantiate SR-TE paths (candidate paths) for an SR | controller) to instantiate SR-TE paths (candidate paths) for an SR | |||
| Policy onto a head-end node (acting as a PCC) using PCEP. For more | Policy onto a head-end node (acting as a PCC) using PCEP. For more | |||
| information on the SR Policy Architecture, see | information on the SR Policy Architecture, see | |||
| [I-D.ietf-spring-segment-routing-policy]. | [I-D.ietf-spring-segment-routing-policy]. | |||
| 1.1. Motivation and Example | 1.1. Motivation and Example | |||
| A binding label/SID has local significance to the ingress node of the | A binding label/SID has local significance to the ingress node of the | |||
| corresponding TE path. When a stateful PCE is deployed for setting | corresponding TE path. When a stateful PCE is deployed for setting | |||
| up TE paths, a binding label/SID reported from the PCC to the | up TE paths, a binding label/SID reported from the PCC to the | |||
| stateful PCE is useful for the purpose of enforcing end-to-end TE/SR | stateful PCE is useful for the purpose of enforcing end-to-end TE/SR | |||
| policy. A sample Data Center (DC) use-case is illustrated in | policy. A sample Data Center (DC) and IP/MPLS WAN use-case is | |||
| Figure 1. In the MPLS DC network, an SR LSP (without traffic | illustrated in Figure 1 with a multi-domain PCE. In the IP/MPLS WAN, | |||
| engineering) is established using a prefix SID advertised by BGP (see | an SR-TE LSP is set up using the PCE. The list of SIDs of the SR-TE | |||
| [RFC8669]). In the IP/MPLS WAN, an SR-TE LSP is set up using the | LSP is {A, B, C, D}. The gateway node 1 (which is the PCC) allocates | |||
| PCE. The list of SIDs of the SR-TE LSP is {A, B, C, D}. The gateway | a binding SID X and reports it to the PCE. In the MPLS DC network, | |||
| node 1 (which is the PCC) allocates a binding SID X and reports it to | an end-to-end SR-TE LSP is established. In order for the access node | |||
| the PCE. In order for the access node to steer the traffic over the | to steer the traffic towards Node-1 and over the SR-TE path in WAN, | |||
| SR-TE LSP, the PCE passes the SID stack {Y, X} where Y is the prefix | the PCE passes the SID stack {Y, X} where Y is the node SID of the | |||
| SID of the gateway node-1 to the access node. In the absence of the | gateway node-1 to the access node and X is the BSID. In the absence | |||
| binding SID X, the PCE would pass the SID stack {Y, A, B, C, D} to | of the BSID X, the PCE would need to pass the SID stack {Y, A, B, C, | |||
| the access node. This example also illustrates the additional | D} to the access node. This example also illustrates the additional | |||
| benefit of using the binding label/SID to reduce the number of SIDs | benefit of using the binding label/SID to reduce the number of SIDs | |||
| imposed by the access nodes with a limited forwarding capacity. | imposed by the access nodes with a limited forwarding capacity. | |||
| SID stack | SID stack | |||
| {Y, X} +-----+ | {Y, X} +--------------+ | |||
| _ _ _ _ _ _ _ _ _ _ _ _ _ _| PCE | | | Multi-domain | | |||
| | +-----+ | _ _ _ _ _ _ _ _ _ _ _ _ _ _| PCE | | |||
| | +--------------+ | ||||
| | ^ | | ^ | |||
| | | Binding | | | Binding | |||
| | .-----. | SID (X) .-----. | | .-----. | SID (X) .-----. | |||
| | ( ) | ( ) | | ( ) | ( ) | |||
| V .--( )--. | .--( )--. | V .--( )--. | .--( )--. | |||
| +------+ ( ) +-------+ ( ) +-------+ | +------+ ( ) +-------+ ( ) +-------+ | |||
| |Access|_( MPLS DC Network )_|Gateway|_( IP/MPLS WAN )_|Gateway| | |Access|_( MPLS DC Network )_|Gateway|_( IP/MPLS WAN )_|Gateway| | |||
| | Node | ( ==============> ) |Node-1 | ( ================> ) |Node-2 | | | Node | ( ==============> ) |Node-1 | ( ================> ) |Node-2 | | |||
| +------+ ( SR path ) +-------+ ( SR-TE path ) +-------+ | +------+ ( SR-TE path ) +-------+ ( SR-TE path ) +-------+ | |||
| '--( )--' Prefix '--( )--' | '--( )--' Node '--( )--' | |||
| ( ) SID of ( ) | ( ) SID of ( ) | |||
| '-----' Node-1 '-----' | '-----' Node-1 '-----' | |||
| is Y SIDs for SR-TE LSP: | is Y SIDs for SR-TE LSP: | |||
| {A, B, C, D} | {A, B, C, D} | |||
| Figure 1: A Sample Use-case of Binding SID | Figure 1: A Sample Use-case of Binding SID | |||
| Using the extension defined in this document, a PCC could report to | Using the extension defined in this document, a PCC could report to | |||
| the stateful PCE the binding label/SID it allocated via a Path | the stateful PCE the binding label/SID it allocated via a Path | |||
| Computation LSP State Report (PCRpt) message. It is also possible | Computation LSP State Report (PCRpt) message. It is also possible | |||
| skipping to change at page 5, line 13 ¶ | skipping to change at page 5, line 14 ¶ | |||
| value, it reports the binding value to the PCE. Otherwise, the PCC | value, it reports the binding value to the PCE. Otherwise, the PCC | |||
| sends an error message to the PCE indicating the cause of the | sends an error message to the PCE indicating the cause of the | |||
| failure. A local policy or configuration at the PCC SHOULD dictate | failure. A local policy or configuration at the PCC SHOULD dictate | |||
| if the binding label/SID needs to be assigned. | if the binding label/SID needs to be assigned. | |||
| 1.2. Summary of the Extension | 1.2. Summary of the Extension | |||
| To implement the needed changes to PCEP, in this document, we | To implement the needed changes to PCEP, in this document, we | |||
| introduce a new OPTIONAL TLV that a PCC can use in order to report | introduce a new OPTIONAL TLV that a PCC can use in order to report | |||
| the binding label/SID associated with a TE LSP, or a PCE to request a | the binding label/SID associated with a TE LSP, or a PCE to request a | |||
| PCC to allocate a specific binding label/SID value. This TLV is | PCC to allocate any or a specific binding label/SID value. This TLV | |||
| intended for TE LSPs established using RSVP-TE, SR, or any other | is intended for TE LSPs established using RSVP-TE, SR-TE, or any | |||
| future method. Also, in the case of SR-TE LSPs, the TLV can carry a | other future method. In the case of SR-TE LSPs, the TLV can carry a | |||
| binding label (for SR-TE path with MPLS data-plane) or a binding IPv6 | binding label (for SR-TE path with MPLS data-plane) or a binding IPv6 | |||
| SID (e.g., IPv6 address for SR-TE paths with IPv6 data-plane). | SID (e.g., IPv6 address for SR-TE paths with IPv6 data-plane). | |||
| Throughout this document, the term "binding value" means either an | Throughout this document, the term "binding value" means either an | |||
| MPLS label or a SID. | MPLS label or a SID. | |||
| As another way to use the extension specified in this document, to | As another way to use the extension specified in this document, to | |||
| support the PCE-based central controller [RFC8283] operation where | support the PCE-based central controller [RFC8283] operation where | |||
| the PCE would take responsibility for managing some part of the MPLS | the PCE would take responsibility for managing some part of the MPLS | |||
| label space for each of the routers that it controls, the PCE could | label space for each of the routers that it controls, the PCE could | |||
| directly make the binding label/SID allocation and inform the PCC. | directly make the binding label/SID allocation and inform the PCC. | |||
| See Section 8 for details. | See Section 8 for details. | |||
| In addition to specifying a new TLV, this document specifies how and | In addition to specifying a new TLV, this document specifies how and | |||
| when a PCC and PCE can use this TLV, how they can can allocate a | when a PCC and PCE can use this TLV, how they can allocate a binding | |||
| binding label/SID, and associted error handling. | label/SID, and associated error handling. | |||
| 2. Requirements Language | 2. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 3. Terminology | 3. Terminology | |||
| skipping to change at page 7, line 27 ¶ | skipping to change at page 7, line 27 ¶ | |||
| * BT = 2: The binding value is an SRv6 SID with the format of a | * BT = 2: The binding value is an SRv6 SID with the format of a | |||
| 16-octet IPv6 address, representing the binding SID for SRv6. The | 16-octet IPv6 address, representing the binding SID for SRv6. The | |||
| Length MUST be set to 20. | Length MUST be set to 20. | |||
| * BT = 3: The binding value is a 24 octet field, defined in | * BT = 3: The binding value is a 24 octet field, defined in | |||
| Section 4.1, that contains the SRv6 SID as well as its Behavior | Section 4.1, that contains the SRv6 SID as well as its Behavior | |||
| and Structure. The Length MUST be set to 28. | and Structure. The Length MUST be set to 28. | |||
| Section 12.1.1 defines the IANA registry used to maintain all these | Section 12.1.1 defines the IANA registry used to maintain all these | |||
| binding types as well as any future ones. Note that multiple TE- | binding types as well as any future ones. Note that multiple TE- | |||
| PATH-BINDING TLVs with different Binding Types MAY be present for the | PATH-BINDING TLVs with same or different Binding Types MAY be present | |||
| same LSP. | for the same LSP. A PCEP speaker could allocate multiple TE-PATH- | |||
| BINDING TLVs (of the same BT), and use different binding values in | ||||
| different domains or use-cases based on a local policy. | ||||
| Flags: 1 octet of flags. The following flag is defined in the new | Flags: 1 octet of flags. The following flag is defined in the new | |||
| registry "TE-PATH-BINDING TLV Flag field" as described in | registry "TE-PATH-BINDING TLV Flag field" as described in | |||
| Section 12.1.1: | Section 12.1.1: | |||
| 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| |R| | | |R| | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 8, line 12 ¶ | skipping to change at page 8, line 15 ¶ | |||
| * The unassigned flags MUST be set to 0 while sending and ignored on | * The unassigned flags MUST be set to 0 while sending and ignored on | |||
| receipt. | receipt. | |||
| Reserved: MUST be set to 0 while sending and ignored on receipt. | Reserved: MUST be set to 0 while sending and ignored on receipt. | |||
| Binding Value: A variable-length field, padded with trailing zeros to | Binding Value: A variable-length field, padded with trailing zeros to | |||
| a 4-octet boundary. When the BT is 0, the 20 bits represent the MPLS | a 4-octet boundary. When the BT is 0, the 20 bits represent the MPLS | |||
| label. When the BT is 1, the 32 bits represent the MPLS label stack | label. When the BT is 1, the 32 bits represent the MPLS label stack | |||
| entry as per [RFC3032]. When the BT is 2, the 128 bits represent the | entry as per [RFC3032]. When the BT is 2, the 128 bits represent the | |||
| SRv6 SID. When the BT is 3, the Binding Value also contains the SRv6 | SRv6 SID. When the BT is 3, the Binding Value also contains the SRv6 | |||
| Endpoint Behavior and SID Structure, defined in Section 4.1. | Endpoint Behavior and SID Structure, defined in Section 4.1. In this | |||
| document, the TE-PATH-BINDING TLV is considered to be empty if no | ||||
| Binding Value is present. Note that the length of the TLV would be 4 | ||||
| in such a case. | ||||
| 4.1. SRv6 Endpoint Behavior and SID Structure | 4.1. SRv6 Endpoint Behavior and SID Structure | |||
| This section specifies the format of the Binding Value in the TE- | This section specifies the format of the Binding Value in the TE- | |||
| PATH-BINDING TLV when the BT is set to 3 for the SRv6 Binding SIDs | PATH-BINDING TLV when the BT is set to 3 for the SRv6 Binding SIDs | |||
| [RFC8986]. The format is shown in Figure 4. | [RFC8986]. The format is shown in Figure 4. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | ||||
| | SRv6 Binding SID (16 octets) | | | SRv6 Binding SID (16 octets) | | |||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Reserved | Endpoint Behavior | | | Reserved | Endpoint Behavior | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | LB Length | LN Length | Fun. Length | Arg. Length | | | LB Length | LN Length | Fun. Length | Arg. Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 4: SRv6 Endpoint Behavior and SID Structure | Figure 4: SRv6 Endpoint Behavior and SID Structure | |||
| The Binding Value consists of: | The Binding Value consists of: | |||
| skipping to change at page 8, line 45 ¶ | skipping to change at page 9, line 10 ¶ | |||
| representing the binding SID for SRv6. | representing the binding SID for SRv6. | |||
| * Reserved: 2 octets. It MUST be set to 0 on transmit and ignored | * Reserved: 2 octets. It MUST be set to 0 on transmit and ignored | |||
| on receipt. | on receipt. | |||
| * Endpoint Behavior: 2 octets. The Endpoint Behavior code point for | * Endpoint Behavior: 2 octets. The Endpoint Behavior code point for | |||
| this SRv6 SID as per the IANA subregistry called "SRv6 Endpoint | this SRv6 SID as per the IANA subregistry called "SRv6 Endpoint | |||
| Behaviors", created by [RFC8986]. When the field is set with the | Behaviors", created by [RFC8986]. When the field is set with the | |||
| value 0, the endpoint behavior is considered unknown. | value 0, the endpoint behavior is considered unknown. | |||
| * The following fields are used to advertise the length of each | * [RFC8986] defines an SRv6 SID as consisting of LOC:FUNCT:ARG, | |||
| individual part of the SRv6 SID as defined in [RFC8986]: | where a locator (LOC) is encoded in the L most significant bits of | |||
| the SID, followed by F bits of function (FUNCT) and A bits of | ||||
| arguments (ARG). A locator may be represented as B:N where B is | ||||
| the SRv6 SID locator block (IPv6 prefix allocated for SRv6 SIDs by | ||||
| the operator) and N is the identifier of the parent node | ||||
| instantiating the SID called locator node. The following fields | ||||
| are used to advertise the length of each individual part of the | ||||
| SRv6 SID as defined in : | ||||
| - LB Length: 1 octet. SRv6 SID Locator Block length in bits. | - LB Length: 1 octet. SRv6 SID Locator Block length in bits. | |||
| - LN Length: 1 octet. SRv6 SID Locator Node length in bits. | - LN Length: 1 octet. SRv6 SID Locator Node length in bits. | |||
| - Function Length: 1 octet. SRv6 SID Function length in bits. | - Function Length: 1 octet. SRv6 SID Function length in bits. | |||
| - Argument Length: 1 octet. SRv6 SID Arguments length in bits. | - Argument Length: 1 octet. SRv6 SID Arguments length in bits. | |||
| The total of the locator block, locator node, function, and argument | ||||
| lengths MUST be lower or equal to 128 bits. If this condition is not | ||||
| met, the corresponding TE-PATH-BINDING TLV MUST be considered as an | ||||
| error. Also, if the Endpoint Behavior is found to be unknown or | ||||
| inconsistent, it is considered an error. A PCErr message with Error- | ||||
| Type = 10 ("Reception of an invalid object") and Error-Value = 37 | ||||
| ("Invalid SRv6 SID Structure") MUST be sent. | ||||
| The SRv6 SID Structure could be used by the PCE for ease of | ||||
| operations and monitoring. For example, this information could be | ||||
| used for validation of SRv6 SIDs being instantiated in the network | ||||
| and checked for conformance to the SRv6 SID allocation scheme chosen | ||||
| by the operator as described in Section 3.2 of [RFC8986]. In the | ||||
| future, PCE could also be used for verification and the automation | ||||
| for securing the SRv6 domain by provisioning filtering rules at SR | ||||
| domain boundaries as described in Section 5 of [RFC8754]. The | ||||
| details of these potential applications are outside the scope of this | ||||
| document. | ||||
| 5. Operation | 5. Operation | |||
| The binding value is allocated by the PCC and reported to a PCE via a | The binding value is usually allocated by the PCC and reported to a | |||
| PCRpt message. If a PCE does not recognize the TE-PATH-BINDING TLV, | PCE via a PCRpt message (see Section 8 where PCE does the | |||
| it would ignore the TLV in accordance with [RFC5440]. If a PCE | allocation). If a PCE does not recognize the TE-PATH-BINDING TLV, it | |||
| would ignore the TLV in accordance with [RFC5440]. If a PCE | ||||
| recognizes the TLV but does not support the TLV, it MUST send a PCErr | recognizes the TLV but does not support the TLV, it MUST send a PCErr | |||
| with Error-Type = 2 (Capability not supported). | with Error-Type = 2 (Capability not supported). | |||
| Multiple TE-PATH-BINDING TLVs are allowed to be present in the same | Multiple TE-PATH-BINDING TLVs are allowed to be present in the same | |||
| LSP object. This signifies the presence of multiple binding SIDs for | LSP object. This signifies the presence of multiple binding SIDs for | |||
| the given LSP. In the case of multiple TE-PATH-BINDING TLVs, the | the given LSP. In the case of multiple TE-PATH-BINDING TLVs, the | |||
| existing instances of TE-PATH-BINDING TLVs MAY be included in the LSP | existing instances of TE-PATH-BINDING TLVs MAY be included in the LSP | |||
| object. In case of an error condition, the whole message is rejected | object. In case of an error condition, the whole message is rejected | |||
| and the resulting PCErr message MAY include the offending TE-PATH- | and the resulting PCErr message MAY include the offending TE-PATH- | |||
| BINDING TLV in the PCEP-ERROR object. | BINDING TLV in the PCEP-ERROR object. | |||
| skipping to change at page 9, line 44 ¶ | skipping to change at page 10, line 41 ¶ | |||
| sender MAY choose to set the BT to 2, in which case the receiving | sender MAY choose to set the BT to 2, in which case the receiving | |||
| implementation chooses how to interpret the SRv6 Endpoint Behavior | implementation chooses how to interpret the SRv6 Endpoint Behavior | |||
| and SID Structure according to local policy. | and SID Structure according to local policy. | |||
| If a PCC wishes to withdraw a previously reported binding value, it | If a PCC wishes to withdraw a previously reported binding value, it | |||
| MUST send a PCRpt message with the specific TE-PATH-BINDING TLV with | MUST send a PCRpt message with the specific TE-PATH-BINDING TLV with | |||
| R flag set to 1. If a PCC wishes to modify a previously reported | R flag set to 1. If a PCC wishes to modify a previously reported | |||
| binding, it MUST withdraw the former binding value (with R flag set | binding, it MUST withdraw the former binding value (with R flag set | |||
| in the former TE-PATH-BINDING TLV) and include a new TE-PATH-BINDING | in the former TE-PATH-BINDING TLV) and include a new TE-PATH-BINDING | |||
| TLV containing the new binding value. Note that other instances of | TLV containing the new binding value. Note that other instances of | |||
| TE-PATH-BINDING TLVs that are unchanged MAY also be included. | TE-PATH-BINDING TLVs that are unchanged MAY also be included. If the | |||
| unchanged instances are not included, they will remain associated | ||||
| with the LSP. | ||||
| If a PCE requires a PCC to allocate a (or several) specific binding | If a PCE requires a PCC to allocate a (or several) specific binding | |||
| value(s), it may do so by sending a PCUpd or PCInitiate message | value(s), it may do so by sending a PCUpd or PCInitiate message | |||
| containing a TE-PATH-BINDING TLV(s). If the value(s) can be | containing a TE-PATH-BINDING TLV(s). If the value(s) can be | |||
| successfully allocated, the PCC reports the binding value(s) to the | successfully allocated, the PCC reports the binding value(s) to the | |||
| PCE. If the PCC considers the binding value specified by the PCE | PCE. If the PCC considers the binding value specified by the PCE | |||
| invalid, it MUST send a PCErr message with Error-Type = TBD2 | invalid, it MUST send a PCErr message with Error-Type = TBD2 | |||
| ("Binding label/SID failure") and Error Value = TBD3 ("Invalid SID"). | ("Binding label/SID failure") and Error Value = TBD3 ("Invalid SID"). | |||
| If the binding value is valid, but the PCC is unable to allocate the | If the binding value is valid, but the PCC is unable to allocate the | |||
| binding value, it MUST send a PCErr message with Error-Type = TBD2 | binding value, it MUST send a PCErr message with Error-Type = TBD2 | |||
| ("Binding label/SID failure") and Error Value = TBD4 ("Unable to | ("Binding label/SID failure") and Error Value = TBD4 ("Unable to | |||
| allocate the specified binding value"). Note that, in case of an | allocate the specified binding value"). Note that, in case of an | |||
| error, the PCC rejects the PCUpd or PCInitiate message in its | error, the PCC rejects the PCUpd or PCInitiate message in its | |||
| entirety and can include the offending TE-PATH-BINDING TLV in the | entirety and can include the offending TE-PATH-BINDING TLV in the | |||
| PCEP-ERROR object. | PCEP-ERROR object. | |||
| If a PCE wishes to request the withdrawal of a previously reported | If a PCE wishes to request the withdrawal of a previously reported | |||
| binding value, it MUST send a PCUpd message with the specific TE- | binding value, it MUST send a PCUpd message with the specific TE- | |||
| PATH-BINDING TLV with R flag set to 1. If a PCE wishes to modify a | PATH-BINDING TLV with R flag set to 1. If a PCE wishes to modify a | |||
| previously requested binding value, it MUST request the withdrawal of | previously requested binding value, it MUST request the withdrawal of | |||
| the former binding value (with R flag set in the former TE-PATH- | the former binding value (with R flag set in the former TE-PATH- | |||
| BINDING TLV) and include a new TE-PATH-BINDING TLV containing the new | BINDING TLV) and include a new TE-PATH-BINDING TLV containing the new | |||
| binding value. | binding value. If a PCC receives a PCUpd message with TE-PATH- | |||
| BINDING TLV where the R flag is set to 1, but either the binding | ||||
| value is missing (empty TE-PATH-BINDING TLV) or the binding value is | ||||
| incorrect, it MUST send a PCErr message with Error-Type = TBD2 | ||||
| ("Binding label/SID failure") and Error Value = TBD6 ("Unable to | ||||
| remove the binding value"). | ||||
| In some cases, a stateful PCE may want to request that the PCC | In some cases, a stateful PCE may want to request that the PCC | |||
| allocate a binding value of the PCC's own choosing. It instructs the | allocate a binding value of the PCC's own choosing. It instructs the | |||
| PCC by sending a PCUpd message containing an empty TE-PATH-BINDING | PCC by sending a PCUpd message containing an empty TE-PATH-BINDING | |||
| TLV, i.e., no binding value is specified (bringing the Length field | TLV, i.e., no binding value is specified (bringing the Length field | |||
| of the TLV to 4). A PCE can also request a PCC to allocate a binding | of the TLV to 4). A PCE can also request a PCC to allocate a binding | |||
| value at the time of initiation by sending a PCInitiate message with | value at the time of initiation by sending a PCInitiate message with | |||
| an empty TE-PATH-BINDING TLV. Only one such instance of empty TE- | an empty TE-PATH-BINDING TLV. Only one such instance of empty TE- | |||
| PATH-BINDING TLV SHOULD be included in the LSP object and others | PATH-BINDING TLV, per BT, SHOULD be included in the LSP object and | |||
| ignored on receipt. If the PCC is unable to allocate a new binding | others ignored on receipt. If the PCC is unable to allocate a new | |||
| value as per the specified BT, it MUST send a PCErr message with | binding value as per the specified BT, it MUST send a PCErr message | |||
| Error-Type = TBD2 ("Binding label/SID failure") and Error-Value = | with Error-Type = TBD2 ("Binding label/SID failure") and Error-Value | |||
| TBD5 ("Unable to allocate a new binding label/SID"). | = TBD5 ("Unable to allocate a new binding label/SID"). | |||
| As previously noted, if a message contains an invalid TE-PATH-BINDING | As previously noted, if a message contains an invalid TE-PATH-BINDING | |||
| TLV that leads to an error condition, the whole message is rejected | TLV that leads to an error condition, the whole message is rejected | |||
| including any other valid instances of TE-PATH-BINDING TLVs, if any. | including any other valid instances of TE-PATH-BINDING TLVs, if any. | |||
| The resulting error message MAY include the offending TE-PATH-BINDING | The resulting error message MAY include the offending TE-PATH-BINDING | |||
| TLV in the PCEP-ERROR object. | TLV in the PCEP-ERROR object. | |||
| If a PCC receives a TE-PATH-BINDING TLV in any message other than | If a PCC receives a TE-PATH-BINDING TLV in any message other than | |||
| PCUpd or PCInitiate, it MUST close the corresponding PCEP session | PCUpd or PCInitiate, it MUST close the corresponding PCEP session | |||
| with the reason "Reception of a malformed PCEP message" (according to | with the reason "Reception of a malformed PCEP message" (according to | |||
| skipping to change at page 11, line 12 ¶ | skipping to change at page 12, line 12 ¶ | |||
| the PCE MUST close the corresponding PCEP session with the reason | the PCE MUST close the corresponding PCEP session with the reason | |||
| "Reception of a malformed PCEP message" (according to [RFC5440]). | "Reception of a malformed PCEP message" (according to [RFC5440]). | |||
| If a TE-PATH-BINDING TLV is absent in the PCRpt message and no | If a TE-PATH-BINDING TLV is absent in the PCRpt message and no | |||
| binding values were reported before, the PCE MUST assume that the | binding values were reported before, the PCE MUST assume that the | |||
| corresponding LSP does not have any binding. Similarly, if TE-PATH- | corresponding LSP does not have any binding. Similarly, if TE-PATH- | |||
| BINDING TLV is absent in the PCUpd message and no binding values were | BINDING TLV is absent in the PCUpd message and no binding values were | |||
| reported before, the PCC's local policy dictates how the binding | reported before, the PCC's local policy dictates how the binding | |||
| allocations are made for a given LSP. | allocations are made for a given LSP. | |||
| Note that some binding types have similar information but different | ||||
| binding value formats. For example, BT=(2 or 3) is used for the SRv6 | ||||
| SID and BT=(0 or 1) is used for the MPLS Label. In case 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 message | ||||
| with Error-Type = TBD2 ("Binding label/SID failure") and Error-Value | ||||
| = TBD7 ("Inconsistent binding types"). | ||||
| 6. Binding SID in SR-ERO | 6. Binding SID in SR-ERO | |||
| In PCEP messages, LSP route information is carried in the Explicit | In PCEP messages, LSP route information is carried in the Explicit | |||
| Route Object (ERO), which consists of a sequence of subobjects. | Route Object (ERO), which consists of a sequence of subobjects. | |||
| [RFC8664] defines the "SR-ERO subobject" capable of carrying a SID as | [RFC8664] defines the "SR-ERO subobject" capable of carrying a SID as | |||
| well as the identity of the node/adjacency (NAI) represented by the | well as the identity of the node/adjacency (NAI) represented by the | |||
| SID. The NAI Type (NT) field indicates the type and format of the | SID. The NAI Type (NT) field indicates the type and format of the | |||
| NAI contained in the SR-ERO. In case of binding SID, the NAI MUST | NAI contained in the SR-ERO. In case of binding SID, the NAI MUST | |||
| NOT be included and NT MUST be set to zero. [RFC8664] Section 5.2.1 | NOT be included and NT MUST be set to zero. [RFC8664] Section 5.2.1 | |||
| specifies bit settings and error handling in the case when NT=0. | specifies bit settings and error handling in the case when NT=0. | |||
| skipping to change at page 11, line 46 ¶ | skipping to change at page 13, line 5 ¶ | |||
| own accord in the case where the PCE also controls the label space of | own accord in the case where the PCE also controls the label space of | |||
| the PCC and can make the label allocation on its own as described in | the PCC and can make the label allocation on its own as described in | |||
| [RFC8283]. Note that the act of requesting a specific binding value | [RFC8283]. Note that the act of requesting a specific binding value | |||
| (Section 5) is different from the act of allocating a binding label/ | (Section 5) is different from the act of allocating a binding label/ | |||
| SID as described in this section. | SID as described in this section. | |||
| [RFC8283] introduces the architecture for PCE as a central controller | [RFC8283] introduces the architecture for PCE as a central controller | |||
| as an extension of the architecture described in [RFC4655] and | as an extension of the architecture described in [RFC4655] and | |||
| assumes the continued use of PCEP as the protocol used between PCE | assumes the continued use of PCEP as the protocol used between PCE | |||
| and PCC. [RFC9050] specifies the procedures and PCEP extensions for | and PCC. [RFC9050] specifies the procedures and PCEP extensions for | |||
| using the PCE as the central controller. | using the PCE as the central controller. It assumes that the | |||
| exclusive label range to be used by a PCE is known and set on both | ||||
| PCEP peers. A future extension could add the capability to advertise | ||||
| this range via a possible PCEP extension as well (see | ||||
| [I-D.li-pce-controlled-id-space]). | ||||
| When PCECC operations are supported as per [RFC9050], the binding | When PCECC operations are supported as per [RFC9050], the binding | |||
| label/SID MAY also be allocated by the PCE itself. Both peers need | label/SID MAY also be allocated by the PCE itself. Both peers need | |||
| to exchange the PCECC capability as described in [RFC9050] before the | to exchange the PCECC capability as described in [RFC9050] before the | |||
| PCE can allocate the binding label/SID on its own. | PCE can allocate the binding label/SID on its own. | |||
| A new P flag in the LSP object [RFC8231] is introduced to indicate | A new P flag in the LSP object [RFC8231] is introduced to indicate | |||
| that the allocation needs to be made by the PCE: | that the allocation needs to be made by the PCE. Note that the P | |||
| flag could be used for other types of allocations (such as path | ||||
| segments [I-D.ietf-pce-sr-path-segment]) in future. | ||||
| * P (PCE-allocated binding label/SID): If the bit is set to 1, it | * P (PCE-allocation): If the bit is set to 1, it indicates that the | |||
| indicates that the PCC requests PCE to make allocations for this | PCC requests PCE to make allocations for this LSP. The TE-PATH- | |||
| LSP. The TE-PATH-BINDING TLV in the LSP object identifies that | BINDING TLV in the LSP object identifies that the allocation is | |||
| the allocation is for a binding label/SID. A PCC MUST set this | for a binding label/SID. A PCC MUST set this bit to 1 and include | |||
| bit to 1 and include a TE-PATH-BINDING TLV in the LSP object if it | a TE-PATH-BINDING TLV in the LSP object if it wishes to request | |||
| wishes to request for allocation of binding label/SID by the PCE | for allocation of binding label/SID by the PCE in the PCEP | |||
| in the PCEP message. A PCE MUST also set this bit to 1 and | message. A PCE MUST also set this bit to 1 and include a TE-PATH- | |||
| include a TE-PATH-BINDING TLV to indicate that the binding label/ | BINDING TLV to indicate that the binding label/SID is allocated by | |||
| SID is allocated by PCE and encoded in the PCEP message towards | PCE and encoded in the PCEP message towards the PCC. Further, if | |||
| the PCC. Further, a PCE MUST set this bit to 0 and include a TE- | the binding label/SID is allocated by the PCC, the PCE MUST set | |||
| PATH-BINDING TLV in the LSP object if it wishes to indicate that | this bit to 0 and follow the procedure described in Section 5. | |||
| the binding label/SID should be allocated by the PCC as described | ||||
| in Section 5. | ||||
| Note that - | Note that - | |||
| * A PCE could allocate the binding label/SID of its own accord for a | * A PCE could allocate the binding label/SID of its own accord for a | |||
| PCE-initiated or delegated LSP, and inform the PCC in the | PCE-initiated or delegated LSP, and inform the PCC in the | |||
| PCInitiate message or PCUpd message by setting P=1 and including | PCInitiate message or PCUpd message by setting P=1 and including | |||
| TE-PATH-BINDING TLV in the LSP object. | TE-PATH-BINDING TLV in the LSP object. | |||
| * To let the PCC allocate the binding label/SID, a PCE MUST set P=0 | * To let the PCC allocate the binding label/SID, a PCE MUST set P=0 | |||
| and include an empty TE-PATH-BINDING TLV ( i.e., no binding value | and include an empty TE-PATH-BINDING TLV ( i.e., no binding value | |||
| is specified) in the LSP object in PCInitiate/PCUpd message. | is specified) in the LSP object in PCInitiate/PCUpd message. | |||
| * To request that the PCE allocate the binding label/SID, a PCC MUST | * To request that the PCE allocate the binding label/SID, a PCC MUST | |||
| set P=1, D=1, and include an empty TE-PATH-BINDING TLV in PCRpt | set P=1, D=1, and include an empty TE-PATH-BINDING TLV in PCRpt | |||
| message. The PCE SHOULD allocate it and respond to the PCC with | message. The PCE will attempt to allocate it and respond to the | |||
| PCUpd message including the allocated binding label/SID in the TE- | PCC with PCUpd message including the allocated binding label/SID | |||
| PATH-BINDING TLV and P=1, D=1 in the LSP object. If the PCE is | in the TE-PATH-BINDING TLV and P=1, D=1 in the LSP object. If the | |||
| unable to allocate, it MUST send a PCErr message with Error-Type = | PCE is unable to allocate, it MUST send a PCErr message with | |||
| TBD2 ("Binding label/SID failure") and Error-Value = TBD5 ("Unable | Error-Type = TBD2 ("Binding label/SID failure") and Error-Value = | |||
| to allocate a new binding label/SID"). | TBD5 ("Unable to allocate a new binding label/SID"). | |||
| * If one or both speakers (PCE and PCC) have not indicated support | * If one or both speakers (PCE and PCC) have not indicated support | |||
| and willingness to use the PCEP extensions for the PCECC as per | and willingness to use the PCEP extensions for the PCECC as per | |||
| [RFC9050] and a PCEP peer receives P=1 in the LSP object, it MUST: | [RFC9050] and a PCEP peer receives P=1 in the LSP object, it MUST: | |||
| - send a PCErr message with Error-Type=19 (Invalid Operation) and | - send a PCErr message with Error-Type=19 (Invalid Operation) and | |||
| Error-value=16 (Attempted PCECC operations when PCECC | Error-value=16 (Attempted PCECC operations when PCECC | |||
| capability was not advertised) and | capability was not advertised) and | |||
| - terminate the PCEP session. | - terminate the PCEP session. | |||
| skipping to change at page 13, line 17 ¶ | skipping to change at page 14, line 27 ¶ | |||
| It is assumed that the label range to be used by a PCE is known and | It is assumed that the label range to be used by a PCE is known and | |||
| set on both PCEP peers. The exact mechanism is out of the scope of | set on both PCEP peers. The exact mechanism is out of the scope of | |||
| [RFC9050] or this document. Note that the specific BSID could be | [RFC9050] or this document. Note that the specific BSID could be | |||
| from the PCE-controlled or the PCC-controlled label space. The PCE | from the PCE-controlled or the PCC-controlled label space. The PCE | |||
| can directly allocate the label from the PCE-controlled label space | can directly allocate the label from the PCE-controlled label space | |||
| using P=1 as described above, whereas the PCE can request the | using P=1 as described above, whereas the PCE can request the | |||
| allocation of a specific BSID from the PCC-controlled label space | allocation of a specific BSID from the PCC-controlled label space | |||
| with P=0 as described in Section 5. | with P=0 as described in Section 5. | |||
| Note that, the P-Flag in the LSP object SHOULD NOT be set to 1 | ||||
| without the presence of TE-PATH-BINDING TLV or any other future TLV | ||||
| defined for PCE allocation. On receipt of such an LSP object, the | ||||
| P-Flag is ignored. The presence of TE-PATH-BINDING TLV with P=1 | ||||
| indicates the allocation is for the binding label/SID. In the | ||||
| future, some other TLV (such as one defined in | ||||
| [I-D.ietf-pce-sr-path-segment]) could also be used alongside P=1 to | ||||
| indicate allocation of a different attribute. A future document | ||||
| should not attempt to assign semantics to P=1 without limiting its | ||||
| scope that both PCEP peers could agree on. | ||||
| 9. Implementation Status | 9. Implementation Status | |||
| [Note to the RFC Editor - remove this section before publication, as | [Note to the RFC Editor - remove this section before publication, as | |||
| well as remove the reference to RFC 7942.] | well as remove the reference to RFC 7942.] | |||
| This section records the status of known implementations of the | This section records the status of known implementations of the | |||
| protocol defined by this specification at the time of posting of this | protocol defined by this specification at the time of posting of this | |||
| Internet-Draft, and is based on a proposal described in [RFC7942]. | Internet-Draft, and is based on a proposal described in [RFC7942]. | |||
| The description of implementations in this section is intended to | The description of implementations in this section is intended to | |||
| assist the IETF in its decision processes in progressing drafts to | assist the IETF in its decision processes in progressing drafts to | |||
| RFCs. Please note that the listing of any individual implementation | RFCs. Please note that the listing of any individual implementation | |||
| here does not imply endorsement by the IETF. Furthermore, no effort | here does not imply endorsement by the IETF. Furthermore, no effort | |||
| has been spent to verify the information presented here that was | has been spent to verify the information presented here that was | |||
| supplied by IETF contributors. This is not intended as, and must not | supplied by IETF contributors. This is not intended as, and must not | |||
| be construed to be, a catalog of available implementations or their | be construed to be, a catalog of available implementations or their | |||
| skipping to change at page 14, line 20 ¶ | skipping to change at page 16, line 4 ¶ | |||
| * Organization: Cisco Systems | * Organization: Cisco Systems | |||
| * Implementation: Head-end and controller. | * Implementation: Head-end and controller. | |||
| * Description: An experimental code-point is used and will be | * Description: An experimental code-point is used and will be | |||
| modified to the value allocated in this document. | modified to the value allocated in this document. | |||
| * Maturity Level: Production | * Maturity Level: Production | |||
| * Coverage: Full | * Coverage: Full | |||
| * Contact: mkoldych@cisco.com | * Contact: mkoldych@cisco.com | |||
| 10. Security Considerations | 10. Security Considerations | |||
| The security considerations described in [RFC5440], [RFC8231], | The security considerations described in [RFC5440], [RFC8231], | |||
| [RFC8281] and [RFC8664] are applicable to this specification. No | [RFC8281], [RFC8664], and [RFC9050] are applicable to this | |||
| additional security measure is required. | specification. No additional security measure is required. | |||
| As described in [RFC8664], SR allows a network controller to | As described in [RFC8402] and [RFC8664], SR intrinsically involves an | |||
| instantiate and control paths in the network. A rogue PCE can | entity (whether head-end or a central network controller) controlling | |||
| manipulate binding SID allocations to move traffic around for some | and instantiating paths in the network without the involvement of | |||
| other LSP that uses BSID in its SR-ERO. Note that path {A, B, BSID} | (other) nodes along those paths. Binding SIDs are in effect | |||
| can be misdirected just by assigning the BSID value to a different | shorthand aliases for longer path representations, and the alias | |||
| LSP making it a lot easier to misdirect traffic (and harder to | expansion is in principle known only by the node that acts on it. In | |||
| detect). | this document, the expansion of the alias is shared between PCC and | |||
| PCE, and rogue actions by either PCC or PCE could result in shifting | ||||
| or misdirecting traffic in ways that are hard for other nodes to | ||||
| detect. In particular, when a PCE propagates paths of the form {A, | ||||
| B, BSID} to other entities, the BSID values are opaque, and a rogue | ||||
| PCE can substitute a BSID from a different LSP in such paths to move | ||||
| traffic without the recipient of the path knowing the ultimate | ||||
| destination. | ||||
| Note that in case of BT as 3, the manipulation of SID structure could | The case of BT=3 provides additional opportunities for malfeasance, | |||
| be exploited by falsifying the various length values. | as it purports to convey information about internal SRv6 SID | |||
| structure. There is no mechanism defined to validate this internal | ||||
| structure information, and mischaracterizing the division of bits | ||||
| into locator block, locator node, function, and argument can result | ||||
| in different interpretation of the bits by PCC and PCE. Most | ||||
| notably, shifting bits into or out of the "argument" is a direct | ||||
| vector for affecting processing, but other attacks are also possible. | ||||
| Thus, as per [RFC8231], it is RECOMMENDED that these PCEP extensions | Thus, as per [RFC8231], it is RECOMMENDED that these PCEP extensions | |||
| only be activated on authenticated and encrypted sessions across PCEs | only be activated on authenticated and encrypted sessions across PCEs | |||
| and PCCs belonging to the same administrative authority, using | and PCCs belonging to the same administrative authority, using | |||
| Transport Layer Security (TLS) [RFC8253], as per the recommendations | Transport Layer Security (TLS) [RFC8253], as per the recommendations | |||
| and best current practices in BCP195 [RFC7525] (unless explicitly set | and best current practices in BCP195 [RFC7525] (unless explicitly set | |||
| aside in [RFC8253]). | aside in [RFC8253]). | |||
| 11. Manageability Considerations | 11. Manageability Considerations | |||
| skipping to change at page 17, line 4 ¶ | skipping to change at page 18, line 46 ¶ | |||
| Table 2 | Table 2 | |||
| IANA is requested to create a new subregistry "TE-PATH-BINDING TLV | IANA is requested to create a new subregistry "TE-PATH-BINDING TLV | |||
| Flag field" to manage the Flag field in the TE-PATH-BINDING TLV. New | Flag field" to manage the Flag field in the TE-PATH-BINDING TLV. New | |||
| values are to be assigned by Standards Action [RFC8126]. Each bit | values are to be assigned by Standards Action [RFC8126]. Each bit | |||
| should be tracked with the following qualities: | should be tracked with the following qualities: | |||
| * Bit number (count from 0 as the most significant bit) | * Bit number (count from 0 as the most significant bit) | |||
| * Description | * Description | |||
| * Reference | ||||
| * Reference | ||||
| +=====+=============+===============+ | +=====+=============+===============+ | |||
| | Bit | Description | Reference | | | Bit | Description | Reference | | |||
| +=====+=============+===============+ | +=====+=============+===============+ | |||
| +-----+-------------+---------------+ | +-----+-------------+---------------+ | |||
| | 0 | R (Removal) | This document | | | 0 | R (Removal) | This document | | |||
| +-----+-------------+---------------+ | +-----+-------------+---------------+ | |||
| | 1-7 | Unassigned | This document | | | 1-7 | Unassigned | This document | | |||
| +-----+-------------+---------------+ | +-----+-------------+---------------+ | |||
| Table 3 | Table 3 | |||
| 12.2. LSP Object | 12.2. LSP Object | |||
| IANA is requested to confirm the early allocation for a new code- | IANA is requested to confirm the early allocation for a new code- | |||
| point in the "LSP Object Flag Field" sub-registry for the new P flag | point in the "LSP Object Flag Field" sub-registry for the new P flag | |||
| as follows: | as follows: | |||
| +=====+=================================+===============+ | +=====+================+===============+ | |||
| | Bit | Description | Reference | | | Bit | Description | Reference | | |||
| +=====+=================================+===============+ | +=====+================+===============+ | |||
| +-----+---------------------------------+---------------+ | +-----+----------------+---------------+ | |||
| | 0 | PCE-allocated binding label/SID | This document | | | 0 | PCE-allocation | This document | | |||
| +-----+---------------------------------+---------------+ | +-----+----------------+---------------+ | |||
| Table 4 | Table 4 | |||
| 12.3. PCEP Error Type and Value | 12.3. PCEP Error Type and Value | |||
| This document defines a new Error-type and associated Error-Values | This document defines a new Error-type and associated Error-Values | |||
| for the PCErr message. IANA is requested to allocate new error-type | for the PCErr message. IANA is requested to allocate new error-type | |||
| and error-values within the "PCEP-ERROR Object Error Types and | and error-values within the "PCEP-ERROR Object Error Types and | |||
| Values" subregistry of the PCEP Numbers registry, as follows: | Values" subregistry of the PCEP Numbers registry, as follows: | |||
| +============+================+========================+===========+ | +============+================+========================+===========+ | |||
| | Error-Type | Meaning | Error-value | Reference | | | Error-Type | Meaning | Error-value | Reference | | |||
| skipping to change at page 18, line 23 ¶ | skipping to change at page 20, line 23 ¶ | |||
| | | | | document | | | | | | document | | |||
| +------------+----------------+------------------------+-----------+ | +------------+----------------+------------------------+-----------+ | |||
| | | | TBD4: Unable to | This | | | | | TBD4: Unable to | This | | |||
| | | | allocate the specified | document | | | | | allocate the specified | document | | |||
| | | | binding value | | | | | | binding value | | | |||
| +------------+----------------+------------------------+-----------+ | +------------+----------------+------------------------+-----------+ | |||
| | | | TBD5: Unable to | This | | | | | TBD5: Unable to | This | | |||
| | | | allocate a new binding | document | | | | | allocate a new binding | document | | |||
| | | | label/SID | | | | | | label/SID | | | |||
| +------------+----------------+------------------------+-----------+ | +------------+----------------+------------------------+-----------+ | |||
| | | | TBD6: Unable to remove | This | | ||||
| | | | the binding value | document | | ||||
| +------------+----------------+------------------------+-----------+ | ||||
| | | | TBD7: Inconsistent | This | | ||||
| | | | binding types | document | | ||||
| +------------+----------------+------------------------+-----------+ | ||||
| Table 5 | Table 5 | |||
| 13. Acknowledgements | 13. Acknowledgements | |||
| We would like to thank Milos Fabian, Mrinmoy Das, Andrew Stone, Tom | We would like to thank Milos Fabian, Mrinmoy Das, Andrew Stone, Tom | |||
| Petch, Aijun Wang, Olivier Dugeon, and Adrian Farrel for their | Petch, Aijun Wang, Olivier Dugeon, and Adrian Farrel for their | |||
| valuable comments. | valuable comments. | |||
| Thanks to Julien Meuric for shepherding. Thanks to John Scudder for | Thanks to Julien Meuric for shepherding. Thanks to John Scudder for | |||
| the AD review. | the AD review. | |||
| Thanks to Theresa Enghardt for GENART review. | Thanks to Theresa Enghardt for the GENART review. | |||
| Thanks to Martin Vigoureux, Benjamin Kaduk, Eric Vyncke, Lars Eggert, | ||||
| Murray Kucherawy, and Erik Kline for the IESG reviews. | ||||
| 14. References | 14. References | |||
| 14.1. Normative References | 14.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| skipping to change at page 21, line 5 ¶ | skipping to change at page 23, line 16 ¶ | |||
| Computation Element (PCE)-Based Architecture", RFC 4655, | Computation Element (PCE)-Based Architecture", RFC 4655, | |||
| DOI 10.17487/RFC4655, August 2006, | DOI 10.17487/RFC4655, August 2006, | |||
| <https://www.rfc-editor.org/info/rfc4655>. | <https://www.rfc-editor.org/info/rfc4655>. | |||
| [RFC8283] Farrel, A., Ed., Zhao, Q., Ed., Li, Z., and C. Zhou, "An | [RFC8283] Farrel, A., Ed., Zhao, Q., Ed., Li, Z., and C. Zhou, "An | |||
| Architecture for Use of PCE and the PCE Communication | Architecture for Use of PCE and the PCE Communication | |||
| Protocol (PCEP) in a Network with Central Control", | Protocol (PCEP) in a Network with Central Control", | |||
| RFC 8283, DOI 10.17487/RFC8283, December 2017, | RFC 8283, DOI 10.17487/RFC8283, December 2017, | |||
| <https://www.rfc-editor.org/info/rfc8283>. | <https://www.rfc-editor.org/info/rfc8283>. | |||
| [RFC8669] Previdi, S., Filsfils, C., Lindem, A., Ed., Sreekantiah, | [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., | |||
| A., and H. Gredler, "Segment Routing Prefix Segment | Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header | |||
| Identifier Extensions for BGP", RFC 8669, | (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, | |||
| DOI 10.17487/RFC8669, December 2019, | <https://www.rfc-editor.org/info/rfc8754>. | |||
| <https://www.rfc-editor.org/info/rfc8669>. | ||||
| [I-D.ietf-spring-segment-routing-policy] | [I-D.ietf-spring-segment-routing-policy] | |||
| Filsfils, C., Talaulikar, K., Voyer, D., Bogdanov, A., and | Filsfils, C., Talaulikar, K., Voyer, D., Bogdanov, A., and | |||
| P. Mattes, "Segment Routing Policy Architecture", Work in | P. Mattes, "Segment Routing Policy Architecture", Work in | |||
| Progress, Internet-Draft, draft-ietf-spring-segment- | Progress, Internet-Draft, draft-ietf-spring-segment- | |||
| routing-policy-14, 25 October 2021, | routing-policy-16, 28 January 2022, | |||
| <https://www.ietf.org/archive/id/draft-ietf-spring- | <https://www.ietf.org/archive/id/draft-ietf-spring- | |||
| segment-routing-policy-14.txt>. | segment-routing-policy-16.txt>. | |||
| [I-D.ietf-pce-pcep-yang] | [I-D.ietf-pce-pcep-yang] | |||
| Dhody, D., Hardwick, J., Beeram, V. P., and J. Tantsura, | Dhody, D., Hardwick, J., Beeram, V. P., and J. Tantsura, | |||
| "A YANG Data Model for Path Computation Element | "A YANG Data Model for Path Computation Element | |||
| Communications Protocol (PCEP)", Work in Progress, | Communications Protocol (PCEP)", Work in Progress, | |||
| Internet-Draft, draft-ietf-pce-pcep-yang-17, 23 October | Internet-Draft, draft-ietf-pce-pcep-yang-18, 25 January | |||
| 2021, <https://www.ietf.org/archive/id/draft-ietf-pce- | 2022, <https://www.ietf.org/archive/id/draft-ietf-pce- | |||
| pcep-yang-17.txt>. | pcep-yang-18.txt>. | |||
| [I-D.li-pce-controlled-id-space] | ||||
| Li, C., Chen, M., Wang, A., Cheng, W., and C. Zhou, "PCE | ||||
| Controlled ID Space", Work in Progress, Internet-Draft, | ||||
| draft-li-pce-controlled-id-space-09, 22 August 2021, | ||||
| <https://www.ietf.org/archive/id/draft-li-pce-controlled- | ||||
| id-space-09.txt>. | ||||
| [I-D.ietf-pce-sr-path-segment] | ||||
| Li, C., Chen, M., Cheng, W., Gandhi, R., and Q. Xiong, | ||||
| "Path Computation Element Communication Protocol (PCEP) | ||||
| Extension for Path Segment in Segment Routing (SR)", Work | ||||
| in Progress, Internet-Draft, draft-ietf-pce-sr-path- | ||||
| segment-04, 12 August 2021, | ||||
| <https://www.ietf.org/archive/id/draft-ietf-pce-sr-path- | ||||
| segment-04.txt>. | ||||
| Appendix A. Contributor Addresses | Appendix A. Contributor Addresses | |||
| Jonathan Hardwick | Jonathan Hardwick | |||
| Metaswitch Networks | Metaswitch Networks | |||
| 33 Genotin Road | 33 Genotin Road | |||
| Enfield | Enfield | |||
| United Kingdom | United Kingdom | |||
| EMail: Jonathan.Hardwick@metaswitch.com | EMail: Jonathan.Hardwick@metaswitch.com | |||
| Dhruv Dhody | Dhruv Dhody | |||
| Huawei Technologies | Huawei Technologies | |||
| End of changes. 45 change blocks. | ||||
| 133 lines changed or deleted | 235 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||