| < draft-ietf-pce-segment-routing-11.txt | draft-ietf-pce-segment-routing-12.txt > | |||
|---|---|---|---|---|
| PCE S. Sivabalan | PCE S. Sivabalan | |||
| Internet-Draft C. Filsfils | Internet-Draft C. Filsfils | |||
| Intended status: Standards Track Cisco Systems, Inc. | Intended status: Standards Track Cisco Systems, Inc. | |||
| Expires: May 24, 2018 J. Tantsura | Expires: December 31, 2018 J. Tantsura | |||
| Individual | Individual | |||
| W. Henderickx | W. Henderickx | |||
| Nokia | Nokia | |||
| J. Hardwick | J. Hardwick | |||
| Metaswitch Networks | Metaswitch Networks | |||
| November 20, 2017 | June 29, 2018 | |||
| PCEP Extensions for Segment Routing | PCEP Extensions for Segment Routing | |||
| draft-ietf-pce-segment-routing-11 | draft-ietf-pce-segment-routing-12 | |||
| Abstract | Abstract | |||
| Segment Routing (SR) enables any head-end node to select any path | Segment Routing (SR) enables any head-end node to select any path | |||
| without relying on a hop-by-hop signaling technique (e.g., LDP or | without relying on a hop-by-hop signaling technique (e.g., LDP or | |||
| RSVP-TE). It depends only on "segments" that are advertised by Link- | RSVP-TE). It depends only on "segments" that are advertised by Link- | |||
| State Interior Gateway Protocols (IGPs). A Segment Routed Path can | State Interior Gateway Protocols (IGPs). A Segment Routed Path can | |||
| be derived from a variety of mechanisms, including an IGP Shortest | be derived from a variety of mechanisms, including an IGP Shortest | |||
| Path Tree (SPT), explicit configuration, or a Path Computation | Path Tree (SPT), explicit configuration, or a Path Computation | |||
| Element (PCE). This document specifies extensions to the Path | Element (PCE). This document specifies extensions to the Path | |||
| Computation Element Protocol (PCEP) that allow a stateful PCE to | Computation Element Protocol (PCEP) that allow a stateful PCE to | |||
| compute and initiate Traffic Engineering (TE) paths, as well as a PCC | compute and initiate Traffic Engineering (TE) paths, as well as a PCC | |||
| to request a path subject to certain constraint(s) and optimization | to request a path subject to certain constraints and optimization | |||
| criteria in SR networks. | criteria in SR networks. | |||
| Requirements Language | 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", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| document are to be interpreted as described in [RFC2119]. | "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. | ||||
| 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 http://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 May 24, 2018. | This Internet-Draft will expire on December 31, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2018 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 | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Overview of PCEP Operation in SR Networks . . . . . . . . . . 5 | 3. Overview of PCEP Operation in SR Networks . . . . . . . . . . 5 | |||
| 4. SR-Specific PCEP Message Extensions . . . . . . . . . . . . . 6 | 4. SR-Specific PCEP Message Extensions . . . . . . . . . . . . . 7 | |||
| 5. Object Formats . . . . . . . . . . . . . . . . . . . . . . . 7 | 5. Object Formats . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 5.1. The OPEN Object . . . . . . . . . . . . . . . . . . . . . 7 | 5.1. The OPEN Object . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 5.1.1. The SR PCE Capability sub-TLV . . . . . . . . . . . . 7 | 5.1.1. The SR PCE Capability sub-TLV . . . . . . . . . . . . 7 | |||
| 5.1.2. Exchanging the SR PCE Capability . . . . . . . . . . 8 | 5.2. The RP/SRP Object . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5.2. The RP/SRP Object . . . . . . . . . . . . . . . . . . . . 9 | 5.3. ERO . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5.3. ERO Object . . . . . . . . . . . . . . . . . . . . . . . 9 | 5.3.1. SR-ERO Subobject . . . . . . . . . . . . . . . . . . 9 | |||
| 5.3.1. SR-ERO Subobject . . . . . . . . . . . . . . . . . . 10 | 5.3.2. NAI Associated with SID . . . . . . . . . . . . . . . 11 | |||
| 5.3.2. NAI Associated with SID . . . . . . . . . . . . . . . 12 | 5.4. RRO . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 5.3.3. ERO Processing . . . . . . . . . . . . . . . . . . . 13 | 5.5. METRIC Object . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 5.4. RRO Object . . . . . . . . . . . . . . . . . . . . . . . 14 | 6. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 5.4.1. RRO Processing . . . . . . . . . . . . . . . . . . . 14 | 6.1. Exchanging the SR PCE Capability . . . . . . . . . . . . 13 | |||
| 5.5. METRIC Object . . . . . . . . . . . . . . . . . . . . . . 15 | 6.2. ERO Processing . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 6. Backward Compatibility . . . . . . . . . . . . . . . . . . . 15 | 6.2.1. SR-ERO Validation . . . . . . . . . . . . . . . . . . 15 | |||
| 7. Management Considerations . . . . . . . . . . . . . . . . . . 16 | 6.2.2. Interpreting the SR-ERO . . . . . . . . . . . . . . . 17 | |||
| 7.1. Policy . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 6.3. RRO Processing . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 7.2. The PCEP Data Model . . . . . . . . . . . . . . . . . . . 16 | 7. Backward Compatibility . . . . . . . . . . . . . . . . . . . 20 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | 8. Management Considerations . . . . . . . . . . . . . . . . . . 21 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | 8.1. Controlling the Path Setup Type . . . . . . . . . . . . . 21 | |||
| 9.1. PCEP Objects . . . . . . . . . . . . . . . . . . . . . . 16 | 8.2. Migrating a Network to Use PCEP Segment Routed Paths . . 22 | |||
| 9.2. PCEP-Error Object . . . . . . . . . . . . . . . . . . . . 17 | 8.3. Verification of Network Operation . . . . . . . . . . . . 23 | |||
| 9.3. PCEP TLV Type Indicators . . . . . . . . . . . . . . . . 18 | 8.4. Relationship to Existing Management Models . . . . . . . 24 | |||
| 9.4. New Path Setup Type . . . . . . . . . . . . . . . . . . . 18 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 24 | |||
| 9.5. New Metric Type . . . . . . . . . . . . . . . . . . . . . 18 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 18 | 10.1. PCEP Objects . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18 | 10.2. New NAI Type Registry . . . . . . . . . . . . . . . . . 24 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 10.3. New SR-ERO Flag Registry . . . . . . . . . . . . . . . . 25 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 19 | 10.4. PCEP-Error Object . . . . . . . . . . . . . . . . . . . 25 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 20 | 10.5. PCEP TLV Type Indicators . . . . . . . . . . . . . . . . 27 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 | 10.6. New Path Setup Type . . . . . . . . . . . . . . . . . . 27 | |||
| 10.7. New Metric Type . . . . . . . . . . . . . . . . . . . . 27 | ||||
| 10.8. SR PCE Capability Flags . . . . . . . . . . . . . . . . 27 | ||||
| 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
| 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 28 | ||||
| 13.2. Informative References . . . . . . . . . . . . . . . . . 30 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 31 | ||||
| 1. Introduction | 1. Introduction | |||
| SR technology leverages the source routing and tunneling paradigms. | Segment Routing (SR) technology leverages the source routing and | |||
| A source node can choose a path without relying on hop-by-hop | tunneling paradigms. A source node can choose a path without relying | |||
| signaling protocols such as LDP or RSVP-TE. Each path is specified | on hop-by-hop signaling protocols such as LDP or RSVP-TE. Each path | |||
| as a set of "segments" advertised by link-state routing protocols | is specified as a set of "segments" advertised by link-state routing | |||
| (IS-IS or OSPF). [I-D.ietf-spring-segment-routing] provides an | protocols (IS-IS or OSPF). [I-D.ietf-spring-segment-routing] | |||
| introduction to SR architecture. The corresponding IS-IS and OSPF | provides an introduction to the SR architecture. The corresponding | |||
| extensions are specified in | IS-IS and OSPF extensions are specified in | |||
| [I-D.ietf-isis-segment-routing-extensions] and | [I-D.ietf-isis-segment-routing-extensions] and | |||
| [I-D.ietf-ospf-segment-routing-extensions], respectively. SR | [I-D.ietf-ospf-segment-routing-extensions], respectively. The SR | |||
| architecture defines a "segment" as a piece of information advertised | architecture defines a "segment" as a piece of information advertised | |||
| by a link-state routing protocols, e.g. an IGP prefix or an IGP | by a link-state routing protocols, e.g., an IGP prefix or an IGP | |||
| adjacency. Several types of segments are defined. A Node segment | adjacency. Several types of segments are defined. A Node segment | |||
| represents an ECMP-aware shortest-path computed by IGP to a specific | represents an ECMP-aware shortest-path computed by IGP to a specific | |||
| node, and is always global within SR/IGP domain. An Adjacency | node, and is always identified uniquely within the SR/IGP domain. An | |||
| Segment represents a unidirectional adjacency. An Adjacency Segment | Adjacency Segment represents a unidirectional adjacency. An | |||
| is local to the node which advertises it. Both Node segments and | Adjacency Segment is local to the node which advertises it. Both | |||
| Adjacency segments can be used for SR Traffic Engineering (SR-TE). | Node segments and Adjacency segments can be used for SR Traffic | |||
| Engineering (SR-TE). | ||||
| The SR architecture can be applied to the MPLS forwarding plane | The SR architecture can be implemented using either an MPLS | |||
| without any change, in which case an SR path corresponds to an MPLS | forwarding plane [I-D.ietf-spring-segment-routing-mpls] or an IPv6 | |||
| Label Switching Path (LSP). This document is relevant to the MPLS | forwarding plane [I-D.ietf-6man-segment-routing-header]. The MPLS | |||
| forwarding plane only. In this document, "Node-SID" and "Adjacency- | forwarding plane can be applied to SR without any change, in which | |||
| SID" denote Node Segment Identifier and Adjacency Segment Identifier | case an SR path corresponds to an MPLS Label Switching Path (LSP). | |||
| respectively. | This document is relevant to the MPLS forwarding plane only. In this | |||
| document, "Node-SID" and "Adjacency-SID" denote Node Segment | ||||
| Identifier and Adjacency Segment Identifier respectively. | ||||
| A Segment Routed path (SR path) can be derived from an IGP Shortest | A Segment Routed path (SR path) can be derived from an IGP Shortest | |||
| Path Tree (SPT). SR-TE paths may not follow an IGP SPT. Such paths | Path Tree (SPT). SR-TE paths may not follow an IGP SPT. Such paths | |||
| may be chosen by a suitable network planning tool and provisioned on | may be chosen by a suitable network planning tool and provisioned on | |||
| the ingress node of the SR-TE path. | the ingress node of the SR-TE path. | |||
| [RFC5440] describes the Path Computation Element Protocol (PCEP) for | [RFC5440] describes the Path Computation Element Protocol (PCEP) for | |||
| communication between a Path Computation Client (PCC) and a Path | communication between a Path Computation Client (PCC) and a Path | |||
| Computation Element (PCE) or between a pair of PCEs. A PCE, or a PCC | Computation Element (PCE) or between a pair of PCEs. A PCE computes | |||
| operating as a PCE (in hierarchical PCE environment), computes paths | paths for MPLS Traffic Engineering LSPs (MPLS-TE LSPs) based on | |||
| for MPLS Traffic Engineering LSPs (MPLS-TE LSPs) based on various | various constraints and optimization criteria. [RFC8231] specifies | |||
| constraints and optimization criteria. [RFC8231] specifies | ||||
| extensions to PCEP that allow a stateful PCE to compute and recommend | extensions to PCEP that allow a stateful PCE to compute and recommend | |||
| network paths in compliance with [RFC4657] and defines objects and | network paths in compliance with [RFC4657] and defines objects and | |||
| TLVs for MPLS-TE LSPs. Stateful PCEP extensions provide | TLVs for MPLS-TE LSPs. Stateful PCEP extensions provide | |||
| synchronization of LSP state between a PCC and a PCE or between a | synchronization of LSP state between a PCC and a PCE or between a | |||
| pair of PCEs, delegation of LSP control, reporting of LSP state from | pair of PCEs, delegation of LSP control, reporting of LSP state from | |||
| a PCC to a PCE, controlling the setup and path routing of an LSP from | a PCC to a PCE, controlling the setup and path routing of an LSP from | |||
| a PCE to a PCC. Stateful PCEP extensions are intended for an | a PCE to a PCC. Stateful PCEP extensions are intended for an | |||
| operational model in which LSPs are configured on the PCC, and | operational model in which LSPs are configured on the PCC, and | |||
| control over them is delegated to the PCE. | control over them is delegated to the PCE. | |||
| A mechanism to dynamically initiate LSPs on a PCC based on the | A mechanism to dynamically initiate LSPs on a PCC based on the | |||
| requests from a stateful PCE or a controller using stateful PCE is | requests from a stateful PCE or a controller using stateful PCE is | |||
| specified in [I-D.ietf-pce-pce-initiated-lsp]. This mechanism is | specified in [RFC8281]. This mechanism is useful in Software Defined | |||
| useful in Software Defined Networking (SDN) applications, such as on- | Networking (SDN) applications, such as on-demand engineering, or | |||
| demand engineering, or bandwidth calendaring. | bandwidth calendaring. | |||
| It is possible to use a stateful PCE for computing one or more SR-TE | It is possible to use a stateful PCE for computing one or more SR-TE | |||
| paths taking into account various constraints and objective | paths taking into account various constraints and objective | |||
| functions. Once a path is chosen, the stateful PCE can initiate an | functions. Once a path is chosen, the stateful PCE can initiate an | |||
| SR-TE path on a PCC using PCEP extensions specified in | SR-TE path on a PCC using PCEP extensions specified in [RFC8281] | |||
| [I-D.ietf-pce-pce-initiated-lsp] using the SR specific PCEP | using the SR specific PCEP extensions specified in this document. | |||
| extensions specified in this document. Additionally, using | Additionally, using procedures described in this document, a PCC can | |||
| procedures described in this document, a PCC can request an SR path | request an SR path from either a stateful or a stateless PCE. | |||
| from either stateful or a stateless PCE. This specification relies | ||||
| on the procedures specified in [I-D.ietf-pce-lsp-setup-type]. | This specification relies on the procedures specified in | |||
| [I-D.ietf-pce-lsp-setup-type] to exchange the segment routing | ||||
| capability and to specify that the path setup type of an LSP is | ||||
| segment routing. | ||||
| 2. Terminology | 2. Terminology | |||
| The following terminologies are used in this document: | The following terminologies are used in this document: | |||
| ERO: Explicit Route Object | ERO: Explicit Route Object | |||
| IGP: Interior Gateway Protocol | IGP: Interior Gateway Protocol | |||
| IS-IS: Intermediate System to Intermediate System | IS-IS: Intermediate System to Intermediate System | |||
| skipping to change at page 5, line 4 ¶ | skipping to change at page 5, line 17 ¶ | |||
| NAI: Node or Adjacency Identifier | NAI: Node or Adjacency Identifier | |||
| OSPF: Open Shortest Path First | OSPF: Open Shortest Path First | |||
| PCC: Path Computation Client | PCC: Path Computation Client | |||
| PCE: Path Computation Element | PCE: Path Computation Element | |||
| PCEP: Path Computation Element Protocol | PCEP: Path Computation Element Protocol | |||
| RRO: Record Route Object | RRO: Record Route Object | |||
| SID: Segment Identifier | SID: Segment Identifier | |||
| SR: Segment Routing | SR: Segment Routing | |||
| SR-TE: Segment Routed Traffic Engineering | SR-TE: Segment Routed Traffic Engineering | |||
| TED: Traffic Engineering Database | ||||
| 3. Overview of PCEP Operation in SR Networks | 3. Overview of PCEP Operation in SR Networks | |||
| In SR networks, an ingress node of an SR path appends all outgoing | In an SR network, the ingress node of an SR path prepends an SR | |||
| packets with an SR header consisting of a list of SIDs (or MPLS | header to all outgoing packets. The SR header consists of a list of | |||
| labels in the context of this document). The header has all | SIDs (or MPLS labels in the context of this document). The header | |||
| necessary information to guide the packets from the ingress node to | has all necessary information so that, in combination with the | |||
| the egress node of the path, and hence there is no need for any | information distributed by the IGP, the packets can be guided from | |||
| signaling protocol. | the ingress node to the egress node of the path; hence, there is no | |||
| need for any signaling protocol. | ||||
| In a PCEP session, LSP information is carried in the Explicit Route | In PCEP messages, LSP route information is carried in the Explicit | |||
| Object (ERO), which consists of a sequence of subobjects. Various | Route Object (ERO), which consists of a sequence of subobjects. In | |||
| types of ERO subobjects have been specified in [RFC3209], [RFC3473], | SR networks, an ingress node of an SR path prepends an SR header to | |||
| and [RFC3477]. In SR networks, an ingress node of an SR path appends | all outgoing packets. The SR header consists of a list of SIDs (or | |||
| all outgoing packets with an SR header consisting of a list of SIDs | MPLS labels in the context of this document). SR-TE paths computed | |||
| (or MPLS labels in the context of this document). SR-TE LSPs | by a PCE can be represented in an ERO in one of the following forms: | |||
| computed by a PCE can be represented in one of the following forms: | ||||
| o An ordered set of IP address(es) representing network nodes/links: | o An ordered set of IP addresses representing network nodes/links: | |||
| In this case, the PCC needs to convert the IP address(es) into the | In this case, the PCC needs to convert the IP addresses into the | |||
| corresponding MPLS labels by consulting its Traffic Engineering | corresponding MPLS labels by consulting its Link State Database | |||
| Database (TED). | (LSDB). | |||
| o An ordered set of SID(s). | o An ordered set of SIDs, with or without the corresponding IP | |||
| addresses. | ||||
| o An ordered set of both MPLS label(s) and IP address(es): In this | o An ordered set of MPLS labels and IP addresses: In this case, the | |||
| case, the PCC needs to convert the IP address(es) into the | PCC needs to convert the IP addresses into the corresponding SIDs | |||
| corresponding SID(s) by consulting its TED. | by consulting its LSDB. | |||
| This document defines a new ERO subobject denoted by "SR-ERO | This document defines a new ERO subobject denoted by "SR-ERO | |||
| subobject" capable of carrying a SID as well as the identity of the | subobject" capable of carrying a SID as well as the identity of the | |||
| node/adjacency represented by the SID. SR-capable PCEP speakers | node/adjacency represented by the SID. SR-capable PCEP speakers | |||
| should be able to generate and/or process such ERO subobject. An ERO | should be able to generate and/or process such ERO subobject. An ERO | |||
| containing SR-ERO subobjects can be included in the PCEP Path | containing SR-ERO subobjects can be included in the PCEP Path | |||
| Computation Reply (PCRep) message defined in [RFC5440], the PCEP LSP | Computation Reply (PCRep) message defined in [RFC5440], the PCEP LSP | |||
| Initiate Request message (PCInitiate) defined in | Initiate Request message (PCInitiate) defined in [RFC8281], as well | |||
| [I-D.ietf-pce-pce-initiated-lsp], as well as in the PCEP LSP Update | as in the PCEP LSP Update Request (PCUpd) and PCEP LSP State Report | |||
| Request (PCUpd) and PCEP LSP State Report (PCRpt) messages defined in | (PCRpt) messages defined in [RFC8231]. | |||
| [RFC8231]. | ||||
| When a PCEP session between a PCC and a PCE is established, both PCEP | When a PCEP session between a PCC and a PCE is established, both PCEP | |||
| speakers exchange their capabilites to indicate their ability to | speakers exchange their capabilites to indicate their ability to | |||
| support SR-specific functionality. | support SR-specific functionality. | |||
| An PCE can update an LSP that is initially established via RSVP-TE | An PCE can update an LSP that is initially established via RSVP-TE | |||
| signaling to use an SR-TE path, by sending a PCUpd to the PCC that | signaling to use an SR-TE path, by sending a PCUpd to the PCC that | |||
| delegated the LSP to it ([RFC8231]). Similarly, an LSP initially | delegated the LSP to it ([RFC8231]). Similarly, an LSP initially | |||
| created with an SR-TE path can be updated to use RSVP-TE signaling, | created with an SR-TE path can be updated to use RSVP-TE signaling, | |||
| if necessary. This capability is useful when a network is migrated | if necessary. This capability is useful when a network is migrated | |||
| from RSVP-TE to SR-TE technology. | from RSVP-TE to SR-TE technology. | |||
| A PCC MAY include an RRO object containing the recorded LSP in PCReq | A PCC MAY include an RRO containing the recorded LSP in PCReq and | |||
| and PCRpt messages as specified in [RFC5440] and [RFC8231], | PCRpt messages as specified in [RFC5440] and [RFC8231], respectively. | |||
| respectively. This document defines a new RRO subobject for SR | This document defines a new RRO subobject for SR networks. The | |||
| networks. The methods used by a PCC to record the SR-TE LSP are | methods used by a PCC to record the SR-TE LSP are outside the scope | |||
| outside the scope of this document. | of this document. | |||
| In summary, this document: | In summary, this document: | |||
| o Defines a new ERO subobject, a new RRO subobject and new PCEP | o Defines a new ERO subobject, a new RRO subobject and new PCEP | |||
| error codes. | error codes. | |||
| o Specifies how two PCEP speakers can establish a PCEP session that | o Specifies how two PCEP speakers can establish a PCEP session that | |||
| can carry information about SR-TE paths. | can carry information about SR-TE paths. | |||
| o Specifies processing rules for the ERO subobject. | o Specifies processing rules for the ERO subobject. | |||
| skipping to change at page 6, line 43 ¶ | skipping to change at page 7, line 10 ¶ | |||
| and PATH_SETUP_TYPE_CAPABILITY TLVs | and PATH_SETUP_TYPE_CAPABILITY TLVs | |||
| ([I-D.ietf-pce-lsp-setup-type]). | ([I-D.ietf-pce-lsp-setup-type]). | |||
| o Defines a new sub-TLV for the PATH_SETUP_TYPE_CAPABILITY TLV. | o Defines a new sub-TLV for the PATH_SETUP_TYPE_CAPABILITY TLV. | |||
| The extensions specified in this document complement the existing | The extensions specified in this document complement the existing | |||
| PCEP specifications to support SR-TE paths. As such, the PCEP | PCEP specifications to support SR-TE paths. As such, the PCEP | |||
| messages (e.g., Path Computation Request, Path Computation Reply, | messages (e.g., Path Computation Request, Path Computation Reply, | |||
| Path Computation Report, Path Computation Update, Path Computation | Path Computation Report, Path Computation Update, Path Computation | |||
| Initiate, etc.,) MUST be formatted according to [RFC5440], [RFC8231], | Initiate, etc.,) MUST be formatted according to [RFC5440], [RFC8231], | |||
| [I-D.ietf-pce-pce-initiated-lsp], and any other applicable PCEP | [RFC8281], and any other applicable PCEP specifications. | |||
| specifications. | ||||
| 4. SR-Specific PCEP Message Extensions | 4. SR-Specific PCEP Message Extensions | |||
| As defined in [RFC5440], a PCEP message consists of a common header | As defined in [RFC5440], a PCEP message consists of a common header | |||
| followed by a variable length body made up of mandatory and/or | followed by a variable length body made up of mandatory and/or | |||
| optional objects. This document does not require any changes in the | optional objects. This document does not require any changes in the | |||
| format of the PCReq and PCRep messages specified in [RFC5440], | format of the PCReq and PCRep messages specified in [RFC5440], | |||
| PCInitiate message specified in [I-D.ietf-pce-pce-initiated-lsp], and | PCInitiate message specified in [RFC8281], and PCRpt and PCUpd | |||
| PCRpt and PCUpd messages specified in [RFC8231]. | messages specified in [RFC8231]. | |||
| 5. Object Formats | 5. Object Formats | |||
| 5.1. The OPEN Object | 5.1. The OPEN Object | |||
| 5.1.1. The SR PCE Capability sub-TLV | 5.1.1. The SR PCE Capability sub-TLV | |||
| This document defines a new Path Setup Type (PST) for SR, as follows: | This document defines a new Path Setup Type (PST) for SR, as follows: | |||
| o PST = 1: Path is setup using Segment Routing Traffic Engineering. | o PST = 1: Path is setup using Segment Routing Traffic Engineering. | |||
| skipping to change at page 7, line 35 ¶ | skipping to change at page 8, line 10 ¶ | |||
| CAPABILITY sub-TLV inside the PATH-SETUP-TYPE-CAPABILITY TLV. | CAPABILITY sub-TLV inside the PATH-SETUP-TYPE-CAPABILITY TLV. | |||
| The format of the SR-PCE-CAPABILITY sub-TLV is shown in the following | The format of the SR-PCE-CAPABILITY sub-TLV is shown in the following | |||
| figure: | figure: | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type=26 | Length=4 | | | Type=26 | Length=4 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Reserved | Flags |L| MSD | | | Reserved | Flags |N|L| MSD | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 1: SR-PCE-CAPABILITY sub-TLV format | Figure 1: SR-PCE-CAPABILITY sub-TLV format | |||
| The code point for the TLV type is 26. The TLV length is 4 octets. | The code point for the TLV type is 26. The TLV length is 4 octets. | |||
| The 32-bit value is formatted as follows. The "Maximum SID Depth" (1 | The 32-bit value is formatted as follows. The "Maximum SID Depth" (1 | |||
| octet) field (MSD) specifies the maximum number of SIDs (MPLS label | octet) field (MSD) specifies the maximum number of SIDs (MPLS label | |||
| stack depth in the context of this document) that a PCC is capable of | stack depth in the context of this document) that a PCC is capable of | |||
| imposing on a packet. The "Reserved" (2 octets) field is unused, and | imposing on a packet. The "Reserved" (2 octets) field is unused, and | |||
| MUST be set to zero on transmission and ignored on reception. The | MUST be set to zero on transmission and ignored on reception. The | |||
| "Flags" field is 1 octect long, and this document defines the | "Flags" field is 1 octet long, and this document defines the | |||
| following flag: | following flags: | |||
| o L-flag: A PCC sets this flag to 1 to indicate that it does not | o L flag: A PCC sets this flag to 1 to indicate that it does not | |||
| impose any limit on the MSD. | impose any limit on the MSD. | |||
| 5.1.2. Exchanging the SR PCE Capability | o N flag: A PCC sets this flag to 1 to indicate that it is capable | |||
| of resolving a Node or Adjacency Identifier (NAI) to a SID. | ||||
| A PCC indicates that it is capable of supporting the head-end | ||||
| functions for SR-TE LSP by including the SR-PCE-CAPABILITY sub-TLV in | ||||
| the Open message that it sends to a PCE. A PCE indicates that it is | ||||
| capable of computing SR-TE paths by including the SR-PCE-CAPABILITY | ||||
| sub-TLV in the Open message that it sends to a PCC. | ||||
| If a PCEP speaker receives a PATH-SETUP-TYPE-CAPABILITY TLV with a | ||||
| PST list containing PST=1, but the SR-PCE-CAPABILITY sub-TLV is | ||||
| absent, then the PCEP speaker MUST send a PCErr message with Error- | ||||
| Type 10 (Reception of an invalid object) and Error-Value TBD1 (to be | ||||
| assigned by IANA) (Missing PCE-SR-CAPABILITY sub-TLV) and MUST then | ||||
| close the PCEP session. If a PCEP speaker receives a PATH-SETUP- | ||||
| TYPE-CAPABILITY TLV with a SR-PCE-CAPABILITY sub-TLV, but the PST | ||||
| list does not contain PST=1, then the PCEP speaker MUST ignore the | ||||
| SR-PCE-CAPABILITY sub-TLV. | ||||
| The number of SIDs that can be imposed on a packet depends on the | ||||
| PCC's data plane's capability. If a PCC sets the L flag to 1 then | ||||
| the MSD is not used and MUST be set to zero. If a PCE receives an | ||||
| SR-PCE-CAPABILITY sub-TLV with the L flag set to 1 then it MUST | ||||
| ignore the MSD field and MUST assume that the sender can impose a SID | ||||
| stack of any depth. If a PCC sets the L flag to zero, then it sets | ||||
| the MSD field to the maximum number of SIDs that it can impose on a | ||||
| packet. If a PCE receives an SR-PCE-CAPABILITY sub-TLV with the L | ||||
| flag and MSD both set to zero then it MUST assume that the PCC is not | ||||
| capable of imposing a SID stack of any depth and hence is not SR-TE | ||||
| capable, unless it learns a non-zero MSD for the PCC through some | ||||
| other means. | ||||
| Note that the MSD value exchanged via the SR-PCE-CAPABILITY sub-TLV | ||||
| indicates the SID/label imposition limit for the PCC node. However, | ||||
| if a PCE learns the MSD value of a PCC node via different means, e.g | ||||
| routing protocols, as specified in: | ||||
| [I-D.ietf-isis-segment-routing-msd]; | ||||
| [I-D.ietf-ospf-segment-routing-msd]; | ||||
| [I-D.ietf-idr-bgp-ls-segment-routing-msd], then it ignores the MSD | ||||
| value in the SR-PCE-CAPABILITY sub-TLV. Furthermore, whenever a PCE | ||||
| learns the MSD for a link via different means, it MUST use that value | ||||
| for that link regardless of the MSD value exchanged in the SR-PCE- | ||||
| CAPABILITY sub-TLV. | ||||
| Once an SR-capable PCEP session is established with a non-zero MSD | ||||
| value, the corresponding PCE MUST NOT send SR-TE paths with a number | ||||
| of SIDs exceeding that MSD value. If a PCC needs to modify the MSD | ||||
| value, it MUST close the PCEP session and re-establish it with the | ||||
| new MSD value. If a PCEP session is established with a non-zero MSD | ||||
| value, and the PCC receives an SR-TE path containing more SIDs than | ||||
| specified in the MSD value, the PCC MUST send a PCErr message with | ||||
| Error-Type 10 (Reception of an invalid object) and Error-Value 3 | ||||
| (Unsupported number of Segment ERO subobjects). If a PCEP session is | ||||
| established with an MSD value of zero, then the PCC MAY specify an | ||||
| MSD for each path computation request that it sends to the PCE, by | ||||
| including a "maximum SID depth" metric object on the request, as | ||||
| defined in Section 5.5. | ||||
| The L flag and MSD value inside the SR-PCE-CAPABILITY sub-TLV are | ||||
| meaningful only in the Open message sent from a PCC to a PCE. As | ||||
| such, a PCE MUST set the L flag and MSD value to zero in an outbound | ||||
| message to a PCC. Similarly, a PCC MUST ignore any MSD value | ||||
| received from a PCE. If a PCE receives multiple SR-PCE-CAPABILITY | ||||
| sub-TLVs in an Open message, it processes only the first sub-TLV | ||||
| received. | ||||
| 5.2. The RP/SRP Object | 5.2. The RP/SRP Object | |||
| In order to setup an SR-TE LSP using SR, RP or SRP object MUST | To set up an SR-TE LSP using SR, the RP or SRP object MUST include | |||
| include PATH-SETUP-TYPE TLV, specified in | the PATH-SETUP-TYPE TLV, specified in [I-D.ietf-pce-lsp-setup-type], | |||
| [I-D.ietf-pce-lsp-setup-type], with the PST set to 1 (path setup | with the PST set to 1 (path setup using SR-TE). | |||
| using SR-TE). | ||||
| The LSP-IDENTIFIERS TLV MAY be present for the above PST type. | The LSP-IDENTIFIERS TLV MAY be present for the above PST type. | |||
| 5.3. ERO Object | 5.3. ERO | |||
| An SR-TE path consists of one or more SID(s) where each SID MAY be | An SR-TE path consists of one or more SIDs where each SID MAY be | |||
| associated with the identifier that represents the node or adjacency | associated with the identifier that represents the node or adjacency | |||
| corresponding to the SID. This identifier is referred to as the | corresponding to the SID. This identifier is referred to as the | |||
| 'Node or Adjacency Identifier' (NAI). As described later, a NAI can | 'Node or Adjacency Identifier' (NAI). As described later, a NAI can | |||
| be represented in various formats (e.g., IPv4 address, IPv6 address, | be represented in various formats (e.g., IPv4 address, IPv6 address, | |||
| etc). Furthermore, a NAI is used for troubleshooting purposes and, | etc). Furthermore, a NAI is used for troubleshooting purposes and, | |||
| if necessary, to derive SID value as described below. | if necessary, to derive SID value as described below. | |||
| The ERO object specified in [RFC5440] is used to carry SR-TE path | The ERO specified in [RFC5440] is used to carry SR-TE path | |||
| information. In order to carry SID and/or NAI, this document defines | information. In order to carry SID and/or NAI, this document defines | |||
| a new ERO subobject referred to as "SR-ERO subobject" whose format is | a new ERO subobject referred to as "SR-ERO subobject" whose format is | |||
| specified in the following section. An ERO object carrying an SR-TE | specified in the following section. An ERO carrying an SR-TE path | |||
| path consists of one or more ERO subobject(s), and MUST carry only | consists of one or more ERO subobjects, and MUST carry only SR-ERO | |||
| SR-ERO subobject(s). Note that an SR-ERO subobject does not need to | subobjects. Note that an SR-ERO subobject does not need to have both | |||
| have both SID and NAI. However, at least one of them MUST be | SID and NAI. However, at least one of them MUST be present. | |||
| present. | ||||
| When building the MPLS label stack from ERO, a PCC MUST assume that | When building the MPLS label stack from ERO, a PCC MUST assume that | |||
| SR-ERO subobjects are organized as a last-in-first-out stack. The | SR-ERO subobjects are organized as a last-in-first-out stack. The | |||
| first subobject relative to the beginning of ERO contains the | first subobject relative to the beginning of ERO contains the | |||
| information about the topmost label. The last subobject contains | information about the topmost label. The last subobject contains | |||
| information about the bottommost label. | information about the bottommost label. | |||
| 5.3.1. SR-ERO Subobject | 5.3.1. SR-ERO Subobject | |||
| An SR-ERO subobject consists of a 32-bit header followed by the SID | An SR-ERO subobject consists of a 32-bit header followed by the SID | |||
| and the NAI associated with the SID. The SID is a 32-bit number. | and/or the NAI associated with the SID. The SID is a 32-bit number. | |||
| The size of the NAI depends on its respective type, as described in | The size of the NAI depends on its respective type, as described in | |||
| the following sections. | the following sections. At least one of the SID and the NAI MUST be | |||
| included in the SR-ERO subobject, and both MAY be included. | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |L| Type | Length | ST | Flags |F|S|C|M| | |L| Type=36 | Length | NT | Flags |F|S|C|M| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SID | | | SID (optional) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| // NAI (variable) // | // NAI (variable, optional) // | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 2: SR-ERO Subobject format | Figure 2: SR-ERO Subobject format | |||
| The fields in the SR-ERO Subobject are as follows: | The fields in the SR-ERO Subobject are as follows: | |||
| The 'L' Flag indicates whether the subobject represents a loose-hop | The 'L' Flag indicates whether the subobject represents a loose-hop | |||
| in the LSP [RFC3209]. If this flag is unset, a PCC MUST not | in the LSP [RFC3209]. If this flag is set to zero, a PCC MUST NOT | |||
| overwrite the SID value present in the SR-ERO subobject. | overwrite the SID value present in the SR-ERO subobject. | |||
| Otherwise, a PCC MAY expand or replace one or more SID value(s) in | Otherwise, a PCC MAY expand or replace one or more SID values in | |||
| the received SR-ERO based on its local policy. | the received SR-ERO based on its local policy. | |||
| Type is the type of the SR-ERO subobject. This document defines the | Type is set to 36. | |||
| SR-ERO subobject type, and requests a new codepoint from IANA. | ||||
| Length contains the total length of the subobject in octets, | Length contains the total length of the subobject in octets, | |||
| including the L, Type and Length fields. Length MUST be at least | including the L, Type and Length fields. The Length MUST be at | |||
| 8, and MUST be a multiple of 4. As mentioned earlier, an SR-ERO | least 8, and MUST be a multiple of 4. As mentioned earlier, an | |||
| subobject MUST have at least SID or NAI. The length should take | SR-ERO subobject MUST contain at least one of a SID or an NAI. | |||
| into consideration SID or NAI only if they are not null. The | ||||
| flags described below used to indicate whether SID or NAI field is | ||||
| null. | ||||
| SID Type (ST) indicates the type of information associated with the | The length should include the SID and NAI fields if and only if | |||
| SID contained in the object body. When ST value is 0, SID MUST | they are not absent. The flags described below indicate whether | |||
| NOT be null and NAI MUST be null. Other ST values are described | the SID or NAI fields are absent. | |||
| later in this document. | ||||
| Flags is used to carry any additional information pertaining to SID. | NAI Type (NT) indicates the type and format of the NAI associated | |||
| Currently, the following flag bits are defined: | with the SID contained in the object body. This document | |||
| describes the following NT values: | ||||
| * M: When this bit is set, the SID value represents an MPLS label | NT=0 The NAI is absent. | |||
| stack entry as specified in [RFC5462] where only the label | ||||
| value is specified by the PCE. Other fields (TC, S, and TTL) | ||||
| fields MUST be considered invalid, and PCC MUST set these | ||||
| fields according to its local policy and MPLS forwarding rules. | ||||
| * C: When this bit as well as the M bit are set, then the SID | NT=1 The NAI is an IPv4 node ID. | |||
| value represents an MPLS label stack entry as specified in | ||||
| [RFC5462], where all the entry's fields (Label, TC, S, and TTL) | ||||
| are specified by the PCE. However, a PCC MAY choose to | ||||
| override TC, S, and TTL values according its local policy and | ||||
| MPLS forwarding rules. | ||||
| * S: When this bit is set, the SID value in the subobject body is | NT=2 The NAI is an IPv6 node ID. | |||
| null. In this case, the PCC is responsible for choosing the | ||||
| SID value, e.g., by looking up its TED using the NAI which, in | ||||
| this case, MUST be present in the subobject. | ||||
| * F: When this bit is set, the NAI value in the subobject body is | NT=3 The NAI is an IPv4 adjacency. | |||
| null. | ||||
| NT=4 The NAI is an IPv6 adjacency. | ||||
| NT=5 The NAI is an unnumbered adjacency with IPv4 node IDs. | ||||
| Flags is used to carry additional information pertaining to the SID. | ||||
| This document defines the following flag bits. The other bits | ||||
| MUST be set to zero by the sender and MUST be ignored by the | ||||
| receiver. | ||||
| * M: If this bit is set to 1, the SID value represents an MPLS | ||||
| label stack entry as specified in [RFC3032]. Otherwise, the | ||||
| SID value is an administratively configured value which acts as | ||||
| an index into an MPLS label space. | ||||
| * C: If the M bit and the C bit are both set to 1, then the TC, | ||||
| S, and TTL fields in the MPLS label stack entry are specified | ||||
| by the PCE. However, a PCC MAY choose to override these values | ||||
| according its local policy and MPLS forwarding rules. If the M | ||||
| bit is set to 1 but the C bit is set to zero, then the TC, S, | ||||
| and TTL fields MUST be ignored by the PCC. The PCC MUST set | ||||
| these fields according to its local policy and MPLS forwarding | ||||
| rules. If the M bit is set to zero then the C bit MUST be set | ||||
| to zero. | ||||
| * S: When this bit is set to 1, the SID value in the subobject | ||||
| body is absent. In this case, the PCC is responsible for | ||||
| choosing the SID value, e.g., by looking up in its LSDB using | ||||
| the NAI which, in this case, MUST be present in the subobject. | ||||
| If the S bit is set to 1 then the M and C bits MUST be set to | ||||
| zero. | ||||
| * F: When this bit is set to 1, the NAI value in the subobject | ||||
| body is absent. The F bit MUST be set to 1 if NT=0, and | ||||
| otherwise MUST be set to zero. The S and F bits MUST NOT both | ||||
| be set to 1. | ||||
| SID is the Segment Identifier. | SID is the Segment Identifier. | |||
| NAI contains the NAI associated with the SID. Depending on the | NAI contains the NAI associated with the SID. The NAI's format | |||
| value of ST, the NAI can have different format as described in the | depends on the value in the NT field, and is described in the | |||
| following section. | following section. | |||
| 5.3.2. NAI Associated with SID | 5.3.2. NAI Associated with SID | |||
| This document defines the following NAIs: | This document defines the following NAIs: | |||
| 'IPv4 Node ID' is specified as an IPv4 address. In this case, ST | 'IPv4 Node ID' is specified as an IPv4 address. In this case, the | |||
| value is 1, and the Length is 8 or 12 depending on either SID or | NT value is 1. | |||
| NAI or both are included in the subobject. | ||||
| 'IPv6 Node ID' is specified as an IPv6 address. In this case, ST | 'IPv6 Node ID' is specified as an IPv6 address. In this case, the | |||
| and Length are 2, and Length is 8, 20, or 24 depending on either | NT value is 2. | |||
| SID or NAI or both are included in the subobject. | ||||
| 'IPv4 Adjacency' is specified as a pair of IPv4 addresses. In this | 'IPv4 Adjacency' is specified as a pair of IPv4 addresses. In this | |||
| case, ST value is 3. The Length is 8, 12, or 16 depending on | case, the NT value is 3. The format of the NAI is shown in the | |||
| either SID or NAI or both are included in the subobject, and the | following figure: | |||
| format of the NAI is shown in the following figure: | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Local IPv4 address | | | Local IPv4 address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Remote IPv4 address | | | Remote IPv4 address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 3: NAI for IPv4 adjacency | Figure 3: NAI for IPv4 adjacency | |||
| 'IPv6 Adjacency' is specified as a pair of IPv6 addresses. In this | 'IPv6 Adjacency' is specified as a pair of IPv6 addresses. In this | |||
| case, ST valie is 4. The Length is 8, 36 or 40 depending on | case, the NT value is 4. The format of the NAI is shown in the | |||
| whether SID or NAI or both included in the subobject,and the | following figure: | |||
| format of the NAI is shown in the following figure: | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| // Local IPv6 address (16 bytes) // | // Local IPv6 address (16 bytes) // | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| // Remote IPv6 address (16 bytes) // | // Remote IPv6 address (16 bytes) // | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 4: NAI for IPv6 adjacency | Figure 4: NAI for IPv6 adjacency | |||
| 'Unnumbered Adjacency with IPv4 NodeIDs' is specified as a pair of | 'Unnumbered Adjacency with IPv4 NodeIDs' is specified as a pair of | |||
| Node ID / Interface ID tuples. In this case, ST value is 5. The | Node ID / Interface ID tuples. In this case, the NT value is 5. | |||
| Length is 8, 20, or 24 depending on whether SID or NAI or both | The format of the NAI is shown in the following figure: | |||
| included in the subobject, and the format of the NAI is shown in | ||||
| the following figure: | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Local Node-ID | | | Local Node-ID | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Local Interface ID | | | Local Interface ID | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Remote Node-ID | | | Remote Node-ID | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Remote Interface ID | | | Remote Interface ID | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 5: NAI for Unnumbered adjacency with IPv4 Node IDs | Figure 5: NAI for Unnumbered adjacency with IPv4 Node IDs | |||
| 5.3.3. ERO Processing | 5.4. RRO | |||
| A PCEP speaker that does not recognize the SR-ERO subobject in PCRep, | ||||
| PCInitiate, PCUpd or PCRpt messages MUST reject the entire PCEP | ||||
| message and MUST send a PCErr message with Error-Type=3 ("Unknown | ||||
| Object") and Error-Value=2 ("Unrecognized object Type") or Error- | ||||
| Type=4 ("Not supported object") and Error-Value=2 ("Not supported | ||||
| object Type"), defined in [RFC5440]. | ||||
| When the SID represents an MPLS label (i.e. the M bit is set), its | ||||
| value (20 most significant bits) MUST be larger than 15, unless it is | ||||
| special purpose label, such as an Entropy Label Indicator (ELI). If | ||||
| a PCEP speaker receives an invalid value, it MUST send a PCErr | ||||
| message with Error-Type = 10 ("Reception of an invalid object") and | ||||
| Error Value = 2 ("Bad label value"). If both M and C bits of an SR- | ||||
| ERO subobject are set, and if a PCEP speaker finds erroneous setting | ||||
| in one or more of TC, S, and TTL fields, it MUST send a PCErr message | ||||
| with Error-Type = 10 ("Reception of an invalid object") and Error- | ||||
| Value = 4 ("Bad label format"). | ||||
| If a PCC receives a stack of SR-ERO subobjects, and the number of | ||||
| stack exceeds the maximum number of SIDs that the PCC can impose on | ||||
| the packet, it MAY send a PCErr message with Error-Type = 10 | ||||
| ("Reception of an invalid object") and Error-Value = 3 ("Unsupported | ||||
| number of Segment ERO subobjects"). | ||||
| When a PCEP speaker detects that all subobjects of ERO are not | ||||
| identical, and if it does not handle such ERO, it MUST send a PCErr | ||||
| message with Error-Type = 10 ("Reception of an invalid object") and | ||||
| Error-Value = 5 ("Non-identical ERO subobjects"). | ||||
| If a PCEP speaker receives an SR-ERO subobject in which both SID and | ||||
| NAI are absent, it MUST consider the entire ERO object invalid and | ||||
| send a PCErr message with Error-Type = 10 ("Reception of an invalid | ||||
| object") and Error-Value = 6 ("Both SID and NAI are absent in ERO | ||||
| subobject"). | ||||
| When a PCEP speaker receives an SR-ERO subobject in which ST is 0, | ||||
| SID MUST be present and NAI MUST NOT be present(i.e., S-flag MUST be | ||||
| 0, F-flag MUST be 1, and the Length MUST be 8). Otherwise, it MUST | ||||
| consider the entire ERO object invalid and send a PCErr message with | ||||
| Error-Type = 10 ("Reception of an invalid object") and Error-Value = | ||||
| 11 ("Malformed object"). The PCEP speaker MAY include the malformed | ||||
| SR-ERO object in the PCErr message as well. | ||||
| 5.4. RRO Object | ||||
| A PCC can record SR-TE LSP and report the LSP to a PCE via RRO. An | A PCC can record an SR-TE LSP and report the LSP to a PCE via the | |||
| RRO object contains one or more subobjects called "SR-RRO subobjects" | RRO. An RRO contains one or more subobjects called "SR-RRO | |||
| whose format is shown below: | subobjects" whose format is shown below: | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Length | ST | Flags |F|S|C|M| | | Type=36 | Length | NT | Flags |F|S|C|M| | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SID | | | SID | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| // NAI (variable) // | // NAI (variable) // | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 6: SR-RRO Subobject format | Figure 6: SR-RRO Subobject format | |||
| The format of SR-RRO subobject is the same as that of SR-ERO | The format of the SR-RRO subobject is the same as that of the SR-ERO | |||
| subobject without L flag. | subobject, but without the L flag. | |||
| A PCC MUST assume that SR-RRO subobjects are organized such that the | A PCC MUST assume that the SR-RRO subobjects are organized such that | |||
| first subobject relative to the beginning of RRO contains the | the first subobject relative to the beginning of the RRO contains the | |||
| information about the topmost label, and the last subobject contains | information about the topmost label, and the last subobject contains | |||
| information about the bottommost label of the SR-TE LSP. | information about the bottommost label of the SR-TE LSP. | |||
| 5.4.1. RRO Processing | ||||
| Processing rules of SR-RRO subobject are identical to those of SR-ERO | ||||
| subobject. | ||||
| If a PCEP speaker receives an SR-RRO subobject in which both SID and | ||||
| NAI are absent, it MUST consider the entire RRO object invalid and | ||||
| send a PCErr message with Error-Type = 10 ("Reception of an invalid | ||||
| object") and Error-Value = 7 ("Both SID and NAI are absent in RRO | ||||
| subobject"). | ||||
| If a PCE detects that all subobjects of RRO are not identical, and if | ||||
| it does not handle such RRO, it MUST send a PCErr message with Error- | ||||
| Type = 10 ("Reception of an invalid object") and Error-Value = 10 | ||||
| ("Non-identical RRO subobjects"). | ||||
| 5.5. METRIC Object | 5.5. METRIC Object | |||
| If a PCEP session is established with an MSD value of zero, then the | If a PCEP session is established with an MSD value of zero, then the | |||
| PCC MAY specify the MSD for an individual path computation request | PCC MAY specify the MSD for an individual path computation request | |||
| using the METRIC object defined in [RFC5440]. This document defines | using the METRIC object defined in [RFC5440]. This document defines | |||
| a new type for the METRIC object to be used for this purpose as | a new type for the METRIC object to be used for this purpose as | |||
| follows: | follows: | |||
| o T = 11: Maximum SID Depth of the requested path. | o T = 11: Maximum SID Depth of the requested path. | |||
| skipping to change at page 15, line 37 ¶ | skipping to change at page 13, line 46 ¶ | |||
| set the B (bound) bit to 1 in the METRIC object, which specifies that | set the B (bound) bit to 1 in the METRIC object, which specifies that | |||
| the SID depth for the computed path MUST NOT exceed the metric-value. | the SID depth for the computed path MUST NOT exceed the metric-value. | |||
| If a PCEP session is established with a non-zero MSD value, then the | If a PCEP session is established with a non-zero MSD value, then the | |||
| PCC MUST NOT send an MSD METRIC object. If the PCE receives a path | PCC MUST NOT send an MSD METRIC object. If the PCE receives a path | |||
| computation request with an MSD METRIC object on a session with a | computation request with an MSD METRIC object on a session with a | |||
| non-zero MSD value then it MUST consider the request invalid and send | non-zero MSD value then it MUST consider the request invalid and send | |||
| a PCErr with Error-Type = 10 ("Reception of an invalid object") and | a PCErr with Error-Type = 10 ("Reception of an invalid object") and | |||
| Error-Value 9 ("Default MSD is specified for the PCEP session"). | Error-Value 9 ("Default MSD is specified for the PCEP session"). | |||
| 6. Backward Compatibility | 6. Procedures | |||
| 6.1. Exchanging the SR PCE Capability | ||||
| A PCC indicates that it is capable of supporting the head-end | ||||
| functions for SR-TE LSP by including the SR-PCE-CAPABILITY sub-TLV in | ||||
| the Open message that it sends to a PCE. A PCE indicates that it is | ||||
| capable of computing SR-TE paths by including the SR-PCE-CAPABILITY | ||||
| sub-TLV in the Open message that it sends to a PCC. | ||||
| If a PCEP speaker receives a PATH-SETUP-TYPE-CAPABILITY TLV with a | ||||
| PST list containing PST=1, and supports that path setup type, then it | ||||
| checks for the presence of the SR-PCE-CAPABILITY sub-TLV. If that | ||||
| sub-TLV is absent, then the PCEP speaker MUST send a PCErr message | ||||
| with Error-Type 10 (Reception of an invalid object) and Error-Value | ||||
| TBD1 (to be assigned by IANA) (Missing PCE-SR-CAPABILITY sub-TLV) and | ||||
| MUST then close the PCEP session. If a PCEP speaker receives a PATH- | ||||
| SETUP-TYPE-CAPABILITY TLV with a SR-PCE-CAPABILITY sub-TLV, but the | ||||
| PST list does not contain PST=1, then the PCEP speaker MUST ignore | ||||
| the SR-PCE-CAPABILITY sub-TLV. | ||||
| If a PCC sets the N flag to 1, then the PCE MAY send NAI to the PCC | ||||
| within the SR-ERO subobject (see Section 6.2). Otherwise, the PCE | ||||
| MUST NOT send NAI to the PCC. | ||||
| The number of SIDs that can be imposed on a packet depends on the | ||||
| PCC's data plane's capability. If a PCC sets the L flag to 1 then | ||||
| the MSD is not used and MUST be set to zero. If a PCE receives an | ||||
| SR-PCE-CAPABILITY sub-TLV with the L flag set to 1 then it MUST | ||||
| ignore the MSD field and MUST assume that the sender can impose a SID | ||||
| stack of any depth. If a PCC sets the L flag to zero, then it sets | ||||
| the MSD field to the maximum number of SIDs that it can impose on a | ||||
| packet. If a PCE receives an SR-PCE-CAPABILITY sub-TLV with the L | ||||
| flag and MSD both set to zero then it MUST assume that the PCC is not | ||||
| capable of imposing a SID stack of any depth and hence is not SR-TE | ||||
| capable, unless it learns a non-zero MSD for the PCC through some | ||||
| other means. | ||||
| Note that the MSD value exchanged via the SR-PCE-CAPABILITY sub-TLV | ||||
| indicates the SID/label imposition limit for the PCC node. However, | ||||
| if a PCE learns the MSD value of a PCC node via different means, e.g | ||||
| routing protocols, as specified in: | ||||
| [I-D.ietf-isis-segment-routing-msd]; | ||||
| [I-D.ietf-ospf-segment-routing-msd]; | ||||
| [I-D.ietf-idr-bgp-ls-segment-routing-msd], then it ignores the MSD | ||||
| value in the SR-PCE-CAPABILITY sub-TLV. Furthermore, whenever a PCE | ||||
| learns the MSD for a link via different means, it MUST use that value | ||||
| for that link regardless of the MSD value exchanged in the SR-PCE- | ||||
| CAPABILITY sub-TLV. | ||||
| Once an SR-capable PCEP session is established with a non-zero MSD | ||||
| value, the corresponding PCE MUST NOT send SR-TE paths with a number | ||||
| of SIDs exceeding that MSD value. If a PCC needs to modify the MSD | ||||
| value, it MUST close the PCEP session and re-establish it with the | ||||
| new MSD value. If a PCEP session is established with a non-zero MSD | ||||
| value, and the PCC receives an SR-TE path containing more SIDs than | ||||
| specified in the MSD value, the PCC MUST send a PCErr message with | ||||
| Error-Type 10 (Reception of an invalid object) and Error-Value 3 | ||||
| (Unsupported number of Segment ERO subobjects). If a PCEP session is | ||||
| established with an MSD value of zero, then the PCC MAY specify an | ||||
| MSD for each path computation request that it sends to the PCE, by | ||||
| including a "maximum SID depth" metric object on the request, as | ||||
| defined in Section 5.5. | ||||
| The N flag, L flag and MSD value inside the SR-PCE-CAPABILITY sub-TLV | ||||
| are meaningful only in the Open message sent from a PCC to a PCE. As | ||||
| such, a PCE MUST set the N flag to zero, the L flag to 1 and MSD | ||||
| value to zero in an outbound message to a PCC. Similarly, a PCC MUST | ||||
| ignore any MSD value received from a PCE. If a PCE receives multiple | ||||
| SR-PCE-CAPABILITY sub-TLVs in an Open message, it processes only the | ||||
| first sub-TLV received. | ||||
| 6.2. ERO Processing | ||||
| 6.2.1. SR-ERO Validation | ||||
| If a PCC does not support the SR PCE Capability and thus cannot | ||||
| recognize the SR-ERO or SR-RRO subobjects, it will respond according | ||||
| to the rules for a malformed object per [RFC5440]. | ||||
| On receiving an SR-ERO, a PCC MUST validate that the Length field, | ||||
| the S bit, the F bit and the NT field are consistent, as follows. | ||||
| o If NT=0, the F bit MUST be 1, the S bit MUST be zero and the | ||||
| Length MUST be 8. | ||||
| o If NT=1, the F bit MUST be zero. If the S bit is 1, the Length | ||||
| MUST be 8, otherwise the Length MUST be 12. | ||||
| o If NT=2, the F bit MUST be zero. If the S bit is 1, the Length | ||||
| MUST be 20, otherwise the Length MUST be 24. | ||||
| o If NT=3, the F bit MUST be zero. If the S bit is 1, the Length | ||||
| MUST be 12, otherwise the Length MUST be 16. | ||||
| o If NT=4, the F bit MUST be zero. If the S bit is 1, the Length | ||||
| MUST be 36, otherwise the Length MUST be 40. | ||||
| o If NT=5, the F bit MUST be zero. If the S bit is 1, the Length | ||||
| MUST be 20, otherwise the Length MUST be 24. | ||||
| If a PCC finds that the NT field, Length field, S bit and F bit are | ||||
| not consistent, it MUST consider the entire ERO invalid and MUST send | ||||
| a PCErr message with Error-Type = 10 ("Reception of an invalid | ||||
| object") and Error-Value = 11 ("Malformed object"). | ||||
| If a PCC does not recognise or support the value in the NT field, it | ||||
| MUST consider the entire ERO invalid and MUST send a PCErr message | ||||
| with Error-Type = 10 ("Reception of an invalid object") and Error- | ||||
| Value = TBD2 ("Unsupported NAI Type in Segment ERO subobject"). | ||||
| If a PCC receives an SR-ERO subobject in which the S and F bits are | ||||
| both set to 1 (that is, both the SID and NAI are absent), it MUST | ||||
| consider the entire ERO invalid and send a PCErr message with Error- | ||||
| Type = 10 ("Reception of an invalid object") and Error-Value = 6 | ||||
| ("Both SID and NAI are absent in SR-ERO subobject"). | ||||
| If a PCC receives an SR-ERO subobject in which the S bit is set to 1 | ||||
| and the F bit is set to zero (that is, the SID is absent and the NAI | ||||
| is present), but the PCC does not support NAI resolution, it MUST | ||||
| consider the entire ERO invalid and send a PCErr message with Error- | ||||
| Type = 4 ("Not supported object") and Error-Value = 4 ("Unsupported | ||||
| parameter"). | ||||
| If a PCC receives an SR-ERO subobject in which the S bit is set to 1 | ||||
| and either or both of the M or C bits is set to 1, it MUST consider | ||||
| the entire ERO invalid and send a PCErr message with Error-Type = 10 | ||||
| ("Reception of an invalid object") and Error-Value = 11 ("Malformed | ||||
| object"). | ||||
| If a PCC receives an SR-ERO subobject in which the S bit is set to | ||||
| zero and the M bit is set to 1 (that is, it represents an MPLS label | ||||
| value), its value (20 most significant bits) MUST be larger than 15, | ||||
| unless it is a special purpose label, such as an Entropy Label | ||||
| Indicator (ELI). If a PCC receives an invalid MPLS label value, it | ||||
| MUST send a PCErr message with Error-Type = 10 ("Reception of an | ||||
| invalid object") and Error Value = 2 ("Bad label value"). | ||||
| If both M and C bits of an SR-ERO subobject are set to 1, and if a | ||||
| PCC finds erroneous setting in one or more of TC, S, and TTL fields, | ||||
| it MAY overwrite those fields with values chosen according to its own | ||||
| policy. If the PCC does not overwite them, it MUST send a PCErr | ||||
| message with Error-Type = 10 ("Reception of an invalid object") and | ||||
| Error-Value = 4 ("Bad label format"). | ||||
| If the M bit of an SR-ERO subobject is set to zero but the C bit is | ||||
| set to 1, then the PCC MUST consider the entire ERO invalid and MUST | ||||
| send a PCErr message with Error-Type = 10 ("Reception of an invalid | ||||
| object") and Error-Value = 11 ("Malformed object"). | ||||
| If the first SR-ERO represents an MPLS label value then the NAI field | ||||
| MUST NOT be absent (that is, the F bit MUST be zero). The PCC needs | ||||
| the NAI field to determine the first hop router in the segment routed | ||||
| path. If the NAI is not present then the PCC MUST send a PCErr | ||||
| message with Error-Type = 10 ("Reception of an invalid object") and | ||||
| Error Value = TBD9 ("Cannot derive a next hop from SR-ERO"). | ||||
| If a PCC receives an SR-ERO subobject in which the S bit is set to | ||||
| zero and the M bit is set to zero (that is, it represents an index | ||||
| value), then the SID MUST be a node-SID, an adjacency-SID or a | ||||
| binding-SID. If the SID is not one of these types, the PCC MUST send | ||||
| a PCErr message with Error-Type = 10 ("Reception of an invalid | ||||
| object") and Error Value = TBD10 ("Bad SID type in SR-ERO"). If the | ||||
| SID is an Adjacency-SID then the L flag MUST NOT be set. If the L | ||||
| flag is set for an Adjacency-SID then the PCC MUST send a PCErr | ||||
| message with Error-Type = 10 ("Reception of an invalid object") and | ||||
| Error-Value = 11 ("Malformed object"). | ||||
| If a PCC detects that the subobjects of an ERO are a mixture of SR- | ||||
| ERO subobjects and subobjects of other types, then it MUST send a | ||||
| PCErr message with Error-Type = 10 ("Reception of an invalid object") | ||||
| and Error-Value = 5 ("ERO mixes SR-ERO subobjects with other | ||||
| subobject types"). | ||||
| The SR-ERO subobjects can be classified according to whether they | ||||
| contain a SID representing an MPLS label value, a SID representing an | ||||
| index value, or no SID. If a PCC detects that the SR-ERO subobjects | ||||
| are a mixture of more than one of these types, then it MUST send a | ||||
| PCErr message with Error-Type = 10 ("Reception of an invalid object") | ||||
| and Error-Value = TBD11 ("Inconsistent SIDs in SR-ERO subobjects"). | ||||
| 6.2.2. Interpreting the SR-ERO | ||||
| The PCC creates a segment routed path by converting the sequence of | ||||
| SR-ERO subobjects into an MPLS label stack plus a next hop. The PCC | ||||
| sends packets along the segment routed path by prepending the MPLS | ||||
| label stack onto the packets and sending the resulting, modified | ||||
| packet to the next hop. The following subsections explain how the | ||||
| PCC converts the SR-ERO subobject sequence to an MPLS label stack and | ||||
| a next hop. | ||||
| 6.2.2.1. SR-ERO subobjects contain MPLS Labels | ||||
| If the SR-ERO subobjects contain SIDs with MPLS label values, then | ||||
| proceed as follows: | ||||
| (a) Initialize next_hop to null. Initialize label_stack to an empty | ||||
| label stack. | ||||
| (b) Get the first SR-ERO subobject from the ERO. Append its label | ||||
| value to label_stack, setting the TC, S and TTL fields according | ||||
| to the C bit and/or local policy. Set current_router and | ||||
| next_hop to the router identified by the NAI. If the NAI is | ||||
| absent from the first SR-ERO, then this is an error, and the ERO | ||||
| should have failed the validation checks of Section 6.2.1. | ||||
| (c) Loop through the remaining SR-ERO subobjects. For each SR-ERO | ||||
| subobject, append it to label_stack, setting the TC, S and TTL | ||||
| fields according to the C bit and/or local policy. | ||||
| 6.2.2.2. SR-ERO subobjects contain Index SIDs | ||||
| If the SR-ERO subobjects contain SIDs with index values, then proceed | ||||
| as follows: | ||||
| (a) Initialize current_router to the local router. Initialize | ||||
| next_hop to null. Initialize label_stack to an empty label | ||||
| stack. | ||||
| (b) Get the first SR-ERO subobject from the ERO and look the SID | ||||
| index up in the LSDB. | ||||
| * If the SID is a node-SID, set current_router to the node | ||||
| identified by the node-SID, compute the shortest path to that | ||||
| node and set next_hop to the next hop from the shortest path. | ||||
| If next_hop is the router identified by the node-SID, and | ||||
| that router advertised its node-SID with the P flag clear | ||||
| (indicating that PHP is allowed), then do not add a label to | ||||
| label_stack. Otherwise, look up the next_hop router's SRGB | ||||
| in the LSDB. Get the label that is at offset node-SID | ||||
| relative to the SRGB base label and append it to label_stack. | ||||
| * If the SID is an adjacency-SID, set next_hop to the | ||||
| corresponding routing adjacency. Do not add a label the | ||||
| label_stack. Set current_router to the adjacent router. | ||||
| * If the SID is a binding-SID, then append the binding SID's | ||||
| associated label stack to label_stack. Set next_hop to the | ||||
| first hop router in the binding SID tunnel. Set | ||||
| current_router to the router that is the endpoint of the | ||||
| binding-SID tunnel. | ||||
| * Any other type of SID is an error, and the SR-ERO should have | ||||
| failed the validation checks of Section 6.2.1. | ||||
| (c) Loop through the remaining SR-ERO subobjects. For each SR-ERO | ||||
| subobject, look the SID index up in the LSDB. | ||||
| * If the SID is a node-SID, then look up the current_router's | ||||
| SRGB in the LSDB. Get the label that is at offset node-SID | ||||
| relative to the SRGB base label and append it to label_stack. | ||||
| * If the SID is an adjacency-SID, then look up the | ||||
| current_router's SRLB in the LSDB. Get the label that is at | ||||
| offset adjacency-SID relative to the SRLB base label and | ||||
| append it to label_stack. | ||||
| * If the SID is a binding-SID, then look up the | ||||
| current_router's SRGB in the LSDB. Get the label that is at | ||||
| offset binding-SID relative to the SRGB base label and append | ||||
| it to label_stack. | ||||
| * Any other type of SID is an error, and the SR-ERO should have | ||||
| failed the validation checks of Section 6.2.1. | ||||
| 6.2.2.3. SR-ERO subobjects contain NAI only | ||||
| If the SR-ERO subobjects do not contain SIDs (that is, contain only | ||||
| NAI), then look each NAI up in the LSDB to find the corresponding SID | ||||
| index. Then proceed as described above for SID index values. | ||||
| 6.2.2.4. Handling Errors During SR-ERO Conversion | ||||
| There are several errors that can occur during the process of | ||||
| converting an SR-ERO sequence to an MPLS label stack and a next hop. | ||||
| The PCC deals with them as follows. | ||||
| o If the PCC cannot find a SID index in the LSDB, it MUST send a | ||||
| PCErr message with Error-Type = 10 ("Reception of an invalid | ||||
| object") and Error-Value = TBD3 ("Unknown SID"). | ||||
| o If the PCC cannot find an NAI in the LSDB, it MUST send a PCErr | ||||
| message with Error-Type = 10 ("Reception of an invalid object") | ||||
| and Error-Value = TBD4 ("NAI cannot be resolved to a SID"). | ||||
| o If the PCC cannot find an SRGB in the LSDB, it MUST send a PCErr | ||||
| message with Error-Type = 10 ("Reception of an invalid object") | ||||
| and Error-Value = TBD5 ("Could not find SRGB"). | ||||
| o If the PCC finds that a router's SRGB is not large enough for a | ||||
| SID index value, it MUST send a PCErr message with Error-Type = 10 | ||||
| ("Reception of an invalid object") and Error-Value = TBD6 ("SID | ||||
| index exceeds SRGB size"). | ||||
| o If the PCC cannot find an SRLB in the LSDB, it MUST send a PCErr | ||||
| message with Error-Type = 10 ("Reception of an invalid object") | ||||
| and Error-Value = TBD7 ("Could not find SRLB"). | ||||
| o If the PCC finds that a router's SRLB is not large enough for a | ||||
| SID index value, it MUST send a PCErr message with Error-Type = 10 | ||||
| ("Reception of an invalid object") and Error-Value = TBD8 ("SID | ||||
| index exceeds SRLB size"). | ||||
| o If the number of labels in label_stack exceeds the maximum number | ||||
| of SIDs that the PCC can impose on the packet, it MUST send a | ||||
| PCErr message with Error-Type = 10 ("Reception of an invalid | ||||
| object") and Error-Value = 3 ("Unsupported number of Segment ERO | ||||
| subobjects"). | ||||
| 6.3. RRO Processing | ||||
| The syntax checking rules that apply to the SR-RRO subobject are | ||||
| identical to those of the SR-ERO subobject, except as noted below. | ||||
| If a PCEP speaker receives an SR-RRO subobject in which both SID and | ||||
| NAI are absent, it MUST consider the entire RRO invalid and send a | ||||
| PCErr message with Error-Type = 10 ("Reception of an invalid object") | ||||
| and Error-Value = 7 ("Both SID and NAI are absent in SR-RRO | ||||
| subobject"). | ||||
| If a PCE detects that all subobjects of the RRO are not identical, | ||||
| and if it does not support such an RRO, it MUST send a PCErr message | ||||
| with Error-Type = 10 ("Reception of an invalid object") and Error- | ||||
| Value = 10 ("Non-identical RRO subobjects"). | ||||
| 7. Backward Compatibility | ||||
| A PCEP speaker that does not support the SR PCEP capability cannot | A PCEP speaker that does not support the SR PCEP capability cannot | |||
| recognize the SR-ERO or SR-RRO subobjects. As such, it MUST send a | recognize the SR-ERO or SR-RRO subobjects. As such, it responds | |||
| PCEP error with Error-Type = 4 (Not supported object) and Error-Value | according to the rules for a malformed object, per [RFC5440]. | |||
| = 2 (Not supported object Type) as per [RFC5440]. | ||||
| Some implementations, which are compliant with an earlier version of | Some implementations, which are compliant with an earlier version of | |||
| this specification, do not send the PATH-SETUP-TYPE-CAPABILITY TLV in | this specification, do not send the PATH-SETUP-TYPE-CAPABILITY TLV in | |||
| their OPEN objects. Instead, to indicate that they support SR, these | their OPEN objects. Instead, to indicate that they support SR, these | |||
| implementations include the SR-CAPABILITY-TLV as a top-level TLV in | implementations include the SR-CAPABILITY-TLV as a top-level TLV in | |||
| the OPEN object. Unfortunately, some of these implementations made | the OPEN object. Unfortunately, some of these implementations made | |||
| it into the field before this document was published in its final | it into the field before this document was published in its final | |||
| form. Therefore, if a PCEP speaker receives an OPEN object in which | form. Therefore, if a PCEP speaker receives an OPEN object in which | |||
| the SR-CAPABILITY-TLV appears as a top-level TLV, then it MUST | the SR-CAPABILITY-TLV appears as a top-level TLV, then it MUST | |||
| interpret this as though the sender had sent a PATH-SETUP-TYPE- | interpret this as though the sender had sent a PATH-SETUP-TYPE- | |||
| CAPABILITY TLV with a PST list of (0, 1) (that is, both RSVP-TE and | CAPABILITY TLV with a PST list of (0, 1) (that is, both RSVP-TE and | |||
| SR-TE PSTs are supported) and with the SR-CAPABILITY-TLV as a sub- | SR-TE PSTs are supported) and with the SR-CAPABILITY-TLV as a sub- | |||
| TLV. If a PCEP speaker receives an OPEN object in which both the SR- | TLV. If a PCEP speaker receives an OPEN object in which both the SR- | |||
| CAPABILITY-TLV and PATH-SETUP-TYPE-CAPABILITY TLV appear as top-level | CAPABILITY-TLV and PATH-SETUP-TYPE-CAPABILITY TLV appear as top-level | |||
| TLVs, then it MUST ignore the top-level SR-CAPABILITY-TLV and process | TLVs, then it MUST ignore the top-level SR-CAPABILITY-TLV and process | |||
| only the PATH-SETUP-TYPE-CAPABILITY TLV. | only the PATH-SETUP-TYPE-CAPABILITY TLV. | |||
| 7. Management Considerations | 8. Management Considerations | |||
| 7.1. Policy | This document adds a new path setup type to PCEP to allow LSPs to be | |||
| set up using segment routing techniques. This path setup type may be | ||||
| used with PCEP alongside other path setup types, such as RSVP-TE, or | ||||
| it may be used exclusively. | ||||
| PCEP implementation: | 8.1. Controlling the Path Setup Type | |||
| o Can enable SR PCEP capability either by default or via explicit | The following factors control which path setup type is used for a | |||
| configuration. | given LSP. | |||
| o May generate PCEP error due to unsupported number of SR-ERO or SR- | o The available path setup types are constrained to those that are | |||
| RRO subobjects either by default or via explicit configuration. | supported by, or enabled on, the PCEP speakers. The PATH-SETUP- | |||
| TYPE-CAPABILITY TLV indicates which path setup types a PCEP | ||||
| speaker supports. To use segment routing as a path setup type, it | ||||
| is a prerequisite that the PCC and PCE both include PST=1 in the | ||||
| list of supported path setup types in this TLV, and also include | ||||
| the SR-PCE-CAPABILITY sub-TLV. | ||||
| 7.2. The PCEP Data Model | o When a PCE initiates an LSP, it proposes which path setup type to | |||
| use by including it in the PATH-SETUP-TYPE TLV in the SRP object | ||||
| of the PCInitiate message. The PCE chooses the path setup type | ||||
| based on the capabilities of the network nodes on the path and on | ||||
| its local policy. The PCC MAY choose to accept the proposed path | ||||
| setup type, or to reject the PCInitiate request, based on its | ||||
| local policy. | ||||
| A PCEP MIB module is defined in [RFC7420]n eeds be extended to cover | o When a PCC requests a path for an LSP, it can nominate a preferred | |||
| additional functionality provided by [RFC5440] and | path setup type by including it in the PATH-SETUP-TYPE TLV in the | |||
| [I-D.ietf-pce-pce-initiated-lsp]. Such extension will cover the new | RP object of the PCInitiate message. The PCE MAY choose to reply | |||
| functionality specified in this document. | with a path of the requested type, or to reply with a path of a | |||
| different type, or to reject the request, based on the | ||||
| capabilities of the network nodes on the path and on its local | ||||
| policy. | ||||
| 8. Security Considerations | The operator can influence the path setup type as follows. | |||
| The security considerations described in [RFC5440] and | o Implementations MUST allow the operator to enable and disable the | |||
| [I-D.ietf-pce-pce-initiated-lsp] are applicable to this | segment routing path setup type on a PCEP-speaking device. | |||
| specification. No additional security measure is required. | Implementations MAY also allow the operator to enable and disable | |||
| the RSVP-TE path setup type. | ||||
| 9. IANA Considerations | o PCE implementations MUST allow the operator to specify that an LSP | |||
| should be instantiated using segment routing or RSVP-TE as the | ||||
| proposed path setup type. | ||||
| 9.1. PCEP Objects | o PCE implementations MAY allow the operator to configure a | |||
| preference for the PCE to propose paths using segment routing or | ||||
| RSVP-TE in the absence of a specified path setup type. | ||||
| This document defines a new sub-object type for the PCEP explicit | o PCC implementations MUST allow the operator to specify that a path | |||
| route object (ERO), and a new sub-object type for the PCEP record | requested for an LSP nominates segment routing or RSVP-TE as the | |||
| route object (RRO). The code points for sub-object types of these | path setup type. | |||
| o PCC implementations MAY allow the operator to configure a | ||||
| preference for the PCC to nominate segment routing or RSVP-TE as | ||||
| the path setup type if none is specified for an LSP. | ||||
| o PCC implementations SHOULD allow the operator to configure a PCC | ||||
| to refuse to set up an LSP using an undesired path setup type. | ||||
| 8.2. Migrating a Network to Use PCEP Segment Routed Paths | ||||
| This section discusses the steps that the operator takes when | ||||
| migrating a network to enable PCEP to set up paths using segment | ||||
| routing as the path setup type. | ||||
| o The operator enables the segment routing PST on the PCE servers. | ||||
| o The operator enables the segment routing PST on the PCCs. | ||||
| o The operator resets each PCEP session. The PCEP sessions come | ||||
| back up with segment routing enabled. | ||||
| o If the operator detects a problem, they can roll the network back | ||||
| to its initial state by disabling the segment routing PST on the | ||||
| PCEP speakers and resetting the PCEP sessions. | ||||
| Note that the data plane is unaffected if a PCEP session is reset. | ||||
| Any LSPs that were set up before the session reset will remain in | ||||
| place and will still be present after the session comes back up. | ||||
| An implementation SHOULD allow the operator to manually trigger a | ||||
| PCEP session to be reset. | ||||
| An implementation MAY automatically reset a PCEP session when an | ||||
| operator reconfigures the PCEP speaker's capabilities. However, note | ||||
| that if the capabilities at both ends of the PCEP session are not | ||||
| reconfigured simultaneously, then the session could be reset twice, | ||||
| which could lead to unnecessary network traffic. Therefore, such | ||||
| implementations SHOULD allow the operator to override this behaviour | ||||
| and wait instead for a manual reset. | ||||
| Once segment routing is enabled on a PCEP session, it can be used as | ||||
| the path setup type for future LSPs. | ||||
| User traffic is not automatically be migrated from existing LSPs onto | ||||
| segment routed LSPs just by enabling the segment routing PST in PCEP. | ||||
| The migration of user traffic from existing LSPs onto segment routing | ||||
| LSPs is beyond the scope of this document. | ||||
| 8.3. Verification of Network Operation | ||||
| The operator needs the following information to verify that PCEP is | ||||
| operating correctly with respect to the segment routing path setup | ||||
| type. | ||||
| o An implementation SHOULD allow the operator to view whether the | ||||
| PCEP speaker sent the segment routing PST capability to its peer. | ||||
| If the PCEP speaker is a PCC, then the implementation SHOULD also | ||||
| allow the operator to view the value of the L flag that was sent, | ||||
| and the value of the MSD field that was sent. | ||||
| o An implementation SHOULD allow the operator to view whether the | ||||
| peer sent a the segment routing PST capability. If the peer is a | ||||
| PCC, then the implementation SHOULD also allow the operator to | ||||
| view the values of the L flag and MSD fields that the peer sent | ||||
| sent. | ||||
| o An implementation SHOULD allow the operator to view whether the | ||||
| segment routing PST is enabled on the PCEP session. | ||||
| o If one PCEP speaker advertises the segment routing PST capability, | ||||
| but the other does not, then the implementation SHOULD create a | ||||
| log to inform the operator of the capability mismatch. | ||||
| o An implementation SHOULD allow the operator to view the PST that | ||||
| was proposed, or requested, for an LSP, and the PST that was | ||||
| actually used. | ||||
| o If a PCEP speaker decides to use a different PST to the one that | ||||
| was proposed, or requested, for an LSP, then the implementation | ||||
| SHOULD create a log to inform the operator that the expected PST | ||||
| has not been used. The log SHOULD give the reason for this choice | ||||
| (local policy, equipment capability etc.) | ||||
| o If a PCEP speaker rejects a segment routed path, then it SHOULD | ||||
| create a log to inform the operator, giving the reson for the | ||||
| decision (local policy, MSD exceeded etc.) | ||||
| 8.4. Relationship to Existing Management Models | ||||
| The PCEP YANG module [I-D.ietf-pce-pcep-yang] should include: | ||||
| o advertised PST capabilities and MSD per PCEP session. | ||||
| o the PST configured for, and used by, each LSP. | ||||
| The PCEP MIB [RFC7420] could also be updated to include this | ||||
| information. | ||||
| 9. Security Considerations | ||||
| The security considerations described in [RFC5440], [RFC8281] and | ||||
| [I-D.ietf-pce-lsp-setup-type] are applicable to this specification. | ||||
| No additional security measure is required. | ||||
| 10. IANA Considerations | ||||
| 10.1. PCEP Objects | ||||
| This document defines a new subobject type for the PCEP explicit | ||||
| route object (ERO), and a new subobject type for the PCEP record | ||||
| route object (RRO). The code points for subobject types of these | ||||
| objects is maintained in the RSVP parameters registry, under the | objects is maintained in the RSVP parameters registry, under the | |||
| EXPLICIT_ROUTE and ROUTE_RECORD objects. IANA is requested to | EXPLICIT_ROUTE and ROUTE_RECORD objects. IANA is requested to | |||
| confirm the early allocation of the following code points in the RSVP | confirm the early allocation of the following code points in the RSVP | |||
| Parameters registry for each of the new sub-object types defined in | Parameters registry for each of the new subobject types defined in | |||
| this document. | this document. | |||
| Object Sub-Object Sub-Object Type | Object Subobject Subobject Type | |||
| --------------------- -------------------------- ------------------ | --------------------- -------------------------- ------------------ | |||
| EXPLICIT_ROUTE SR-ERO (PCEP-specific) 36 | EXPLICIT_ROUTE SR-ERO (PCEP-specific) 36 | |||
| ROUTE_RECORD SR-RRO (PCEP-specific) 36 | ROUTE_RECORD SR-RRO (PCEP-specific) 36 | |||
| 9.2. PCEP-Error Object | 10.2. New NAI Type Registry | |||
| IANA is requested to create a new sub-registry within the "Path | ||||
| Computation Element Protocol (PCEP) Numbers" registry called "PCEP | ||||
| SR-ERO NAI Types". The allocation policy for this new registry | ||||
| should be by IETF Review. The new registry should contain the | ||||
| following values: | ||||
| Value Description Reference | ||||
| 0 NAI is absent. This document | ||||
| 1 NAI is an IPv4 node ID. This document | ||||
| 2 NAI is an IPv6 node ID. This document | ||||
| 3 NAI is an IPv4 adjacency. This document | ||||
| 4 NAI is an IPv6 adjacency. This document | ||||
| 5 NAI is an unnumbered This document | ||||
| adjacency with IPv4 node IDs. | ||||
| 10.3. New SR-ERO Flag Registry | ||||
| IANA is requested to create a new sub-registry, named "SR-ERO Flag | ||||
| Field", within the "Path Computation Element Protocol (PCEP) Numbers" | ||||
| registry to manage the Flag field of the SR-ERO subobject. New | ||||
| values are to be assigned by Standards Action [RFC8126]. Each bit | ||||
| should be tracked with the following qualities: | ||||
| o Bit number (counting from bit 0 as the most significant bit) | ||||
| o Capability description | ||||
| o Defining RFC | ||||
| The following values are defined in this document: | ||||
| Bit Description Reference | ||||
| 0-7 Unassigned | ||||
| 8 NAI is absent (F) This document | ||||
| 9 SID is absent (S) This document | ||||
| 10 SID specifies TC, S This document | ||||
| and TTL in addition | ||||
| to an MPLS label (C) | ||||
| 11 SID specifies an MPLS This document | ||||
| label (M) | ||||
| 10.4. PCEP-Error Object | ||||
| IANA is requested to confirm the early allocation of the code-points | IANA is requested to confirm the early allocation of the code-points | |||
| in the PCEP-ERROR Object Error Types and Values registry for the | in the PCEP-ERROR Object Error Types and Values registry for the | |||
| following new error-values: | following new error-values: | |||
| Error-Type Meaning | Error-Type Meaning | |||
| ---------- ------- | ---------- ------- | |||
| 10 Reception of an invalid object. | 10 Reception of an invalid object. | |||
| Error-value = 2: Bad label value | Error-value = 2: Bad label value | |||
| Error-value = 3: Unsupported number | Error-value = 3: Unsupported number | |||
| of Segment ERO | of SR-ERO | |||
| subobjects | subobjects | |||
| Error-value = 4: Bad label format | Error-value = 4: Bad label format | |||
| Error-value = 5: Non-identical ERO | Error-value = 5: ERO mixes SR-ERO | |||
| subobjects | subobjects with | |||
| other subobject | ||||
| types | ||||
| Error-value = 6: Both SID and NAI | Error-value = 6: Both SID and NAI | |||
| are absent in ERO | are absent in SR- | |||
| subobject | ERO subobject | |||
| Error-value = 7: Both SID and NAI | Error-value = 7: Both SID and NAI | |||
| are absent in RRO | are absent in SR- | |||
| subobject | RRO subobject | |||
| Error-value = 9: Default MSD is | Error-value = 9: Default MSD is | |||
| specified for the | specified for the | |||
| PCEP session | PCEP session | |||
| Error-value = 10: Non-identical RRO | Error-value = 10: RRO mixes SR-RRO | |||
| subobjects | subobjects with | |||
| other subobject | ||||
| types | ||||
| Error-value = TBD1: Missing PCE-SR- | Error-value = TBD1: Missing PCE-SR- | |||
| CAPABILITY sub-TLV | CAPABILITY sub-TLV | |||
| Error-value = TBD2: Unsupported NAI | ||||
| Type in SR-ERO | ||||
| subobject | ||||
| Error-value = TBD3: Unknown SID | ||||
| Error-value = TBD4: NAI cannot be | ||||
| resolved to a SID | ||||
| Error-value = TBD5: Could not find SRGB | ||||
| Error-value = TBD6: SID index exceeds | ||||
| SRGB size | ||||
| Error-value = TBD7: Could not find SRLB | ||||
| Error-value = TBD8: SID index exceeds | ||||
| SRLB size | ||||
| Error-value = TBD9: Cannot derive a | ||||
| next hop from SR- | ||||
| ERO | ||||
| Error-value = TBD10: Bad SID type in SR- | ||||
| ERO | ||||
| Error-value = TBD11: Inconsistent SIDs | ||||
| in SR-ERO | ||||
| subobjects | ||||
| Note to IANA: this draft originally had an early allocation for | Note to IANA: this draft originally had an early allocation for | |||
| Error-value=11 (Malformed object) in the above list. However, we | Error-value=11 (Malformed object) in the above list. However, we | |||
| have since moved the definition of that code point to draft-ietf-pce- | have since moved the definition of that code point to draft-ietf-pce- | |||
| lsp-setup-type and we included an instruction in that draft for you | lsp-setup-type and we included an instruction in that draft for you | |||
| to update the reference in the indicated registry. Please ensure | to update the reference in the indicated registry. Please ensure | |||
| that this has happened when you process the present draft. | that this has happened when you process the present draft. | |||
| Note to IANA: the final Error-value (Missing PCE-SR-CAPABILITY sub- | Note to IANA: some Error-values in the above list were defined after | |||
| TLV) in the above list was defined after the early allocation took | the early allocation took place, and so do not currently have a code | |||
| place, and so does not currently have a code point assigned. Please | point assigned. Please assign code points from the indicated | |||
| assign a code point from the indicated registry and replace each | registry and replace each instance of "TBD1", "TBD2" etc. in this | |||
| instance of "TBD1" in this document with the allocated code point. | document with the respective code points. | |||
| 9.3. PCEP TLV Type Indicators | Note to IANA: some of the Error-value descriptive strings above have | |||
| changed since the early allocation. Please refresh the registry. | ||||
| 10.5. PCEP TLV Type Indicators | ||||
| IANA is requested to confirm the early allocation of the following | IANA is requested to confirm the early allocation of the following | |||
| code point in the PCEP TLV Type Indicators registry. | code point in the PCEP TLV Type Indicators registry. | |||
| Value Meaning Reference | Value Meaning Reference | |||
| ------------------------- ---------------------------- -------------- | ------------------------- ---------------------------- -------------- | |||
| 26 SR-PCE-CAPABILITY This document | 26 SR-PCE-CAPABILITY This document | |||
| 9.4. New Path Setup Type | 10.6. New Path Setup Type | |||
| [I-D.ietf-pce-lsp-setup-type] requests that IANA creates a sub- | [I-D.ietf-pce-lsp-setup-type] requests that IANA creates a sub- | |||
| registry within the "Path Computation Element Protocol (PCEP) | registry within the "Path Computation Element Protocol (PCEP) | |||
| Numbers" registry called "PCEP Path Setup Types". IANA is requested | Numbers" registry called "PCEP Path Setup Types". IANA is requested | |||
| to allocate a new code point within this registry, as follows: | to allocate a new code point within this registry, as follows: | |||
| Value Description Reference | Value Description Reference | |||
| ------------------------- ---------------------------- -------------- | ------------------------- ---------------------------- -------------- | |||
| 1 Traffic engineering path is This document | 1 Traffic engineering path is This document | |||
| setup using Segment Routing. | setup using Segment Routing. | |||
| 9.5. New Metric Type | 10.7. New Metric Type | |||
| IANA is requested to confirm the early allocation of the following | IANA is requested to confirm the early allocation of the following | |||
| code point in the PCEP METRIC object T field registry: | code point in the PCEP METRIC object T field registry: | |||
| Value Description Reference | Value Description Reference | |||
| ------------------------- ---------------------------- -------------- | ------------------------- ---------------------------- -------------- | |||
| 11 Segment-ID (SID) Depth. This document | 11 Segment-ID (SID) Depth. This document | |||
| 10. Contributors | 10.8. SR PCE Capability Flags | |||
| IANA is requested to create a new sub-registry, named "SR Capability | ||||
| Flag Field", within the "Path Computation Element Protocol (PCEP) | ||||
| Numbers" registry to manage the Flag field of the SR-PCE-CAPABILITY | ||||
| TLV. New values are to be assigned by Standards Action [RFC8126]. | ||||
| Each bit should be tracked with the following qualities: | ||||
| o Bit number (counting from bit 0 as the most significant bit) | ||||
| o Capability description | ||||
| o Defining RFC | ||||
| The following values are defined in this document: | ||||
| Bit Description Reference | ||||
| 0-5 Unassigned | ||||
| 6 Node or Adjacency This document | ||||
| Identifier (NAI) is | ||||
| supported (N) | ||||
| 7 Unlimited Maximum SID This document | ||||
| Depth (L) | ||||
| 11. Contributors | ||||
| The following people contributed to this document: | The following people contributed to this document: | |||
| - Lakshmi Sharma | - Lakshmi Sharma | |||
| - Jan Medved | - Jan Medved | |||
| - Edward Crabbe | - Edward Crabbe | |||
| - Robert Raszuk | - Robert Raszuk | |||
| - Victor Lopez | - Victor Lopez | |||
| 11. Acknowledgements | 12. Acknowledgements | |||
| We thank Ina Minei, George Swallow, Marek Zavodsky, Dhruv Dhody, Ing- | We thank Ina Minei, George Swallow, Marek Zavodsky, Dhruv Dhody, Ing- | |||
| Wher Chen and Tomas Janciga for the valuable comments. | Wher Chen and Tomas Janciga for the valuable comments. | |||
| 12. References | 13. References | |||
| 12.1. Normative References | 13.1. Normative References | |||
| [I-D.ietf-idr-bgp-ls-segment-routing-msd] | [I-D.ietf-idr-bgp-ls-segment-routing-msd] | |||
| Tantsura, J., Chunduri, U., Mirsky, G., and S. Sivabalan, | Tantsura, J., Chunduri, U., Mirsky, G., and S. Sivabalan, | |||
| "Signaling Maximum SID Depth using Border Gateway Protocol | "Signaling Maximum SID Depth using Border Gateway Protocol | |||
| Link-State", draft-ietf-idr-bgp-ls-segment-routing-msd-01 | Link-State", draft-ietf-idr-bgp-ls-segment-routing-msd-01 | |||
| (work in progress), October 2017. | (work in progress), October 2017. | |||
| [I-D.ietf-isis-segment-routing-extensions] | [I-D.ietf-isis-segment-routing-extensions] | |||
| Previdi, S., Filsfils, C., Bashandy, A., Gredler, H., | Previdi, S., Ginsberg, L., Filsfils, C., Bashandy, A., | |||
| Litkowski, S., Decraene, B., and j. jefftant@gmail.com, | Gredler, H., Litkowski, S., Decraene, B., and J. Tantsura, | |||
| "IS-IS Extensions for Segment Routing", draft-ietf-isis- | "IS-IS Extensions for Segment Routing", draft-ietf-isis- | |||
| segment-routing-extensions-13 (work in progress), June | segment-routing-extensions-18 (work in progress), June | |||
| 2017. | 2018. | |||
| [I-D.ietf-isis-segment-routing-msd] | [I-D.ietf-isis-segment-routing-msd] | |||
| Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg, | Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg, | |||
| "Signaling MSD (Maximum SID Depth) using IS-IS", draft- | "Signaling MSD (Maximum SID Depth) using IS-IS", draft- | |||
| ietf-isis-segment-routing-msd-04 (work in progress), June | ietf-isis-segment-routing-msd-12 (work in progress), May | |||
| 2017. | 2018. | |||
| [I-D.ietf-ospf-segment-routing-extensions] | [I-D.ietf-ospf-segment-routing-extensions] | |||
| Psenak, P., Previdi, S., Filsfils, C., Gredler, H., | Psenak, P., Previdi, S., Filsfils, C., Gredler, H., | |||
| Shakir, R., Henderickx, W., and J. Tantsura, "OSPF | Shakir, R., Henderickx, W., and J. Tantsura, "OSPF | |||
| Extensions for Segment Routing", draft-ietf-ospf-segment- | Extensions for Segment Routing", draft-ietf-ospf-segment- | |||
| routing-extensions-21 (work in progress), October 2017. | routing-extensions-25 (work in progress), April 2018. | |||
| [I-D.ietf-ospf-segment-routing-msd] | [I-D.ietf-ospf-segment-routing-msd] | |||
| Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, | Tantsura, J., Chunduri, U., Aldrin, S., and P. Psenak, | |||
| "Signaling MSD (Maximum SID Depth) using OSPF", draft- | "Signaling MSD (Maximum SID Depth) using OSPF", draft- | |||
| ietf-ospf-segment-routing-msd-05 (work in progress), June | ietf-ospf-segment-routing-msd-14 (work in progress), May | |||
| 2017. | 2018. | |||
| [I-D.ietf-pce-lsp-setup-type] | [I-D.ietf-pce-lsp-setup-type] | |||
| Sivabalan, S., Tantsura, J., Minei, I., Varga, R., and J. | Sivabalan, S., Tantsura, J., Minei, I., Varga, R., and J. | |||
| Hardwick, "Conveying path setup type in PCEP messages", | Hardwick, "Conveying path setup type in PCEP messages", | |||
| draft-ietf-pce-lsp-setup-type-05 (work in progress), | draft-ietf-pce-lsp-setup-type-10 (work in progress), May | |||
| October 2017. | 2018. | |||
| [I-D.ietf-pce-pce-initiated-lsp] | [I-D.ietf-pce-pcep-yang] | |||
| Crabbe, E., Minei, I., Sivabalan, S., and R. Varga, "PCEP | Dhody, D., Hardwick, J., Beeram, V., and J. Tantsura, "A | |||
| Extensions for PCE-initiated LSP Setup in a Stateful PCE | YANG Data Model for Path Computation Element | |||
| Model", draft-ietf-pce-pce-initiated-lsp-11 (work in | Communications Protocol (PCEP)", draft-ietf-pce-pcep- | |||
| progress), October 2017. | yang-08 (work in progress), June 2018. | |||
| [I-D.ietf-spring-segment-routing] | [I-D.ietf-spring-segment-routing] | |||
| Filsfils, C., Previdi, S., Decraene, B., Litkowski, S., | Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., | |||
| and R. Shakir, "Segment Routing Architecture", draft-ietf- | Litkowski, S., and R. Shakir, "Segment Routing | |||
| spring-segment-routing-12 (work in progress), June 2017. | Architecture", draft-ietf-spring-segment-routing-15 (work | |||
| in progress), January 2018. | ||||
| [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, <https://www.rfc- | DOI 10.17487/RFC2119, March 1997, | |||
| editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., | ||||
| Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack | ||||
| Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, | ||||
| <https://www.rfc-editor.org/info/rfc3032>. | ||||
| [RFC5440] Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation | [RFC5440] Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation | |||
| Element (PCE) Communication Protocol (PCEP)", RFC 5440, | Element (PCE) Communication Protocol (PCEP)", RFC 5440, | |||
| DOI 10.17487/RFC5440, March 2009, <https://www.rfc- | DOI 10.17487/RFC5440, March 2009, | |||
| editor.org/info/rfc5440>. | <https://www.rfc-editor.org/info/rfc5440>. | |||
| [RFC5462] Andersson, L. and R. Asati, "Multiprotocol Label Switching | ||||
| (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic | ||||
| Class" Field", RFC 5462, DOI 10.17487/RFC5462, February | ||||
| 2009, <https://www.rfc-editor.org/info/rfc5462>. | ||||
| [RFC7420] Koushik, A., Stephan, E., Zhao, Q., King, D., and J. | [RFC7420] Koushik, A., Stephan, E., Zhao, Q., King, D., and J. | |||
| Hardwick, "Path Computation Element Communication Protocol | Hardwick, "Path Computation Element Communication Protocol | |||
| (PCEP) Management Information Base (MIB) Module", | (PCEP) Management Information Base (MIB) Module", | |||
| RFC 7420, DOI 10.17487/RFC7420, December 2014, | RFC 7420, DOI 10.17487/RFC7420, December 2014, | |||
| <https://www.rfc-editor.org/info/rfc7420>. | <https://www.rfc-editor.org/info/rfc7420>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
| [RFC8231] Crabbe, E., Minei, I., Medved, J., and R. Varga, "Path | [RFC8231] Crabbe, E., Minei, I., Medved, J., and R. Varga, "Path | |||
| Computation Element Communication Protocol (PCEP) | Computation Element Communication Protocol (PCEP) | |||
| Extensions for Stateful PCE", RFC 8231, | Extensions for Stateful PCE", RFC 8231, | |||
| DOI 10.17487/RFC8231, September 2017, <https://www.rfc- | DOI 10.17487/RFC8231, September 2017, | |||
| editor.org/info/rfc8231>. | <https://www.rfc-editor.org/info/rfc8231>. | |||
| 12.2. Informative References | [RFC8281] Crabbe, E., Minei, I., Sivabalan, S., and R. Varga, "Path | |||
| Computation Element Communication Protocol (PCEP) | ||||
| Extensions for PCE-Initiated LSP Setup in a Stateful PCE | ||||
| Model", RFC 8281, DOI 10.17487/RFC8281, December 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8281>. | ||||
| 13.2. Informative References | ||||
| [I-D.ietf-6man-segment-routing-header] | ||||
| Previdi, S., Filsfils, C., Leddy, J., Matsushima, S., and | ||||
| d. daniel.voyer@bell.ca, "IPv6 Segment Routing Header | ||||
| (SRH)", draft-ietf-6man-segment-routing-header-13 (work in | ||||
| progress), May 2018. | ||||
| [I-D.ietf-spring-segment-routing-mpls] | ||||
| Bashandy, A., Filsfils, C., Previdi, S., Decraene, B., | ||||
| Litkowski, S., and R. Shakir, "Segment Routing with MPLS | ||||
| data plane", draft-ietf-spring-segment-routing-mpls-14 | ||||
| (work in progress), June 2018. | ||||
| [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., | [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., | |||
| and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP | and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP | |||
| Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, | Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, | |||
| <https://www.rfc-editor.org/info/rfc3209>. | <https://www.rfc-editor.org/info/rfc3209>. | |||
| [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label | ||||
| Switching (GMPLS) Signaling Resource ReserVation Protocol- | ||||
| Traffic Engineering (RSVP-TE) Extensions", RFC 3473, | ||||
| DOI 10.17487/RFC3473, January 2003, <https://www.rfc- | ||||
| editor.org/info/rfc3473>. | ||||
| [RFC3477] Kompella, K. and Y. Rekhter, "Signalling Unnumbered Links | ||||
| in Resource ReSerVation Protocol - Traffic Engineering | ||||
| (RSVP-TE)", RFC 3477, DOI 10.17487/RFC3477, January 2003, | ||||
| <https://www.rfc-editor.org/info/rfc3477>. | ||||
| [RFC4657] Ash, J., Ed. and J. Le Roux, Ed., "Path Computation | [RFC4657] Ash, J., Ed. and J. Le Roux, Ed., "Path Computation | |||
| Element (PCE) Communication Protocol Generic | Element (PCE) Communication Protocol Generic | |||
| Requirements", RFC 4657, DOI 10.17487/RFC4657, September | Requirements", RFC 4657, DOI 10.17487/RFC4657, September | |||
| 2006, <https://www.rfc-editor.org/info/rfc4657>. | 2006, <https://www.rfc-editor.org/info/rfc4657>. | |||
| [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | ||||
| Writing an IANA Considerations Section in RFCs", BCP 26, | ||||
| RFC 8126, DOI 10.17487/RFC8126, June 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8126>. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Siva Sivabalan | Siva Sivabalan | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| 2000 Innovation Drive | 2000 Innovation Drive | |||
| Kanata, Ontario K2K 3E8 | Kanata, Ontario K2K 3E8 | |||
| Canada | Canada | |||
| Email: msiva@cisco.com | Email: msiva@cisco.com | |||
| End of changes. 112 change blocks. | ||||
| 402 lines changed or deleted | 873 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/ | ||||