| < draft-ietf-ospf-segment-routing-extensions-16.txt | draft-ietf-ospf-segment-routing-extensions-17.txt > | |||
|---|---|---|---|---|
| Open Shortest Path First IGP P. Psenak, Ed. | Open Shortest Path First IGP P. Psenak, Ed. | |||
| Internet-Draft S. Previdi, Ed. | Internet-Draft S. Previdi, Ed. | |||
| Intended status: Standards Track C. Filsfils | Intended status: Standards Track C. Filsfils | |||
| Expires: November 24, 2017 Cisco Systems, Inc. | Expires: December 25, 2017 Cisco Systems, Inc. | |||
| H. Gredler | H. Gredler | |||
| RtBrick Inc. | RtBrick Inc. | |||
| R. Shakir | R. Shakir | |||
| Google, Inc. | Google, Inc. | |||
| W. Henderickx | W. Henderickx | |||
| Nokia | Nokia | |||
| J. Tantsura | J. Tantsura | |||
| Individual | Individual | |||
| May 23, 2017 | June 23, 2017 | |||
| OSPF Extensions for Segment Routing | OSPF Extensions for Segment Routing | |||
| draft-ietf-ospf-segment-routing-extensions-16 | draft-ietf-ospf-segment-routing-extensions-17 | |||
| Abstract | Abstract | |||
| Segment Routing (SR) allows a flexible definition of end-to-end paths | Segment Routing (SR) allows a flexible definition of end-to-end paths | |||
| within IGP topologies by encoding paths as sequences of topological | within IGP topologies by encoding paths as sequences of topological | |||
| sub-paths, called "segments". These segments are advertised by the | sub-paths, called "segments". These segments are advertised by the | |||
| link-state routing protocols (IS-IS and OSPF). | link-state routing protocols (IS-IS and OSPF). | |||
| This draft describes the OSPF extensions required for Segment | This draft describes the OSPF extensions required for Segment | |||
| Routing. | Routing. | |||
| 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", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| 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 http://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 November 24, 2017. | This Internet-Draft will expire on December 25, 2017. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 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 | (http://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. Segment Routing Identifiers . . . . . . . . . . . . . . . . . 3 | 2. Segment Routing Identifiers . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. SID/Label Sub-TLV . . . . . . . . . . . . . . . . . . . . 4 | 2.1. SID/Label Sub-TLV . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Segment Routing Capabilities . . . . . . . . . . . . . . . . 4 | 3. Segment Routing Capabilities . . . . . . . . . . . . . . . . 4 | |||
| 3.1. SR-Algorithm TLV . . . . . . . . . . . . . . . . . . . . 4 | 3.1. SR-Algorithm TLV . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.2. SID/Label Range TLV . . . . . . . . . . . . . . . . . . . 6 | 3.2. SID/Label Range TLV . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.3. SR Local Block Sub-TLV . . . . . . . . . . . . . . . . . 8 | 3.3. SR Local Block TLV . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.4. SRMS Preference Sub-TLV . . . . . . . . . . . . . . . . . 9 | 3.4. SRMS Preference TLV . . . . . . . . . . . . . . . . . . . 10 | |||
| 4. OSPF Extended Prefix Range TLV . . . . . . . . . . . . . . . 10 | 4. OSPF Extended Prefix Range TLV . . . . . . . . . . . . . . . 11 | |||
| 5. Prefix SID Sub-TLV . . . . . . . . . . . . . . . . . . . . . 12 | 5. Prefix SID Sub-TLV . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 6. SID/Label Binding Sub-TLV . . . . . . . . . . . . . . . . . . 16 | 6. Adjacency Segment Identifier (Adj-SID) . . . . . . . . . . . 16 | |||
| 6.1. ERO Metric Sub-TLV . . . . . . . . . . . . . . . . . . . 17 | 6.1. Adj-SID Sub-TLV . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 6.2. ERO Sub-TLVs . . . . . . . . . . . . . . . . . . . . . . 18 | 6.2. LAN Adj-SID Sub-TLV . . . . . . . . . . . . . . . . . . . 18 | |||
| 6.2.1. IPv4 ERO Sub-TLV . . . . . . . . . . . . . . . . . . 18 | 7. Elements of Procedure . . . . . . . . . . . . . . . . . . . . 19 | |||
| 6.2.2. Unnumbered Interface ID ERO Sub-TLV . . . . . . . . . 19 | 7.1. Intra-area Segment routing in OSPFv2 . . . . . . . . . . 19 | |||
| 6.2.3. IPv4 Backup ERO Sub-TLV . . . . . . . . . . . . . . . 21 | 7.2. Inter-area Segment routing in OSPFv2 . . . . . . . . . . 20 | |||
| 6.2.4. Unnumbered Interface ID Backup ERO Sub-TLV . . . . . 22 | 7.3. Segment Routing for External Prefixes . . . . . . . . . . 21 | |||
| 7. Adjacency Segment Identifier (Adj-SID) . . . . . . . . . . . 23 | 7.4. Advertisement of Adj-SID . . . . . . . . . . . . . . . . 21 | |||
| 7.1. Adj-SID Sub-TLV . . . . . . . . . . . . . . . . . . . . . 23 | 7.4.1. Advertisement of Adj-SID on Point-to-Point Links . . 21 | |||
| 7.2. LAN Adj-SID Sub-TLV . . . . . . . . . . . . . . . . . . . 25 | 7.4.2. Adjacency SID on Broadcast or NBMA Interfaces . . . . 21 | |||
| 8. Elements of Procedure . . . . . . . . . . . . . . . . . . . . 26 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 8.1. Intra-area Segment routing in OSPFv2 . . . . . . . . . . 26 | 8.1. OSPF OSPF Router Information (RI) TLVs Registry . . . . . 22 | |||
| 8.2. Inter-area Segment routing in OSPFv2 . . . . . . . . . . 27 | 8.2. OSPF Extended Prefix LSA TLV Registry . . . . . . . . . . 22 | |||
| 8.3. Segment Routing for External Prefixes . . . . . . . . . . 28 | 8.3. OSPF Extended Prefix LSA Sub-TLV Registry . . . . . . . . 22 | |||
| 8.4. Advertisement of Adj-SID . . . . . . . . . . . . . . . . 29 | 8.4. OSPF Extended Link LSA Sub-TLV Registry . . . . . . . . . 22 | |||
| 8.4.1. Advertisement of Adj-SID on Point-to-Point Links . . 29 | 9. Implementation Status . . . . . . . . . . . . . . . . . . . . 23 | |||
| 8.4.2. Adjacency SID on Broadcast or NBMA Interfaces . . . . 29 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 24 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 | 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 9.1. OSPF OSPF Router Information (RI) TLVs Registry . . . . . 29 | 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 9.2. OSPF Extended Prefix LSA TLV Registry . . . . . . . . . . 30 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 9.3. OSPF Extended Prefix LSA Sub-TLV Registry . . . . . . . . 30 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 25 | |||
| 9.4. OSPF Extended Link LSA Sub-TLV Registry . . . . . . . . . 30 | 13.2. Informative References . . . . . . . . . . . . . . . . . 25 | |||
| 10. Implementation Status . . . . . . . . . . . . . . . . . . . . 30 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 11. Security Considerations . . . . . . . . . . . . . . . . . . . 32 | ||||
| 12. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 32 | ||||
| 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 32 | ||||
| 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 32 | ||||
| 14.1. Normative References . . . . . . . . . . . . . . . . . . 32 | ||||
| 14.2. Informative References . . . . . . . . . . . . . . . . . 33 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 | ||||
| 1. Introduction | 1. Introduction | |||
| Segment Routing (SR) allows a flexible definition of end-to-end paths | Segment Routing (SR) allows a flexible definition of end-to-end paths | |||
| within IGP topologies by encoding paths as sequences of topological | within IGP topologies by encoding paths as sequences of topological | |||
| sub-paths, called "segments". These segments are advertised by the | sub-paths, called "segments". These segments are advertised by the | |||
| link-state routing protocols (IS-IS and OSPF). Prefix segments | link-state routing protocols (IS-IS and OSPF). Prefix segments | |||
| represent an ECMP-aware shortest-path to a prefix (or a node), as per | represent an ECMP-aware shortest-path to a prefix (or a node), as per | |||
| the state of the IGP topology. Adjacency segments represent a hop | the state of the IGP topology. Adjacency segments represent a hop | |||
| over a specific adjacency between two nodes in the IGP. A prefix | over a specific adjacency between two nodes in the IGP. A prefix | |||
| skipping to change at page 3, line 44 ¶ | skipping to change at page 3, line 37 ¶ | |||
| There are additional segment types, e.g., Binding SID defined in | There are additional segment types, e.g., Binding SID defined in | |||
| [I-D.ietf-spring-segment-routing]. | [I-D.ietf-spring-segment-routing]. | |||
| This draft describes the OSPF extensions required for Segment | This draft describes the OSPF extensions required for Segment | |||
| Routing. | Routing. | |||
| Segment Routing architecture is described in | Segment Routing architecture is described in | |||
| [I-D.ietf-spring-segment-routing]. | [I-D.ietf-spring-segment-routing]. | |||
| Segment Routing use cases are described in | Segment Routing use cases are described in [RFC7855]. | |||
| [I-D.filsfils-spring-segment-routing-use-cases]. | ||||
| 2. Segment Routing Identifiers | 2. Segment Routing Identifiers | |||
| Segment Routing defines various types of Segment Identifiers (SIDs): | Segment Routing defines various types of Segment Identifiers (SIDs): | |||
| Prefix-SID, Adjacency-SID, LAN Adjacency SID, and Binding SID. | Prefix-SID, Adjacency-SID, LAN Adjacency SID, and Binding SID. | |||
| Extended Prefix/Link Opaque LSAs defined in [RFC7684] are used for | Extended Prefix/Link Opaque LSAs defined in [RFC7684] are used for | |||
| advertisements of the various SID types. | advertisements of the various SID types. | |||
| 2.1. SID/Label Sub-TLV | 2.1. SID/Label Sub-TLV | |||
| The SID/Label Sub-TLV appears in multiple TLVs or Sub-TLVs defined | The SID/Label Sub-TLV appears in multiple TLVs or Sub-TLVs defined | |||
| later in this document. It is used to advertise the SID or label | later in this document. It is used to advertise the SID or label | |||
| associated with a prefix or adjacency. The SID/Label TLV has | associated with a prefix or adjacency. The SID/Label Sub-TLV has | |||
| following format: | following format: | |||
| 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 | | | Type | Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SID/Label (variable) | | | SID/Label (variable) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 4, line 49 ¶ | skipping to change at page 4, line 41 ¶ | |||
| advertised to other routers in the area. | advertised to other routers in the area. | |||
| These SR capabilities are advertised in the Router Information Opaque | These SR capabilities are advertised in the Router Information Opaque | |||
| LSA (defined in [RFC7770]). | LSA (defined in [RFC7770]). | |||
| 3.1. SR-Algorithm TLV | 3.1. SR-Algorithm TLV | |||
| The SR-Algorithm TLV is a top-level TLV of the Router Information | The SR-Algorithm TLV is a top-level TLV of the Router Information | |||
| Opaque LSA (defined in [RFC7770]). | Opaque LSA (defined in [RFC7770]). | |||
| The SR-Algorithm TLV is optional. It MUST only be advertised once in | The SR-Algorithm TLV is optional. It SHOULD only be advertised once | |||
| the Router Information Opaque LSA. If the SID/Label Range TLV, as | in the Router Information Opaque LSA. If the SR-Algorithm TLV is not | |||
| defined in Section 3.2, is advertised, then the SR-Algorithm TLV MUST | advertised by the node, such node is considered as not being segment | |||
| also be advertised. If the SR-Algorithm TLV is not advertised by the | routing capable. | |||
| node, such node is considered as not being segment routing capable. | ||||
| An SR Router may use various algorithms when calculating reachability | An SR Router may use various algorithms when calculating reachability | |||
| to OSPF routers or prefixes in an OSPF area. Examples of these | to OSPF routers or prefixes in an OSPF area. Examples of these | |||
| algorithms are metric based Shortest Path First (SPF), various | algorithms are metric based Shortest Path First (SPF), various | |||
| flavors of Constrained SPF, etc. The SR-Algorithm TLV allows a | flavors of Constrained SPF, etc. The SR-Algorithm TLV allows a | |||
| router to advertise the algorithms currently used by the router to | router to advertise the algorithms currently used by the router to | |||
| other routers in an OSPF area. The SR-Algorithm TLV has following | other routers in an OSPF area. The SR-Algorithm TLV has following | |||
| format: | format: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| skipping to change at page 5, line 29 ¶ | skipping to change at page 5, line 21 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Algorithm 1 | Algorithm... | Algorithm n | | | | Algorithm 1 | Algorithm... | Algorithm n | | | |||
| +- -+ | +- -+ | |||
| | | | | | | |||
| + + | + + | |||
| where: | where: | |||
| Type: TBD, suggested value 8 | Type: TBD, suggested value 8 | |||
| Length: Variable | Length: Variable, dependent on number of algorithms advertised. | |||
| Algorithm: Single octet identifying the algorithm. The following | Algorithm: Single octet identifying the algorithm. The following | |||
| values are defined by this document: | values are defined by this document: | |||
| 0: Shortest Path First (SPF) algorithm based on link metric. | 0: Shortest Path First (SPF) algorithm based on link metric. | |||
| This is the standard shortest path algorithm as computed by the | This is the standard shortest path algorithm as computed by the | |||
| OSPF protocol. Consistent with the deployed practice for link- | OSPF protocol. Consistent with the deployed practice for link- | |||
| state protocols, Algorithm 0 permits any node to overwrite the | state protocols, Algorithm 0 permits any node to overwrite the | |||
| SPF path with a different path based on its local policy. If | SPF path with a different path based on its local policy. If | |||
| the SR-Algorithm TLV is advertised, Algorithm 0 MUST be | the SR-Algorithm TLV is advertised, Algorithm 0 MUST be | |||
| skipping to change at page 6, line 14 ¶ | skipping to change at page 6, line 7 ¶ | |||
| Information LSAs that have different flooding scopes, the SR- | Information LSAs that have different flooding scopes, the SR- | |||
| Algorithm TLV in the Router Information LSA with the narrowest | Algorithm TLV in the Router Information LSA with the narrowest | |||
| flooding scope SHOULD be used. If the SR-Algorithm TLV appears in | flooding scope SHOULD be used. If the SR-Algorithm TLV appears in | |||
| multiple Router Information LSAs that have the same flooding scope, | multiple Router Information LSAs that have the same flooding scope, | |||
| the SR-Algorithm TLV in the Router Information LSA with the | the SR-Algorithm TLV in the Router Information LSA with the | |||
| numerically smallest Instance ID SHOULD be used and subsequent | numerically smallest Instance ID SHOULD be used and subsequent | |||
| instances of the SR-Algorithm TLV SHOULD be ignored. | instances of the SR-Algorithm TLV SHOULD be ignored. | |||
| The RI LSA can be advertised at any of the defined opaque flooding | The RI LSA can be advertised at any of the defined opaque flooding | |||
| scopes (link, area, or Autonomous System (AS)). For the purpose of | scopes (link, area, or Autonomous System (AS)). For the purpose of | |||
| SR-Algorithm TLV advertisement, area scope flooding is required. | SR-Algorithm TLV advertisement, area-scoped flooding is REQUIRED. | |||
| 3.2. SID/Label Range TLV | 3.2. SID/Label Range TLV | |||
| Prefix SIDs MAY be advertised in a form of an index as described in | ||||
| Section 5. Such index defines the offset in the SID/Label space | ||||
| advertised by the router. The SID/Label Range TLV is used to | ||||
| advertise such SID/Label space. | ||||
| The SID/Label Range TLV is a top-level TLV of the Router Information | The SID/Label Range TLV is a top-level TLV of the Router Information | |||
| Opaque LSA (defined in [RFC7770]). | Opaque LSA (defined in [RFC7770]). | |||
| The SID/Label Range TLV MAY appear multiple times and has the | The SID/Label Range TLV MAY appear multiple times and has the | |||
| following format: | following format: | |||
| 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 | | | Type | Length | | |||
| skipping to change at page 6, line 40 ¶ | skipping to change at page 6, line 38 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Sub-TLVs (variable) | | | Sub-TLVs (variable) | | |||
| +- -+ | +- -+ | |||
| | | | | | | |||
| + + | + + | |||
| where: | where: | |||
| Type: TBD, suggested value 9 | Type: TBD, suggested value 9 | |||
| Length: Variable | Length: Variable, dependent on Sub-TLVs. | |||
| Range Size: 3-octet SID/label range size (i.e., the number of SIDs | Range Size: 3-octet SID/label range size (i.e., the number of SIDs | |||
| or labels in the range including the first SID/label). It MUST be | or labels in the range including the first SID/label). It MUST be | |||
| greater than 0. | greater than 0. | |||
| Initially, the only supported Sub-TLV is the SID/Label TLV as defined | Initially, the only supported Sub-TLV is the SID/Label Sub-TLV as | |||
| in Section 2.1. The SID/Label advertised in the SID/Label TLV | defined in Section 2.1. The SID/Label Sub-TLV MUST be included in | |||
| represents the first SID/Label in the advertised range. | the SID/Label Range TLV. The SID/Label advertised in the SID/Label | |||
| Sub-TLV represents the first SID/Label in the advertised range. | ||||
| Only a single SID/Label Sub-TLV MAY be advertised in SID/Label Range | ||||
| TLV. If more then one SID/Label Sub-TLVs are present, the SID/Label | ||||
| Range TLV MUST be ignored. | ||||
| Multiple occurrences of the SID/Label Range TLV MAY be advertised, in | Multiple occurrences of the SID/Label Range TLV MAY be advertised, in | |||
| order to advertise multiple ranges. In such case: | order to advertise multiple ranges. In such case: | |||
| o The originating router MUST encode each range into a different | o The originating router MUST encode each range into a different | |||
| SID/Label Range TLV. | SID/Label Range TLV. | |||
| o The originating router decides the order in which the set of SID/ | o The originating router decides the order in which the set of SID/ | |||
| Label Range TLVs are advertised inside the Router Information | Label Range TLVs are advertised inside the Router Information | |||
| Opaque LSA. The originating router MUST ensure the order is the | Opaque LSA. The originating router MUST ensure the order is the | |||
| same after a graceful restart (using checkpointing, non-volatile | same after a graceful restart (using checkpointing, non-volatile | |||
| storage, or any other mechanism) in order to assure the SID/label | storage, or any other mechanism) in order to assure the SID/label | |||
| range and SID index correspondence is preserved across graceful | range and SID index correspondence is preserved across graceful | |||
| restarts. | restarts. | |||
| o The receiving router MUST adhere to the order in which the ranges | o The receiving router MUST adhere to the order in which the ranges | |||
| are advertised when calculating a SID/label from a SID index. | are advertised when calculating a SID/label from a SID index. | |||
| o The originating router MUST NOT advertise overlapping ranges. | ||||
| o When a router receives multiple overlapping ranges, it MUST | ||||
| conform to the procedures defined in | ||||
| [I-D.ietf-spring-conflict-resolution]. | ||||
| The following example illustrates the advertisement of multiple | The following example illustrates the advertisement of multiple | |||
| ranges: | ranges: | |||
| The originating router advertises the following ranges: | The originating router advertises the following ranges: | |||
| Range 1: [100, 199] | ||||
| Range 2: [1000, 1099] | Range 1: Range Size: 100 SID/Label Sub-TLV: 199 | |||
| Range 3: [500, 599] | Range 1: Range Size: 100 SID/Label Sub-TLV: 1000 | |||
| Range 1: Range Size: 100 SID/Label Sub-TLV: 500 | ||||
| The receiving routers concatenate the ranges and build the Segment | The receiving routers concatenate the ranges and build the Segment | |||
| Routing Global Block (SRGB) as follows: | Routing Global Block (SRGB) as follows: | |||
| SRGB = [100, 199] | SRGB = [100, 199] | |||
| [1000, 1099] | [1000, 1099] | |||
| [500, 599] | [500, 599] | |||
| The indexes span multiple ranges: | The indexes span multiple ranges: | |||
| skipping to change at page 7, line 47 ¶ | skipping to change at page 8, line 31 ¶ | |||
| ... | ... | |||
| index 99 means label 199 | index 99 means label 199 | |||
| index 100 means label 1000 | index 100 means label 1000 | |||
| index 199 means label 1099 | index 199 means label 1099 | |||
| ... | ... | |||
| index 200 means label 500 | index 200 means label 500 | |||
| ... | ... | |||
| The RI LSA can be advertised at any of the defined flooding scopes | The RI LSA can be advertised at any of the defined flooding scopes | |||
| (link, area, or autonomous system (AS)). For the purpose of SID/ | (link, area, or autonomous system (AS)). For the purpose of SID/ | |||
| Label Range TLV advertisement, area scope flooding is required. | Label Range TLV advertisement, area-scoped flooding is REQUIRED. | |||
| 3.3. SR Local Block Sub-TLV | 3.3. SR Local Block TLV | |||
| The SR Local Block (SRLB) Sub-TLV contains the range of labels the | The SR Local Block TLV (SRLB TLV) contains the range of labels the | |||
| node has reserved for local SIDs. Local SIDs are used, e.g., for | node has reserved for local SIDs. SIDs from the SRLB MAY be used for | |||
| Adjacency-SIDs, and may also be allocated by components other than | Adjacency-SIDs, but also by components other than the OSPF protocol. | |||
| the OSPF protocol. As an example, an application or a controller may | As an example, an application or a controller may instruct the router | |||
| instruct the router to allocate a specific local SID. Therefore, in | to allocate a specific local SID. Some controllers or applications | |||
| order for such applications or controllers to know what local SIDs | may use the control plane to discover the available set of local SIDs | |||
| are available on the router, it is required that the router | on a particular router. In such cases, the SRLG is advertised in the | |||
| advertises its SRLB. The SRLB Sub-TLV is used for that purpose. | control plane. The requirement to advertise the SRLB is further | |||
| described in [I-D.ietf-spring-segment-routing-mpls]. The SRLB TLV is | ||||
| used to advertise the SRLB. | ||||
| The SR Local Block (SRLB) Sub-TLV is a top-level TLV of the Router | The SRLB TLV is a top-level TLV of the Router Information Opaque LSA | |||
| Information Opaque LSA (defined in [RFC7770]). | (defined in [RFC7770]). | |||
| The SR Local Block Sub-TLV MAY appear multiple times in the Router | The SRLB TLV MAY appear multiple times in the Router Information | |||
| Information Opaque LSA and has the following format: | Opaque LSA and has the following format: | |||
| 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 | | | Type | Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Range Size | Reserved | | | Range Size | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Sub-TLVs (variable) | | | Sub-TLVs (variable) | | |||
| +- -+ | +- -+ | |||
| | | | | | | |||
| + + | + + | |||
| where: | where: | |||
| Type: TBD, suggested value 12 | Type: TBD, suggested value 12 | |||
| Length: Variable | Length: Variable, dependent on Sub-TLVs. | |||
| Range Size: 3-octet SID/label range size (i.e., the number of SIDs | Range Size: 3-octet SID/label range size (i.e., the number of SIDs | |||
| or labels in the range including the first SID/label). It MUST be | or labels in the range including the first SID/label). It MUST be | |||
| greater than 0. | greater than 0. | |||
| Initially, the only supported Sub-TLV is the SID/Label TLV as defined | Initially, the only supported Sub-TLV is the SID/Label Sub-TLV as | |||
| in Section 2.1. The SID/Label advertised in the SID/Label TLV | defined in Section 2.1. The SID/Label Sub-TLV MUST be included in | |||
| the SRLB TLV. The SID/Label advertised in the SID/Label Sub-TLV | ||||
| represents the first SID/Label in the advertised range. | represents the first SID/Label in the advertised range. | |||
| Only a single SID/Label Sub-TLV MAY be advertised in the SRLB TLV. | ||||
| If more then one SID/Label Sub-TLVs are present, the SRLB TLV MUST be | ||||
| ignored. | ||||
| The originating router MUST NOT advertise overlapping ranges. | The originating router MUST NOT advertise overlapping ranges. | |||
| Each time a SID from the SRLB is allocated, it SHOULD also be | Each time a SID from the SRLB is allocated, it SHOULD also be | |||
| reported to all components (e.g., controller or applications) in | reported to all components (e.g., controller or applications) in | |||
| order for these components to have an up-to-date view of the current | order for these components to have an up-to-date view of the current | |||
| SRLB allocation. This is required to avoid collisions between | SRLB allocation. This is required to avoid collisions between | |||
| allocation instructions. | allocation instructions. | |||
| Within the context of OSPF, the reporting of local SIDs is done | Within the context of OSPF, the reporting of local SIDs is done | |||
| through OSPF Sub-TLVs such as the Adjacency-SID (Section 7). | through OSPF Sub-TLVs such as the Adjacency-SID (Section 6). | |||
| However, the reporting of allocated local SIDs may also be done | However, the reporting of allocated local SIDs may also be done | |||
| through other means and protocols which are outside the scope of this | through other means and protocols which are outside the scope of this | |||
| document. | document. | |||
| A router advertising the SRLB TLV may also have other label ranges, | A router advertising the SRLB TLV may also have other label ranges, | |||
| outside of the SRLB, used for its local allocation purposes which are | outside of the SRLB, used for its local allocation purposes which are | |||
| NOT advertised in the SRLB. For example, it is possible that an | NOT advertised in the SRLB TLV. For example, it is possible that an | |||
| Adjacency-SID is allocated using a local label that is not part of | Adjacency-SID is allocated using a local label that is not part of | |||
| the SRLB. | the SRLB. | |||
| The RI LSA can be advertised at any of the defined flooding scopes | The RI LSA can be advertised at any of the defined flooding scopes | |||
| (link, area, or autonomous system (AS)). For the purpose of SR Local | (link, area, or autonomous system (AS)). For the purpose of SRLB TLV | |||
| Block Sub-TLV TLV advertisement, area scope flooding is required. | advertisement, area-scoped flooding is REQUIRED. | |||
| 3.4. SRMS Preference Sub-TLV | 3.4. SRMS Preference TLV | |||
| The Segment Routing Mapping Server (SRMS) Preference sub-TLV is used | The Segment Routing Mapping Server Preference TLV (SRMS Preference | |||
| to advertise a preference associated with the node that acts as an SR | TLV) is used to advertise a preference associated with the node that | |||
| Mapping Server. SRMS preference is defined in | acts as an SR Mapping Server. The role of an SRMS is described in | |||
| [I-D.ietf-spring-conflict-resolution]. | [I-D.ietf-spring-segment-routing-ldp-interop]. SRMS preference is | |||
| defined in [I-D.ietf-spring-conflict-resolution]. | ||||
| The SRMS Preference Sub-TLV is a top-level TLV of the Router | The SRMS Preference TLV is a top-level TLV of the Router Information | |||
| Information Opaque LSA (defined in [RFC7770]). | Opaque LSA (defined in [RFC7770]). | |||
| The SRMS Preference Sub-TLV MAY only be advertised once in the Router | The SRMS Preference TLV MAY only be advertised once in the Router | |||
| Information Opaque LSA and has the following format: | Information Opaque LSA and has the following format: | |||
| 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 | | | Type | Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Preference | Reserved | | | Preference | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| where: | where: | |||
| Type: TBD, suggested value 13 | Type: TBD, suggested value 13 | |||
| Length: 4 octets | Length: 4 octets | |||
| Preference: 1 octet. SRMS preference value from 0 to 255. | Preference: 1 octet. SRMS preference value from 0 to 255. | |||
| When multiple SRMS Preference sub-TLVs are received from a given | When multiple SRMS Preference TLVs are received from a given router, | |||
| router, the receiver SHOULD use the first occurrence of the sub-TLV | the receiver SHOULD use the first occurrence of the TLV in the Router | |||
| in the Router Information LSA. If the SRMS Preference sub-TLV | Information LSA. If the SRMS Preference TLV appears in multiple | |||
| appears in multiple Router Information LSAs that have different | Router Information LSAs that have different flooding scopes, the SRMS | |||
| flooding scopes, the SRLB sub-TLV in the Router Information LSA with | Preference TLV in the Router Information LSA with the narrowest | |||
| the narrowest flooding scope SHOULD be used. If the SRMS Preference | flooding scope SHOULD be used. If the SRMS Preference TLV appears in | |||
| sub-TLV appears in multiple Router Information LSAs that have the | multiple Router Information LSAs that have the same flooding scope, | |||
| same flooding scope, the SRMS Preference sub-TLV in the Router | the SRMS Preference TLV in the Router Information LSA with the | |||
| Information LSA with the numerically smallest Instance ID SHOULD be | numerically smallest Instance ID SHOULD be used and subsequent | |||
| used and subsequent instances of the SRMS Preference sub-TLV SHOULD | instances of the SRMS Preference TLV SHOULD be ignored. | |||
| be ignored. | ||||
| The RI LSA can be advertised at any of the defined flooding scopes | The RI LSA can be advertised at any of the defined flooding scopes | |||
| (link, area, or autonomous system (AS)). For the purpose of the SRMS | (link, area, or autonomous system (AS)). For the purpose of the SRMS | |||
| Preference Sub-TLV advertisement, AS scope flooding is required. If | Preference TLV advertisement, AS-scoped flooding is REQUIRED. This | |||
| the SRMS advertisements from the SRMS server are only used inside the | is because SRMS servers can be located in a different area then | |||
| area to which the SRMS server is attached, area scope flooding may be | consumers of the SRMS advertisements. If the SRMS advertisements | |||
| used. | from the SRMS server are only used inside the SRMS server's area, | |||
| area-scoped flooding may be used. | ||||
| 4. OSPF Extended Prefix Range TLV | 4. OSPF Extended Prefix Range TLV | |||
| In some cases it is useful to advertise attributes for a range of | In some cases it is useful to advertise attributes for a range of | |||
| prefixes. The Segment Routing Mapping Server, which is described in | prefixes. The Segment Routing Mapping Server, which is described in | |||
| [I-D.filsfils-spring-segment-routing-ldp-interop], is an example | [I-D.ietf-spring-segment-routing-ldp-interop], is an example where we | |||
| where we need a single advertisement to advertise SIDs for multiple | need a single advertisement to advertise SIDs for multiple prefixes | |||
| prefixes from a contiguous address range. | from a contiguous address range. | |||
| The OSPF Extended Prefix Range TLV, which is a top level TLV of the | The OSPF Extended Prefix Range TLV, which is a top level TLV of the | |||
| Extended Prefix LSA described in [RFC7684] is defined for this | Extended Prefix LSA described in [RFC7684] is defined for this | |||
| purpose. | purpose. | |||
| Multiple OSPF Extended Prefix Range TLVs MAY be advertised in each | Multiple OSPF Extended Prefix Range TLVs MAY be advertised in each | |||
| OSPF Extended Prefix Opaque LSA, but all prefix ranges included in a | OSPF Extended Prefix Opaque LSA, but all prefix ranges included in a | |||
| single OSPF Extended Prefix Opaque LSA MUST have the same flooding | single OSPF Extended Prefix Opaque LSA MUST have the same flooding | |||
| scope. The OSPF Extended Prefix Range TLV has the following format: | scope. The OSPF Extended Prefix Range TLV has the following format: | |||
| skipping to change at page 11, line 24 ¶ | skipping to change at page 11, line 49 ¶ | |||
| | Address Prefix (variable) | | | Address Prefix (variable) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Sub-TLVs (variable) | | | Sub-TLVs (variable) | | |||
| +- -+ | +- -+ | |||
| | | | | | | |||
| where: | where: | |||
| Type: TBD, suggested value 2. | Type: TBD, suggested value 2. | |||
| Length: Variable | Length: Variable, dependent on Sub-TLVs. | |||
| Prefix length: Length of the prefix | Prefix length: Length of prefix in bits. | |||
| AF: Address family for the prefix. Currently, the only supported | AF: Address family for the prefix. Currently, the only supported | |||
| value is 0 for IPv4 unicast. The inclusion of address family in | value is 0 for IPv4 unicast. The inclusion of address family in | |||
| this TLV allows for future extension. | this TLV allows for future extension. | |||
| Range size: Represents the number of prefixes that are covered by | Range size: Represents the number of prefixes that are covered by | |||
| the advertisement. The Range Size MUST NOT exceed the number of | the advertisement. The Range Size MUST NOT exceed the number of | |||
| prefixes that could be satisfied by the prefix length without | prefixes that could be satisfied by the prefix length without | |||
| including the IPv4 multicast address range (224.0.0.0/3). | including the IPv4 multicast address range (224.0.0.0/3). | |||
| skipping to change at page 12, line 16 ¶ | skipping to change at page 12, line 41 ¶ | |||
| over inter-area advertisements. | over inter-area advertisements. | |||
| An ABR does not consider inter-area Prefix Range | An ABR does not consider inter-area Prefix Range | |||
| advertisements coming from non-backbone areas. | advertisements coming from non-backbone areas. | |||
| An ABR only propagates an inter-area Prefix Range | An ABR only propagates an inter-area Prefix Range | |||
| advertisement from the backbone area to connected non- | advertisement from the backbone area to connected non- | |||
| backbone areas if the advertisement is considered to be the | backbone areas if the advertisement is considered to be the | |||
| best one. | best one. | |||
| Address Prefix: The prefix, encoded as 32-bit value, padded with | Address Prefix: For the address family IPv4 unicast, the prefix | |||
| zero bits as necessary. The prefix represents the first prefix in | itself is encoded as a 32-bit value. The default route is | |||
| the prefix range. | represented by a prefix of length 0. Prefix encoding for other | |||
| address families is beyond the scope of this specification. | ||||
| 5. Prefix SID Sub-TLV | 5. Prefix SID Sub-TLV | |||
| The Prefix SID Sub-TLV is a Sub-TLV of the OSPF Extended Prefix TLV | The Prefix SID Sub-TLV is a Sub-TLV of the OSPF Extended Prefix TLV | |||
| described in [RFC7684] and the OSPF Extended Prefix Range TLV | described in [RFC7684] and the OSPF Extended Prefix Range TLV | |||
| described in Section 4. It MAY appear more than once in the parent | described in Section 4. It MAY appear more than once in the parent | |||
| TLV and has the following format: | TLV and has the following format: | |||
| 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 | |||
| skipping to change at page 12, line 41 ¶ | skipping to change at page 13, line 19 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Flags | Reserved | MT-ID | Algorithm | | | Flags | Reserved | MT-ID | Algorithm | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SID/Index/Label (variable) | | | SID/Index/Label (variable) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| where: | where: | |||
| Type: TBD, suggested value 2. | Type: TBD, suggested value 2. | |||
| Length: Variable | Length: 7 or 8 octets, dependent on the V-flag | |||
| Flags: Single octet field. The following flags are defined: | Flags: Single octet field. The following flags are defined: | |||
| 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
| +--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+ | |||
| | |NP|M |E |V |L | | | | | |NP|M |E |V |L | | | | |||
| +--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+ | |||
| where: | where: | |||
| NP-Flag: No-PHP flag. If set, then the penultimate hop MUST | NP-Flag: No-PHP flag. If set, then the penultimate hop MUST | |||
| NOT pop the Prefix-SID before delivering packets to the node | NOT pop the Prefix-SID before delivering packets to the node | |||
| that advertised the Prefix-SID. | that advertised the Prefix-SID. | |||
| M-Flag: Mapping Server Flag. If set, the SID was advertised by | M-Flag: Mapping Server Flag. If set, the SID was advertised by | |||
| a Segment Routing Mapping Server as described in | a Segment Routing Mapping Server as described in | |||
| [I-D.filsfils-spring-segment-routing-ldp-interop]. | [I-D.ietf-spring-segment-routing-ldp-interop]. | |||
| E-Flag: Explicit-Null Flag. If set, any upstream neighbor of | E-Flag: Explicit-Null Flag. If set, any upstream neighbor of | |||
| the Prefix-SID originator MUST replace the Prefix-SID with the | the Prefix-SID originator MUST replace the Prefix-SID with the | |||
| Explicit-NULL label (0 for IPv4) before forwarding the packet. | Explicit-NULL label (0 for IPv4) before forwarding the packet. | |||
| V-Flag: Value/Index Flag. If set, then the Prefix-SID carries | V-Flag: Value/Index Flag. If set, then the Prefix-SID carries | |||
| an absolute value. If not set, then the Prefix-SID carries an | an absolute value. If not set, then the Prefix-SID carries an | |||
| index. | index. | |||
| L-Flag: Local/Global Flag. If set, then the value/index | L-Flag: Local/Global Flag. If set, then the value/index | |||
| skipping to change at page 13, line 36 ¶ | skipping to change at page 14, line 15 ¶ | |||
| Other bits: Reserved. These MUST be zero when sent and are | Other bits: Reserved. These MUST be zero when sent and are | |||
| ignored when received. | ignored when received. | |||
| MT-ID: Multi-Topology ID (as defined in [RFC4915]). | MT-ID: Multi-Topology ID (as defined in [RFC4915]). | |||
| Algorithm: Single octet identifying the algorithm the Prefix-SID | Algorithm: Single octet identifying the algorithm the Prefix-SID | |||
| is associated with as defined in Section 3.1. | is associated with as defined in Section 3.1. | |||
| A router receiving a Prefix-SID from a remote node and with an | A router receiving a Prefix-SID from a remote node and with an | |||
| algorithm value that such remote node has not advertised in the | algorithm value that such remote node has not advertised in the | |||
| SR-Algorithm sub-TLV (Section 3.1) MUST ignore the Prefix-SID sub- | SR-Algorithm Sub-TLV (Section 3.1) MUST ignore the Prefix-SID Sub- | |||
| TLV. | TLV. | |||
| SID/Index/Label: According to the V and L flags, it contains | SID/Index/Label: According to the V and L flags, it contains | |||
| either: | either: | |||
| A 32-bit index defining the offset in the SID/Label space | A 32-bit index defining the offset in the SID/Label space | |||
| advertised by this router. | advertised by this router. | |||
| A 24-bit label where the 20 rightmost bits are used for | A 24-bit label where the 20 rightmost bits are used for | |||
| encoding the label value. | encoding the label value. | |||
| If multiple Prefix-SIDs are advertised for the same prefix, the | If an OSPF router advertises multiple Prefix-SIDs for the same | |||
| receiving router MUST use the first encoded SID and MAY use | prefix, topology and algorithm, all of them MUST be ignored. | |||
| subsequent SIDs. | ||||
| When propagating Prefix-SIDs between areas, if multiple prefix-SIDs | ||||
| are advertised for a prefix, an implementation SHOULD preserve the | ||||
| original order when advertising prefix-SIDs to other areas. This | ||||
| allows implementations that only support a single Prefix-SID to have | ||||
| a consistent view across areas. | ||||
| When calculating the outgoing label for the prefix, the router MUST | When calculating the outgoing label for the prefix, the router MUST | |||
| take into account the E and P flags advertised by the next-hop router | take into account, as described below, the E, NP and M flags | |||
| if that router advertised the SID for the prefix. This MUST be done | advertised by the next-hop router if that router advertised the SID | |||
| regardless of whether the next-hop router contributes to the best | for the prefix. This MUST be done regardless of whether the next-hop | |||
| path to the prefix. | router contributes to the best path to the prefix. | |||
| The NP-Flag (No-PHP) MUST be set and the E-flag MUST be clear for | The NP-Flag (No-PHP) MUST be set and the E-flag MUST be clear for | |||
| Prefix-SIDs allocated to inter-area prefixes that are originated by | Prefix-SIDs allocated to inter-area prefixes that are originated by | |||
| the ABR based on intra-area or inter-area reachability between areas, | the ABR based on intra-area or inter-area reachability between areas, | |||
| unless the advertised prefix is directly attached to the ABR. | unless the advertised prefix is directly attached to the ABR. | |||
| The NP-Flag (No-PHP) MUST be set and the E-flag MUST be clear for | The NP-Flag (No-PHP) MUST be set and the E-flag MUST be clear for | |||
| Prefix-SIDs allocated to redistributed prefixes, unless the | Prefix-SIDs allocated to redistributed prefixes, unless the | |||
| redistributed prefix is directly attached to the ASBR. | redistributed prefix is directly attached to the ASBR. | |||
| If the NP-Flag is not set, then any upstream neighbor of the Prefix- | If the NP-Flag is not set, then any upstream neighbor of the Prefix- | |||
| SID originator MUST pop the Prefix-SID. This is equivalent to the | SID originator MUST pop the Prefix-SID. This is equivalent to the | |||
| penultimate hop popping mechanism used in the MPLS dataplane. In | penultimate hop popping mechanism used in the MPLS dataplane. If the | |||
| such case, MPLS EXP bits of the Prefix-SID are not preserved for the | NP-flag is not set, then the received E-flag is ignored. | |||
| final destination (the Prefix-SID being removed). If the NP-flag is | ||||
| not set then the received E-flag is ignored. | ||||
| If the NP-flag is set then: | If the NP-flag is set then: | |||
| If the E-flag is not set, then any upstream neighbor of the | If the E-flag is not set, then any upstream neighbor of the | |||
| Prefix-SID originator MUST keep the Prefix-SID on top of the | Prefix-SID originator MUST keep the Prefix-SID on top of the | |||
| stack. This is useful when the originator of the Prefix-SID must | stack. This is useful when the originator of the Prefix-SID must | |||
| stitch the incoming packet into a continuing MPLS LSP to the final | stitch the incoming packet into a continuing MPLS LSP to the final | |||
| destination. This could occur at an Area Border Router (prefix | destination. This could occur at an Area Border Router (prefix | |||
| propagation from one area to another) or at an AS Boundary Router | propagation from one area to another) or at an AS Boundary Router | |||
| (prefix propagation from one domain to another). | (prefix propagation from one domain to another). | |||
| skipping to change at page 15, line 25 ¶ | skipping to change at page 15, line 43 ¶ | |||
| the Extended Prefix TLV with the A-flag set for this prefix as | the Extended Prefix TLV with the A-flag set for this prefix as | |||
| described in section 2.1 of [RFC7684]. | described in section 2.1 of [RFC7684]. | |||
| The Prefix is external type and downstream neighbor is an ASBR, | The Prefix is external type and downstream neighbor is an ASBR, | |||
| which is advertising prefix reachability and is also generating | which is advertising prefix reachability and is also generating | |||
| the Extended Prefix TLV with the A-flag set for this prefix as | the Extended Prefix TLV with the A-flag set for this prefix as | |||
| described in section 2.1 of [RFC7684]. | described in section 2.1 of [RFC7684]. | |||
| When a Prefix-SID is advertised in an Extended Prefix Range TLV, then | When a Prefix-SID is advertised in an Extended Prefix Range TLV, then | |||
| the value advertised in the Prefix SID Sub-TLV is interpreted as a | the value advertised in the Prefix SID Sub-TLV is interpreted as a | |||
| starting SID value. | starting SID/Label value. | |||
| Example 1: If the following router addresses (loopback addresses) | Example 1: If the following router addresses (loopback addresses) | |||
| need to be mapped into the corresponding Prefix SID indexes: | need to be mapped into the corresponding Prefix SID indexes: | |||
| Router-A: 192.0.2.1/32, Prefix-SID: Index 1 | Router-A: 192.0.2.1/32, Prefix-SID: Index 1 | |||
| Router-B: 192.0.2.2/32, Prefix-SID: Index 2 | Router-B: 192.0.2.2/32, Prefix-SID: Index 2 | |||
| Router-C: 192.0.2.3/32, Prefix-SID: Index 3 | Router-C: 192.0.2.3/32, Prefix-SID: Index 3 | |||
| Router-D: 192.0.2.4/32, Prefix-SID: Index 4 | Router-D: 192.0.2.4/32, Prefix-SID: Index 4 | |||
| then the Prefix field in the Extended Prefix Range TLV would be set | then the Prefix field in the Extended Prefix Range TLV would be set | |||
| skipping to change at page 16, line 9 ¶ | skipping to change at page 16, line 25 ¶ | |||
| 192.0.2.8/30, Prefix-SID: Index 53 | 192.0.2.8/30, Prefix-SID: Index 53 | |||
| 192.0.2.12/30, Prefix-SID: Index 54 | 192.0.2.12/30, Prefix-SID: Index 54 | |||
| 192.0.2.16/30, Prefix-SID: Index 55 | 192.0.2.16/30, Prefix-SID: Index 55 | |||
| 192.0.2.20/30, Prefix-SID: Index 56 | 192.0.2.20/30, Prefix-SID: Index 56 | |||
| 192.0.2.24/30, Prefix-SID: Index 57 | 192.0.2.24/30, Prefix-SID: Index 57 | |||
| then the Prefix field in the Extended Prefix Range TLV would be set | then the Prefix field in the Extended Prefix Range TLV would be set | |||
| to 192.0.2.0, Prefix Length would be set to 30, Range Size would be | to 192.0.2.0, Prefix Length would be set to 30, Range Size would be | |||
| 7, and the Index value in the Prefix-SID Sub-TLV would be set to 51. | 7, and the Index value in the Prefix-SID Sub-TLV would be set to 51. | |||
| 6. SID/Label Binding Sub-TLV | 6. Adjacency Segment Identifier (Adj-SID) | |||
| The SID/Label Binding Sub-TLV is used to advertise a SID/Label | ||||
| mapping for a path to the prefix. | ||||
| The SID/Label Binding Sub-TLV MAY be originated by any router in an | ||||
| OSPF domain. The router may advertise a SID/Label binding to a FEC | ||||
| along with at least a single 'nexthop style' anchor. The protocol | ||||
| supports more than one 'nexthop style' anchor to be attached to a | ||||
| SID/Label binding, which results in a simple path description | ||||
| language. Analogous to RSVP, the terminology for this is called an | ||||
| 'Explicit Route Object' (ERO). Since ERO-style path notation allows | ||||
| anchoring SID/label bindings to both link and node IP addresses, any | ||||
| Label Switched Path (LSP) can be described. Additionally, SID/Label | ||||
| Bindings from external protocols can be easily re-advertised. | ||||
| The SID/Label Binding Sub-TLV may be used for advertising SID/Label | ||||
| Bindings and their associated Primary and Backup paths. In a single | ||||
| TLV, a primary ERO Path, backup ERO Path, or both can be advertised. | ||||
| If a router wants to advertise multiple parallel paths, then it can | ||||
| generate several TLVs for the same Prefix/FEC. Each occurrence of a | ||||
| Binding TLV for a given FEC Prefix will add a new path. | ||||
| The SID/Label Binding Sub-TLV is a Sub-TLV of the OSPF Extended | ||||
| Prefix TLV described in [RFC7684] and the OSPF Extended Prefix Range | ||||
| TLV described in Section 4. Multiple SID/Label Binding TLVs can be | ||||
| present in their parent TLV. The SID/Label Binding Sub-TLV has | ||||
| following format: | ||||
| 0 1 2 3 | ||||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Type | Length | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Flags | Reserved | MT-ID | Weight | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Sub-TLVs (variable) | | ||||
| +- -+ | ||||
| | | | ||||
| where: | ||||
| Type: TBD, suggested value 3 | ||||
| Length: Variable | ||||
| Flags: Single octet field containing the following flags: | ||||
| 0 1 2 3 4 5 6 7 | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| |M| | | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| where: | ||||
| M-bit - When the bit is set, the binding represents a mirroring | ||||
| context as defined in | ||||
| [I-D.minto-rsvp-lsp-egress-fast-protection]. | ||||
| Other bits: Reserved. These MUST be zero when sent and are | ||||
| ignored when received. | ||||
| MT-ID: Multi-Topology ID (as defined in [RFC4915]). | ||||
| Weight: 8 bits of weight used for load-balancing purposes. The | ||||
| use of the weight is defined in [I-D.ietf-spring-segment-routing]. | ||||
| The SID/Label Binding Sub-TLV supports the following Sub-TLVs: | ||||
| SID/Label Sub-TLV as described in Section 2.1. This Sub-TLV MUST | ||||
| appear in the SID/Label Binding Sub-TLV and it SHOULD only appear | ||||
| once. If the SID/Label Sub-TLV is not included in the SID/Label | ||||
| Binding Sub-TLV, the SID/Label Binding Sub-TLV MUST be ignored. | ||||
| If the SID/Label Sub-TLV appears in the SID/Label Binding Sub-TLV | ||||
| more than once, instances other than the first SHOULD be ignored | ||||
| and the condition SHOULD be logged for possible action by the | ||||
| network operator. | ||||
| ERO Metric Sub-TLV as defined in Section 6.1. | ||||
| ERO Sub-TLVs as defined in Section 6.2. | ||||
| 6.1. ERO Metric Sub-TLV | ||||
| The ERO Metric Sub-TLV is a Sub-TLV of the SID/Label Binding TLV. | ||||
| The ERO Metric Sub-TLV advertises the cost of an ERO path. It is | ||||
| used to compare the cost of a given source/destination path. ERO | ||||
| Metric Sub-TLV is an option sub-TLV. The cost of the ERO Metric Sub- | ||||
| TLV SHOULD be set to the cumulative IGP or TE path cost of the | ||||
| advertised ERO. Since manipulation of the Metric field may attract | ||||
| or repel traffic to and from the advertised segment, it MAY be | ||||
| manually overridden. | ||||
| 0 1 2 3 | ||||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Type | Length | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Metric (4 octets) | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| ERO Metric Sub-TLV format | ||||
| where: | ||||
| Type: TBD, suggested value 8 | ||||
| Length: Always 4 | ||||
| Metric: A 4-octet metric representing the aggregate IGP or TE path | ||||
| cost. | ||||
| 6.2. ERO Sub-TLVs | ||||
| All ERO information represents an ordered set which describes the | ||||
| segments of a path. The first ERO Sub-TLV describes the first | ||||
| segment of a path. Similarly, the last ERO Sub-TLV describes the | ||||
| segment closest to the egress point. If a router extends or stitches | ||||
| a path, it MUST prepend the new segment's path information to the ERO | ||||
| list. This applies equally to advertised backup EROs. | ||||
| All ERO sub-TLVs are sub-TLVs of the SID/Label Binding TLV. | ||||
| 6.2.1. IPv4 ERO Sub-TLV | ||||
| The IPv4 ERO Sub-TLV is a Sub-TLV of the SID/Label Binding Sub-TLV. | ||||
| The IPv4 ERO Sub-TLV describes a path segment using IPv4 Address | ||||
| style encoding. Its semantics have been borrowed from [RFC3209]. | ||||
| 0 1 2 3 | ||||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Type | Length | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Flags | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | IPv4 Address (4 octets) | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| IPv4 ERO Sub-TLV format | ||||
| where: | ||||
| Type: TBD, suggested value 4 | ||||
| Length: 8 octets | ||||
| Flags: Single octet field containing the following flags: | ||||
| 0 1 2 3 4 5 6 7 | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| |L| | | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| where: | ||||
| L-bit - If the L-bit is set, then the segment path is | ||||
| designated as 'loose'. Otherwise, the segment path is | ||||
| designated as 'strict'. The terms 'loose' and 'strict' are | ||||
| defined for RSVP subobjects in [RFC3209]. | ||||
| Other bits: Reserved. These MUST be zero when sent and are | ||||
| ignored when received. | ||||
| IPv4 Address - The address of the explicit route hop. | ||||
| 6.2.2. Unnumbered Interface ID ERO Sub-TLV | ||||
| The Unnumbered Interface ID ERO Sub-TLV is a Sub-TLV of the SID/Label | ||||
| Binding Sub-TLV. | ||||
| The appearance and semantics of the 'Unnumbered Interface ID' have | ||||
| been borrowed from [RFC3477]. | ||||
| The Unnumbered Interface-ID ERO Sub-TLV describes a path segment that | ||||
| includes an unnumbered interface. Unnumbered interfaces are | ||||
| referenced using the interface index. Interface indices are assigned | ||||
| local to the router and therefore are not unique within a domain. | ||||
| All elements in an ERO path need to be unique within a domain and | ||||
| hence need to be disambiguated using a domain-unique Router-ID. | ||||
| 0 1 2 3 | ||||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Type | Length | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Flags | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Router ID | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Interface ID | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| where: | ||||
| Unnumbered Interface ID ERO Sub-TLV format | ||||
| Type: TBD, suggested value 5 | ||||
| Length: 12 octets | ||||
| Flags: Single octet field containing the following flags: | ||||
| 0 1 2 3 4 5 6 7 | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| |L| | | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| where: | ||||
| L-bit - If the L-bit is set, then the segment path is | ||||
| designated as 'loose'. Otherwise, the segment path is | ||||
| designated as 'strict'. The terms 'loose' and 'strict' are | ||||
| defined for RSVP subobjects in [RFC3209] | ||||
| Other bits: Reserved. These MUST be zero when sent and are | ||||
| ignored when received. | ||||
| Router ID: Router ID of the next-hop. | ||||
| Interface ID: The identifier assigned to the link by the router | ||||
| specified by the Router ID. | ||||
| 6.2.3. IPv4 Backup ERO Sub-TLV | ||||
| IPv4 Prefix Backup ERO Sub-TLV is a Sub-TLV of the SID/Label Binding | ||||
| Sub-TLV. | ||||
| The IPv4 Backup ERO Sub-TLV describes a path segment using IPv4 | ||||
| Address style of encoding. Its semantics have been borrowed from | ||||
| [RFC3209]. | ||||
| 0 1 2 3 | ||||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Type | Length | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Flags | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | IPv4 Address (4 octets) | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| IPv4 Backup ERO Sub-TLV format | ||||
| where: | ||||
| Type: TBD, suggested value 6 | ||||
| Length: 8 octets | ||||
| Flags: Single octet field containing the following flags: | ||||
| 0 1 2 3 4 5 6 7 | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| |L| | | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| where: | ||||
| L-bit - If the L-bit is set, then the segment path is | ||||
| designated as 'loose'. Otherwise, the segment path is | ||||
| designated as 'strict'. The terms 'loose' and 'strict' are | ||||
| defined for RSVP subobjects in [RFC3209] | ||||
| Other bits: Reserved. These MUST be zero when sent and are | ||||
| ignored when received. | ||||
| IPv4 Address - The address of the explicit route hop. | ||||
| 6.2.4. Unnumbered Interface ID Backup ERO Sub-TLV | ||||
| The Unnumbered Interface ID Backup ERO Sub-TLV is a Sub-TLV of the | ||||
| SID/Label Binding Sub-TLV. | ||||
| The appearance and semantics of the 'Unnumbered Interface ID' have | ||||
| been borrowed from [RFC3477]. | ||||
| The Unnumbered Interface-ID Backup ERO Sub-TLV describes a path | ||||
| segment that includes an unnumbered interface. Unnumbered interfaces | ||||
| are referenced using the interface index. Interface indices are | ||||
| assigned local to the router and are therefore not unique within a | ||||
| domain. All elements in an ERO path need to be unique within a | ||||
| domain and hence need to be disambiguated with specification of the | ||||
| domain-unique Router-ID. | ||||
| 0 1 2 3 | ||||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Type | Length | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Flags | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Router ID | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Interface ID | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Unnumbered Interface ID Backup ERO Sub-TLV format | ||||
| where: | ||||
| Type: TBD, suggested value 7 | ||||
| Length: 12 octets | ||||
| Flags: Single octet field containing the following flags: | ||||
| 0 1 2 3 4 5 6 7 | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| |L| | | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| where: | ||||
| L-bit - If the L-bit is set, then the segment path is | ||||
| designated as 'loose'. Otherwise, the segment path is | ||||
| designated as 'strict'. | ||||
| Other bits: Reserved. These MUST be zero when sent and are | ||||
| ignored when received. | ||||
| Router ID: Router ID of the next-hop. | ||||
| Interface ID: The identifier assigned to the link by the router | ||||
| specified by the Router ID. | ||||
| 7. Adjacency Segment Identifier (Adj-SID) | ||||
| An Adjacency Segment Identifier (Adj-SID) represents a router | An Adjacency Segment Identifier (Adj-SID) represents a router | |||
| adjacency in Segment Routing. | adjacency in Segment Routing. | |||
| 7.1. Adj-SID Sub-TLV | 6.1. Adj-SID Sub-TLV | |||
| Adj-SID is an optional Sub-TLV of the Extended Link TLV defined in | Adj-SID is an optional Sub-TLV of the Extended Link TLV defined in | |||
| [RFC7684]. It MAY appear multiple times in the Extended Link TLV. | [RFC7684]. It MAY appear multiple times in the Extended Link TLV. | |||
| Examples where more than one Adj-SID may be used per neighbor are | The Adj-SID Sub-TLV has the following format: | |||
| described in section 4 of | ||||
| [I-D.filsfils-spring-segment-routing-use-cases]. The Adj-SID Sub-TLV | ||||
| has the following format: | ||||
| 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 | | | Type | Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Flags | Reserved | MT-ID | Weight | | | Flags | Reserved | MT-ID | Weight | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SID/Label/Index (variable) | | | SID/Label/Index (variable) | | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| where: | where: | |||
| Type: TBD, suggested value 2. | Type: TBD, suggested value 2. | |||
| Length: Variable. | Length: 7 or 8 octets, dependent on the V flag. | |||
| Flags: Single octet field containing the following flags: | Flags: Single octet field containing the following flags: | |||
| 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| |B|V|L|G|P| | | |B|V|L|G|P| | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| where: | where: | |||
| skipping to change at page 25, line 4 ¶ | skipping to change at page 18, line 9 ¶ | |||
| A 24-bit label where the 20 rightmost bits are used for | A 24-bit label where the 20 rightmost bits are used for | |||
| encoding the label value. | encoding the label value. | |||
| An SR capable router MAY allocate an Adj-SID for each of its | An SR capable router MAY allocate an Adj-SID for each of its | |||
| adjacencies and set the B-Flag when the adjacency is eligible for | adjacencies and set the B-Flag when the adjacency is eligible for | |||
| protection by an FRR mechanism (IP or MPLS) as described in section | protection by an FRR mechanism (IP or MPLS) as described in section | |||
| 3.5 of [I-D.ietf-spring-segment-routing]. | 3.5 of [I-D.ietf-spring-segment-routing]. | |||
| An SR capable router MAY allocate more than one Adj-SID to an | An SR capable router MAY allocate more than one Adj-SID to an | |||
| adjacency | adjacency | |||
| An SR capable router MAY allocate the same Adj-SID to different | An SR capable router MAY allocate the same Adj-SID to different | |||
| adjacencies | adjacencies | |||
| When the P-flag is not set, the Adj-SID MAY be persistent. When the | When the P-flag is not set, the Adj-SID MAY be persistent. When the | |||
| P-flag is set, the Adj-SID MUST be persistent. | P-flag is set, the Adj-SID MUST be persistent. | |||
| 7.2. LAN Adj-SID Sub-TLV | 6.2. LAN Adj-SID Sub-TLV | |||
| LAN Adj-SID is an optional Sub-TLV of the Extended Link TLV defined | LAN Adj-SID is an optional Sub-TLV of the Extended Link TLV defined | |||
| in [RFC7684]. It MAY appear multiple times in the Extended-Link TLV. | in [RFC7684]. It MAY appear multiple times in the Extended-Link TLV. | |||
| It is used to advertise a SID/Label for an adjacency to a non-DR | It is used to advertise a SID/Label for an adjacency to a non-DR | |||
| router on a broadcast, NBMA, or hybrid [RFC6845] network. | router on a broadcast, NBMA, or hybrid [RFC6845] network. | |||
| 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 | | | Type | Length | | |||
| skipping to change at page 25, line 33 ¶ | skipping to change at page 18, line 39 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Neighbor ID | | | Neighbor ID | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SID/Label/Index (variable) | | | SID/Label/Index (variable) | | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| where: | where: | |||
| Type: TBD, suggested value 3. | Type: TBD, suggested value 3. | |||
| Length: Variable. | Length: 11 or 12 octets, dependent on V-flag. | |||
| Flags: Single octet field containing the following flags: | ||||
| 0 1 2 3 4 5 6 7 | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| |B|V|L|G|P| | | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| where: | ||||
| B-Flag: Backup-flag. If set, the LAN-Adj-SID refers to an | ||||
| adjacency that is eligible for protection (e.g.: using IPFRR or | ||||
| MPLS-FRR) as described in section 3.5 of | ||||
| [I-D.ietf-spring-segment-routing]. | ||||
| The V-Flag: Value/Index Flag. If set, then the Prefix-SID | ||||
| carries an absolute value. If not set, then the Prefix-SID | ||||
| carries an index. | ||||
| The L-Flag: Local/Global Flag. If set, then the value/index | ||||
| carried by the Prefix-SID has local significance. If not set, | ||||
| then the value/index carried by this Sub-TLV has global | ||||
| significance. | ||||
| The G-Flag: Group Flag. When set, the G-Flag indicates that | ||||
| the LAN-Adj-SID refers to a group of adjacencies (and therefore | ||||
| MAY be assigned to other adjacencies as well). | ||||
| P-Flag. Persistent flag. When set, the P-Flag indicates that | ||||
| the Adj-SID is persistently allocated, i.e., the Adj-SID value | ||||
| remains consistent across router restart and/or interface flap. | ||||
| Other bits: Reserved. These MUST be zero when sent and are | Flags: same as in Section 6.1 | |||
| ignored when received. | ||||
| MT-ID: Multi-Topology ID (as defined in [RFC4915]. | MT-ID: Multi-Topology ID (as defined in [RFC4915]. | |||
| Weight: Weight used for load-balancing purposes. The use of the | Weight: Weight used for load-balancing purposes. The use of the | |||
| weight is defined in [I-D.ietf-spring-segment-routing]. | weight is defined in [I-D.ietf-spring-segment-routing]. | |||
| Neighbor ID: The Router ID of the neighbor for which the LAN-Adj- | Neighbor ID: The Router ID of the neighbor for which the LAN-Adj- | |||
| SID is advertised. | SID is advertised. | |||
| SID/Index/Label: According to the V and L flags, it contains | SID/Index/Label: According to the V and L flags, it contains | |||
| skipping to change at page 26, line 41 ¶ | skipping to change at page 19, line 17 ¶ | |||
| A 32-bit index defining the offset in the SID/Label space | A 32-bit index defining the offset in the SID/Label space | |||
| advertised by this router. | advertised by this router. | |||
| A 24-bit label where the 20 rightmost bits are used for | A 24-bit label where the 20 rightmost bits are used for | |||
| encoding the label value. | encoding the label value. | |||
| When the P-flag is not set, the Adj-SID MAY be persistent. When | When the P-flag is not set, the Adj-SID MAY be persistent. When | |||
| the P-flag is set, the Adj-SID MUST be persistent. | the P-flag is set, the Adj-SID MUST be persistent. | |||
| 8. Elements of Procedure | 7. Elements of Procedure | |||
| 8.1. Intra-area Segment routing in OSPFv2 | 7.1. Intra-area Segment routing in OSPFv2 | |||
| An OSPFv2 router that supports segment routing MAY advertise Prefix- | An OSPFv2 router that supports segment routing MAY advertise Prefix- | |||
| SIDs for any prefix to which it is advertising reachability (e.g., a | SIDs for any prefix to which it is advertising reachability (e.g., a | |||
| loopback IP address as described in Section 5). | loopback IP address as described in Section 5). | |||
| If multiple routers advertise a Prefix-SID for the same prefix, then | ||||
| the Prefix-SID MUST be the same. This is required in order to allow | ||||
| traffic load-balancing when multiple equal cost paths to the | ||||
| destination exist in the OSPFv2 routing domain. | ||||
| A Prefix-SID can also be advertised by the SR Mapping Servers (as | A Prefix-SID can also be advertised by the SR Mapping Servers (as | |||
| described in [I-D.filsfils-spring-segment-routing-ldp-interop]). A | described in [I-D.ietf-spring-segment-routing-ldp-interop]). A | |||
| Mapping Server advertises Prefix-SIDs for remote prefixes that exist | Mapping Server advertises Prefix-SIDs for remote prefixes that exist | |||
| in the OSPFv2 routing domain. Multiple Mapping Servers can advertise | in the OSPFv2 routing domain. Multiple Mapping Servers can advertise | |||
| Prefix-SIDs for the same prefix, in which case the same Prefix-SID | Prefix-SIDs for the same prefix, in which case the same Prefix-SID | |||
| MUST be advertised by all of them. The flooding scope of the OSPF | MUST be advertised by all of them. The flooding scope of the OSPF | |||
| Extended Prefix Opaque LSA that is generated by the SR Mapping Server | Extended Prefix Opaque LSA that is generated by the SR Mapping Server | |||
| could be either area scoped or AS scoped and is determined based on | could be either area-scoped or AS-scoped and is determined based on | |||
| the configuration of the SR Mapping Server. | the configuration of the SR Mapping Server. | |||
| An SR Mapping Server MUST use the OSPF Extended Prefix Range TLV when | An SR Mapping Server MUST use the OSPF Extended Prefix Range TLV when | |||
| advertising SIDs for prefixes. Prefixes of different route-types can | advertising SIDs for prefixes. Prefixes of different route-types can | |||
| be combined in a single OSPF Extended Prefix Range TLV advertised by | be combined in a single OSPF Extended Prefix Range TLV advertised by | |||
| an SR Mapping Server. | an SR Mapping Server. Because the OSPF Extended Prefix Range TLV | |||
| doesn't include a Route-Type field, as in the OSPF Extended Prefix | ||||
| TLV, it is possible to include adjacent prefixes from different | ||||
| Route-Types in the OSPF Extended Prefix Range TLV. | ||||
| Area-scoped OSPF Extended Prefix Range TLV are propagated between | Area-scoped OSPF Extended Prefix Range TLVs are propagated between | |||
| areas. Similar to propagation of prefixes between areas, an ABR only | areas. Similar to propagation of prefixes between areas, an ABR only | |||
| propagates the OSPF Extended Prefix Range TLV that it considers to be | propagates the OSPF Extended Prefix Range TLV that it considers to be | |||
| the best from the set it received. The rules used to pick the best | the best from the set it received. The rules used to pick the best | |||
| OSPF Extended Prefix Range TLV are described in Section 4. | OSPF Extended Prefix Range TLV are described in Section 4. | |||
| When propagating an OSPF Extended Prefix Range TLV between areas, | When propagating an OSPF Extended Prefix Range TLV between areas, | |||
| ABRs MUST set the IA-Flag, that is used to prevent redundant flooding | ABRs MUST set the IA-Flag, that is used to prevent redundant flooding | |||
| of the OSPF Extended Prefix Range TLV between areas as described in | of the OSPF Extended Prefix Range TLV between areas as described in | |||
| Section 4. | Section 4. | |||
| 8.2. Inter-area Segment routing in OSPFv2 | 7.2. Inter-area Segment routing in OSPFv2 | |||
| In order to support SR in a multi-area environment, OSPFv2 must | In order to support SR in a multi-area environment, OSPFv2 must | |||
| propagate Prefix-SID information between areas. The following | propagate Prefix-SID information between areas. The following | |||
| procedure is used to propagate Prefix SIDs between areas. | procedure is used to propagate Prefix SIDs between areas. | |||
| When an OSPF ABR advertises a Type-3 Summary LSA from an intra-area | When an OSPF ABR advertises a Type-3 Summary LSA from an intra-area | |||
| prefix to all its connected areas, it will also originate an Extended | prefix to all its connected areas, it will also originate an Extended | |||
| Prefix Opaque LSA, as described in [RFC7684]. The flooding scope of | Prefix Opaque LSA, as described in [RFC7684]. The flooding scope of | |||
| the Extended Prefix Opaque LSA type will be set to area-scope. The | the Extended Prefix Opaque LSA type will be set to area-local scope. | |||
| route-type in the OSPF Extended Prefix TLV is set to inter-area. The | The route-type in the OSPF Extended Prefix TLV is set to inter-area. | |||
| Prefix-SID Sub-TLV will be included in this LSA and the Prefix-SID | The Prefix-SID Sub-TLV will be included in this LSA and the Prefix- | |||
| value will be set as follows: | SID value will be set as follows: | |||
| The ABR will look at its best path to the prefix in the source | The ABR will look at its best path to the prefix in the source | |||
| area and find the advertising router associated with the best path | area and find the advertising router associated with the best path | |||
| to that prefix. | to that prefix. | |||
| The ABR will then determine if such router advertised a Prefix-SID | The ABR will then determine if such router advertised a Prefix-SID | |||
| for the prefix and use it when advertising the Prefix-SID to other | for the prefix and use it when advertising the Prefix-SID to other | |||
| connected areas. | connected areas. | |||
| If no Prefix-SID was advertised for the prefix in the source area | If no Prefix-SID was advertised for the prefix in the source area | |||
| by the router that contributes to the best path to the prefix, the | by the router that contributes to the best path to the prefix, the | |||
| originating ABR will use the Prefix-SID advertised by any other | originating ABR will use the Prefix-SID advertised by any other | |||
| router when propagating the Prefix-SID for the prefix to other | router when propagating the Prefix-SID for the prefix to other | |||
| areas. | areas. | |||
| When an OSPF ABR advertises Type-3 Summary LSAs from an inter-area | When an OSPF ABR advertises Type-3 Summary LSAs from an inter-area | |||
| route to all its connected areas, it will also originate an Extended | route to all its connected areas, it will also originate an Extended | |||
| Prefix Opaque LSA, as described in [RFC7684]. The flooding scope of | Prefix Opaque LSA, as described in [RFC7684]. The flooding scope of | |||
| the Extended Prefix Opaque LSA type will be set to area-scope. The | the Extended Prefix Opaque LSA type will be set to area-local scope. | |||
| route-type in OSPF Extended Prefix TLV is set to inter-area. The | The route-type in OSPF Extended Prefix TLV is set to inter-area. The | |||
| Prefix-SID Sub-TLV will be included in this LSA and the Prefix-SID | Prefix-SID Sub-TLV will be included in this LSA and the Prefix-SID | |||
| will be set as follows: | will be set as follows: | |||
| The ABR will look at its best path to the prefix in the backbone | The ABR will look at its best path to the prefix in the backbone | |||
| area and find the advertising router associated with the best path | area and find the advertising router associated with the best path | |||
| to that prefix. | to that prefix. | |||
| The ABR will then determine if such router advertised a Prefix-SID | The ABR will then determine if such router advertised a Prefix-SID | |||
| for the prefix and use it when advertising the Prefix-SID to other | for the prefix and use it when advertising the Prefix-SID to other | |||
| connected areas. | connected areas. | |||
| If no Prefix-SID was advertised for the prefix in the backbone | If no Prefix-SID was advertised for the prefix in the backbone | |||
| area by the ABR that contributes to the best path to the prefix, | area by the ABR that contributes to the best path to the prefix, | |||
| the originating ABR will use the Prefix-SID advertised by any | the originating ABR will use the Prefix-SID advertised by any | |||
| other router when propagating the Prefix-SID for the prefix to | other router when propagating the Prefix-SID for the prefix to | |||
| other areas. | other areas. | |||
| 8.3. Segment Routing for External Prefixes | 7.3. Segment Routing for External Prefixes | |||
| Type-5 LSAs are flooded domain wide. When an ASBR, which supports | Type-5 LSAs are flooded domain wide. When an ASBR, which supports | |||
| SR, generates Type-5 LSAs, it should also originate Extended Prefix | SR, generates Type-5 LSAs, it should also originate Extended Prefix | |||
| Opaque LSAs, as described in [RFC7684]. The flooding scope of the | Opaque LSAs, as described in [RFC7684]. The flooding scope of the | |||
| Extended Prefix Opaque LSA type is set to AS-scope. The route-type | Extended Prefix Opaque LSA type is set to AS-wide scope. The route- | |||
| in the OSPF Extended Prefix TLV is set to external. The Prefix-SID | type in the OSPF Extended Prefix TLV is set to external. The Prefix- | |||
| Sub-TLV is included in this LSA and the Prefix-SID value will be set | SID Sub-TLV is included in this LSA and the Prefix-SID value will be | |||
| to the SID that has been reserved for that prefix. | set to the SID that has been reserved for that prefix. | |||
| When an NSSA ABR translates Type-7 LSAs into Type-5 LSAs, it should | When an NSSA ABR translates Type-7 LSAs into Type-5 LSAs, it should | |||
| also advertise the Prefix-SID for the prefix. The NSSA ABR | also advertise the Prefix-SID for the prefix. The NSSA ABR | |||
| determines its best path to the prefix advertised in the translated | determines its best path to the prefix advertised in the translated | |||
| Type-7 LSA and finds the advertising router associated with that | Type-7 LSA and finds the advertising router associated with that | |||
| path. If the advertising router has advertised a Prefix-SID for the | path. If the advertising router has advertised a Prefix-SID for the | |||
| prefix, then the NSSA ABR uses it when advertising the Prefix-SID for | prefix, then the NSSA ABR uses it when advertising the Prefix-SID for | |||
| the Type-5 prefix. Otherwise, the Prefix-SID advertised by any other | the Type-5 prefix. Otherwise, the Prefix-SID advertised by any other | |||
| router will be used. | router will be used. | |||
| 8.4. Advertisement of Adj-SID | 7.4. Advertisement of Adj-SID | |||
| The Adjacency Segment Routing Identifier (Adj-SID) is advertised | The Adjacency Segment Routing Identifier (Adj-SID) is advertised | |||
| using the Adj-SID Sub-TLV as described in Section 7. | using the Adj-SID Sub-TLV as described in Section 6. | |||
| 8.4.1. Advertisement of Adj-SID on Point-to-Point Links | 7.4.1. Advertisement of Adj-SID on Point-to-Point Links | |||
| An Adj-SID MAY be advertised for any adjacency on a P2P link that is | An Adj-SID MAY be advertised for any adjacency on a P2P link that is | |||
| in neighbor state 2-Way or higher. If the adjacency on a P2P link | in neighbor state 2-Way or higher. If the adjacency on a P2P link | |||
| transitions from the FULL state, then the Adj-SID for that adjacency | transitions from the FULL state, then the Adj-SID for that adjacency | |||
| MAY be removed from the area. If the adjacency transitions to a | MAY be removed from the area. If the adjacency transitions to a | |||
| state lower then 2-Way, then the Adj-SID advertisement MUST be | state lower then 2-Way, then the Adj-SID advertisement MUST be | |||
| withdrawn from the area. | withdrawn from the area. | |||
| 8.4.2. Adjacency SID on Broadcast or NBMA Interfaces | 7.4.2. Adjacency SID on Broadcast or NBMA Interfaces | |||
| Broadcast, NBMA, or hybrid [RFC6845] networks in OSPF are represented | Broadcast, NBMA, or hybrid [RFC6845] networks in OSPF are represented | |||
| by a star topology where the Designated Router (DR) is the central | by a star topology where the Designated Router (DR) is the central | |||
| point to which all other routers on the broadcast, NBMA, or hybrid | point to which all other routers on the broadcast, NBMA, or hybrid | |||
| network connect. As a result, routers on the broadcast, NBMA, or | network connect. As a result, routers on the broadcast, NBMA, or | |||
| hybrid network advertise only their adjacency to the DR. Routers | hybrid network advertise only their adjacency to the DR. Routers | |||
| that do not act as DR do not form or advertise adjacencies with each | that do not act as DR do not form or advertise adjacencies with each | |||
| other. They do, however, maintain 2-Way adjacency state with each | other. They do, however, maintain 2-Way adjacency state with each | |||
| other and are directly reachable. | other and are directly reachable. | |||
| When Segment Routing is used, each router on the broadcast, NBMA, or | When Segment Routing is used, each router on the broadcast, NBMA, or | |||
| hybrid network MAY advertise the Adj-SID for its adjacency to the DR | hybrid network MAY advertise the Adj-SID for its adjacency to the DR | |||
| using the Adj-SID Sub-TLV as described in Section 7.1. | using the Adj-SID Sub-TLV as described in Section 6.1. | |||
| SR capable routers MAY also advertise a LAN-Adj-SID for other | SR capable routers MAY also advertise a LAN-Adj-SID for other | |||
| neighbors (e.g., BDR, DR-OTHER) on the broadcast, NBMA, or hybrid | neighbors (e.g., BDR, DR-OTHER) on the broadcast, NBMA, or hybrid | |||
| network using the LAN-ADJ-SID Sub-TLV as described in Section 7.2. | network using the LAN-ADJ-SID Sub-TLV as described in Section 6.2. | |||
| 9. IANA Considerations | 8. IANA Considerations | |||
| This specification updates several existing OSPF registries. | This specification updates several existing OSPF registries. | |||
| 9.1. OSPF OSPF Router Information (RI) TLVs Registry | 8.1. OSPF OSPF Router Information (RI) TLVs Registry | |||
| o 8 (IANA Preallocated) - SR-Algorithm TLV | o 8 (IANA Preallocated) - SR-Algorithm TLV | |||
| o 9 (IANA Preallocated) - SID/Label Range TLV | o 9 (IANA Preallocated) - SID/Label Range TLV | |||
| o 12 - SR Local Block Sub-TLV | o 12 - SR Local Block TLV | |||
| o 13 - SRMS Preference Sub-TLV | o 13 - SRMS Preference TLV | |||
| 9.2. OSPF Extended Prefix LSA TLV Registry | 8.2. OSPF Extended Prefix LSA TLV Registry | |||
| Following values are allocated: | Following values are allocated: | |||
| o 2 - OSPF Extended Prefix Range TLV | o 2 - OSPF Extended Prefix Range TLV | |||
| 9.3. OSPF Extended Prefix LSA Sub-TLV Registry | 8.3. OSPF Extended Prefix LSA Sub-TLV Registry | |||
| Following values are allocated: | Following values are allocated: | |||
| o 1 - SID/Label Sub-TLV | o 1 - SID/Label Sub-TLV | |||
| o 2 - Prefix SID Sub-TLV | o 2 - Prefix SID Sub-TLV | |||
| o 3 - SID/Label Binding Sub-TLV | 8.4. OSPF Extended Link LSA Sub-TLV Registry | |||
| o 4 - IPv4 ERO Sub-TLV | ||||
| o 5 - Unnumbered Interface ID ERO Sub-TLV | ||||
| o 6 - IPv4 Backup ERO Sub-TLV | ||||
| o 7 - Unnumbered Interface ID Backup ERO Sub-TLV | ||||
| o 8 - ERO Metric Sub-TLV | ||||
| 9.4. OSPF Extended Link LSA Sub-TLV Registry | ||||
| Following initial values are allocated: | Following initial values are allocated: | |||
| o 1 - SID/Label Sub-TLV | o 1 - SID/Label Sub-TLV | |||
| o 2 - Adj-SID Sub-TLV | o 2 - Adj-SID Sub-TLV | |||
| o 3 - LAN Adj-SID/Label Sub-TLV | o 3 - LAN Adj-SID/Label Sub-TLV | |||
| 10. Implementation Status | 9. Implementation Status | |||
| An implementation survey with seven questions related to the | An implementation survey with seven questions related to the | |||
| implementer's support of OSPFv2 Segment Routing was sent to the OSPF | implementer's support of OSPFv2 Segment Routing was sent to the OSPF | |||
| WG list and several known implementers. This section contains | WG list and several known implementers. This section contains | |||
| responses from three implementers who completed the survey. No | responses from three implementers who completed the survey. No | |||
| external means were used to verify the accuracy of the information | external means were used to verify the accuracy of the information | |||
| submitted by the respondents. The respondents are considered experts | submitted by the respondents. The respondents are considered experts | |||
| on the products they reported on. Additionally, responses were | on the products they reported on. Additionally, responses were | |||
| omitted from implementers who indicated that they have not | omitted from implementers who indicated that they have not | |||
| implemented the function yet. | implemented the function yet. | |||
| This section will be removed before publication as an RFC. | ||||
| Responses from Nokia (former Alcatel-Lucent): | Responses from Nokia (former Alcatel-Lucent): | |||
| Link to a web page describing the implementation: | Link to a web page describing the implementation: | |||
| https://infoproducts.alcatel-lucent.com/cgi-bin/dbaccessfilename.cgi/ | https://infoproducts.alcatel-lucent.com/cgi-bin/dbaccessfilename.cgi/ | |||
| 3HE10799AAAATQZZA01_V1_7450%20ESS%207750%20SR%20and%207950%20XRS%20Un | 3HE10799AAAATQZZA01_V1_7450%20ESS%207750%20SR%20and%207950%20XRS%20Un | |||
| icast%20Routing%20Protocols%20Guide%20R14.0.R1.pdf | icast%20Routing%20Protocols%20Guide%20R14.0.R1.pdf | |||
| The implementation's level of maturity: Production. | The implementation's level of maturity: Production. | |||
| Coverage: We have implemented all sections and have support for the | Coverage: We have implemented all sections and have support for the | |||
| skipping to change at page 31, line 32 ¶ | skipping to change at page 23, line 46 ¶ | |||
| Contact information: wim.henderickx@nokia.com | Contact information: wim.henderickx@nokia.com | |||
| Responses from Cisco Systems: | Responses from Cisco Systems: | |||
| Link to a web page describing the implementation: | Link to a web page describing the implementation: | |||
| http://www.segment-routing.net/home/tutorial | http://www.segment-routing.net/home/tutorial | |||
| The implementation's level of maturity: Production. | The implementation's level of maturity: Production. | |||
| Coverage: All sections, except the section 6 (SID/Label Binding Sub- | Coverage: All sections have been implemented according to the latest | |||
| TLV) have been implemented according to the latest draft. | draft. | |||
| Licensing: Part of a commercial software package. | Licensing: Part of a commercial software package. | |||
| Implementation experience: Many aspects of the draft are result of | Implementation experience: Many aspects of the draft are result of | |||
| the actual implementation experience, as the draft evolved from its | the actual implementation experience, as the draft evolved from its | |||
| initial version to the current one. Interoperability testing with | initial version to the current one. Interoperability testing with | |||
| Alcatel-Lucent was performed, which confirmed the draft's ability to | Alcatel-Lucent was performed, which confirmed the draft's ability to | |||
| serve as a reference for the implementors. | serve as a reference for the implementors. | |||
| Contact information: ppsenak@cisco.com | Contact information: ppsenak@cisco.com | |||
| skipping to change at page 32, line 4 ¶ | skipping to change at page 24, line 16 ¶ | |||
| serve as a reference for the implementors. | serve as a reference for the implementors. | |||
| Contact information: ppsenak@cisco.com | Contact information: ppsenak@cisco.com | |||
| Responses from Juniper: | Responses from Juniper: | |||
| The implementation's name and/or a link to a web page describing the | The implementation's name and/or a link to a web page describing the | |||
| implementation: | implementation: | |||
| Feature name is OSPF SPRING | Feature name is OSPF SPRING | |||
| The implementation's level of maturity: To be released in 16.2 | The implementation's level of maturity: To be released in 16.2 | |||
| (second half of 2016) | (second half of 2016) | |||
| Coverage: All sections implemented except Sections 4, and 6. | Coverage: All sections implemented except Sections 4, and 6. | |||
| Licensing: JUNOS Licensing needed. | Licensing: JUNOS Licensing needed. | |||
| Implementation experience: NA | Implementation experience: NA | |||
| Contact information: shraddha@juniper.net | Contact information: shraddha@juniper.net | |||
| 11. Security Considerations | 10. Security Considerations | |||
| Implementations must assure that malformed TLV and Sub-TLV | With the OSPFv2 segment routing extensions defined herein, OSPFv2 | |||
| permutations do not result in errors which cause hard OSPF failures. | will now program the MPLS data plane [RFC3031] in addition to the IP | |||
| data plane. Previously, LDP [RFC5036] or another label distribution | ||||
| mechanism was required to advertise MPLS labels and program the MPLS | ||||
| data plane. | ||||
| 12. Contributors | In general, the same types of attacks that can be carried out on the | |||
| IP control plane can be carried out on the MPLS control plane | ||||
| resulting in traffic being misrouted in the respective data planes. | ||||
| However, the latter may be more difficult to detect and isolate. | ||||
| Existing security extensions as described in [RFC2328] and [RFC7684] | ||||
| apply to these segment routing extensions. While OSPF is under a | ||||
| single administrative domain, there may be deployments where | ||||
| potential attackers have access to one or more networks in the OSPF | ||||
| routing domain. In these deployments, stronger authentication | ||||
| mechanisms such as those specified in [RFC7474] SHOULD be used. | ||||
| Implementations must assure that malformed TLV and Sub-TLV defined in | ||||
| this document are detected and do not provide a vulnerability for | ||||
| attackers to crash the OSPFv2 router or routing process. | ||||
| 11. Contributors | ||||
| The following people gave a substantial contribution to the content | The following people gave a substantial contribution to the content | |||
| of this document: Acee Lindem, Ahmed Bashandy, Martin Horneffer, | of this document: Acee Lindem, Ahmed Bashandy, Martin Horneffer, | |||
| Bruno Decraene, Stephane Litkowski, Igor Milojevic, Rob Shakir and | Bruno Decraene, Stephane Litkowski, Igor Milojevic, Rob Shakir and | |||
| Saku Ytti. | Saku Ytti. | |||
| 13. Acknowledgements | 12. Acknowledgements | |||
| We would like to thank Anton Smirnov for his contribution. | We would like to thank Anton Smirnov for his contribution. | |||
| Many thanks to Yakov Rekhter, John Drake and Shraddha Hedge for their | ||||
| contribution on earlier definition of the "Binding / MPLS Label TLV". | ||||
| Thanks to Acee Lindem for the detail review of the draft, | Thanks to Acee Lindem for the detail review of the draft, | |||
| corrections, as well as discussion about details of the encoding. | corrections, as well as discussion about details of the encoding. | |||
| 14. References | 13. References | |||
| 14.1. Normative References | 13.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., | ||||
| and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP | ||||
| Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, | ||||
| <http://www.rfc-editor.org/info/rfc3209>. | ||||
| [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, | ||||
| <http://www.rfc-editor.org/info/rfc3477>. | ||||
| [RFC4915] Psenak, P., Mirtorabi, S., Roy, A., Nguyen, L., and P. | [RFC4915] Psenak, P., Mirtorabi, S., Roy, A., Nguyen, L., and P. | |||
| Pillay-Esnault, "Multi-Topology (MT) Routing in OSPF", | Pillay-Esnault, "Multi-Topology (MT) Routing in OSPF", | |||
| RFC 4915, DOI 10.17487/RFC4915, June 2007, | RFC 4915, DOI 10.17487/RFC4915, June 2007, | |||
| <http://www.rfc-editor.org/info/rfc4915>. | <http://www.rfc-editor.org/info/rfc4915>. | |||
| [RFC6845] Sheth, N., Wang, L., and J. Zhang, "OSPF Hybrid Broadcast | [RFC6845] Sheth, N., Wang, L., and J. Zhang, "OSPF Hybrid Broadcast | |||
| and Point-to-Multipoint Interface Type", RFC 6845, | and Point-to-Multipoint Interface Type", RFC 6845, | |||
| DOI 10.17487/RFC6845, January 2013, | DOI 10.17487/RFC6845, January 2013, | |||
| <http://www.rfc-editor.org/info/rfc6845>. | <http://www.rfc-editor.org/info/rfc6845>. | |||
| [RFC7684] Psenak, P., Gredler, H., Shakir, R., Henderickx, W., | [RFC7684] Psenak, P., Gredler, H., Shakir, R., Henderickx, W., | |||
| Tantsura, J., and A. Lindem, "OSPFv2 Prefix/Link Attribute | Tantsura, J., and A. Lindem, "OSPFv2 Prefix/Link Attribute | |||
| Advertisement", RFC 7684, DOI 10.17487/RFC7684, November | Advertisement", RFC 7684, DOI 10.17487/RFC7684, November | |||
| 2015, <http://www.rfc-editor.org/info/rfc7684>. | 2015, <http://www.rfc-editor.org/info/rfc7684>. | |||
| [RFC7770] Lindem, A., Ed., Shen, N., Vasseur, JP., Aggarwal, R., and | [RFC7770] Lindem, A., Ed., Shen, N., Vasseur, JP., Aggarwal, R., and | |||
| S. Shaffer, "Extensions to OSPF for Advertising Optional | S. Shaffer, "Extensions to OSPF for Advertising Optional | |||
| Router Capabilities", RFC 7770, DOI 10.17487/RFC7770, | Router Capabilities", RFC 7770, DOI 10.17487/RFC7770, | |||
| February 2016, <http://www.rfc-editor.org/info/rfc7770>. | February 2016, <http://www.rfc-editor.org/info/rfc7770>. | |||
| 14.2. Informative References | 13.2. Informative References | |||
| [I-D.filsfils-spring-segment-routing-ldp-interop] | ||||
| Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., | ||||
| Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., | ||||
| Ytti, S., Henderickx, W., Tantsura, J., and E. Crabbe, | ||||
| "Segment Routing interoperability with LDP", draft- | ||||
| filsfils-spring-segment-routing-ldp-interop-03 (work in | ||||
| progress), March 2015. | ||||
| [I-D.filsfils-spring-segment-routing-use-cases] | ||||
| Filsfils, C., Francois, P., Previdi, S., Decraene, B., | ||||
| Litkowski, S., Horneffer, M., Milojevic, I., Shakir, R., | ||||
| Ytti, S., Henderickx, W., Tantsura, J., Kini, S., and E. | ||||
| Crabbe, "Segment Routing Use Cases", draft-filsfils- | ||||
| spring-segment-routing-use-cases-01 (work in progress), | ||||
| October 2014. | ||||
| [I-D.ietf-spring-conflict-resolution] | [I-D.ietf-spring-conflict-resolution] | |||
| Ginsberg, L., Psenak, P., Previdi, S., and M. Pilka, | Ginsberg, L., Psenak, P., Previdi, S., and M. Pilka, | |||
| "Segment Routing Conflict Resolution", draft-ietf-spring- | "Segment Routing MPLS Conflict Resolution", draft-ietf- | |||
| conflict-resolution-03 (work in progress), April 2017. | spring-conflict-resolution-04 (work in progress), May | |||
| 2017. | ||||
| [I-D.ietf-spring-segment-routing] | [I-D.ietf-spring-segment-routing] | |||
| Filsfils, C., Previdi, S., Decraene, B., Litkowski, S., | Filsfils, C., Previdi, S., Decraene, B., Litkowski, S., | |||
| and R. Shakir, "Segment Routing Architecture", draft-ietf- | and R. Shakir, "Segment Routing Architecture", draft-ietf- | |||
| spring-segment-routing-11 (work in progress), February | spring-segment-routing-12 (work in progress), June 2017. | |||
| 2017. | ||||
| [I-D.minto-rsvp-lsp-egress-fast-protection] | [I-D.ietf-spring-segment-routing-ldp-interop] | |||
| Jeganathan, J., Gredler, H., and Y. Shen, "RSVP-TE LSP | Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., and | |||
| egress fast-protection", draft-minto-rsvp-lsp-egress-fast- | S. Litkowski, "Segment Routing interworking with LDP", | |||
| protection-03 (work in progress), November 2013. | draft-ietf-spring-segment-routing-ldp-interop-08 (work in | |||
| progress), June 2017. | ||||
| [I-D.ietf-spring-segment-routing-mpls] | ||||
| Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., | ||||
| Litkowski, S., and R. Shakir, "Segment Routing with MPLS | ||||
| data plane", draft-ietf-spring-segment-routing-mpls-10 | ||||
| (work in progress), June 2017. | ||||
| [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, | ||||
| DOI 10.17487/RFC2328, April 1998, | ||||
| <http://www.rfc-editor.org/info/rfc2328>. | ||||
| [RFC7474] Bhatia, M., Hartman, S., Zhang, D., and A. Lindem, Ed., | ||||
| "Security Extension for OSPFv2 When Using Manual Key | ||||
| Management", RFC 7474, DOI 10.17487/RFC7474, April 2015, | ||||
| <http://www.rfc-editor.org/info/rfc7474>. | ||||
| [RFC7855] Previdi, S., Ed., Filsfils, C., Ed., Decraene, B., | ||||
| Litkowski, S., Horneffer, M., and R. Shakir, "Source | ||||
| Packet Routing in Networking (SPRING) Problem Statement | ||||
| and Requirements", RFC 7855, DOI 10.17487/RFC7855, May | ||||
| 2016, <http://www.rfc-editor.org/info/rfc7855>. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Peter Psenak (editor) | Peter Psenak (editor) | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Apollo Business Center | Apollo Business Center | |||
| Mlynske nivy 43 | Mlynske nivy 43 | |||
| Bratislava 821 09 | Bratislava 821 09 | |||
| Slovakia | Slovakia | |||
| skipping to change at page 34, line 26 ¶ | skipping to change at page 27, line 4 ¶ | |||
| Authors' Addresses | Authors' Addresses | |||
| Peter Psenak (editor) | Peter Psenak (editor) | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Apollo Business Center | Apollo Business Center | |||
| Mlynske nivy 43 | Mlynske nivy 43 | |||
| Bratislava 821 09 | Bratislava 821 09 | |||
| Slovakia | Slovakia | |||
| Email: ppsenak@cisco.com | Email: ppsenak@cisco.com | |||
| Stefano Previdi (editor) | Stefano Previdi (editor) | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Via Del Serafico, 200 | Via Del Serafico, 200 | |||
| Rome 00142 | Rome 00142 | |||
| Italy | Italy | |||
| Email: sprevidi@cisco.com | Email: stefano@previdi.net | |||
| Clarence Filsfils | Clarence Filsfils | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Brussels | Brussels | |||
| Belgium | Belgium | |||
| Email: cfilsfil@cisco.com | Email: cfilsfil@cisco.com | |||
| Hannes Gredler | Hannes Gredler | |||
| RtBrick Inc. | RtBrick Inc. | |||
| End of changes. 97 change blocks. | ||||
| 596 lines changed or deleted | 243 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/ | ||||