| < draft-previdi-filsfils-isis-segment-routing-00.txt | draft-previdi-filsfils-isis-segment-routing-01.txt > | |||
|---|---|---|---|---|
| IS-IS for IP Internets S. Previdi, Ed. | IS-IS for IP Internets S. Previdi, Ed. | |||
| Internet-Draft C. Filsfils, Ed. | Internet-Draft C. Filsfils, Ed. | |||
| Intended status: Standards Track A. Bashandy | Intended status: Standards Track A. Bashandy | |||
| Expires: September 13, 2013 Cisco Systems, Inc. | Expires: September 22, 2013 Cisco Systems, Inc. | |||
| M. Horneffer | M. Horneffer | |||
| Deutsche Telekom | Deutsche Telekom | |||
| B. Decraene | B. Decraene | |||
| S. Litkowski | S. Litkowski | |||
| Orange | Orange | |||
| I. Milojevic | I. Milojevic | |||
| Telekom Srbija | Telekom Srbija | |||
| R. Shakir | R. Shakir | |||
| British Telecom | British Telecom | |||
| S. Ytti | S. Ytti | |||
| TDC Oy | TDC Oy | |||
| March 12, 2013 | W. Henderickx | |||
| Alcatel-Lucent | ||||
| H. Gredler | ||||
| Juniper Networks, Inc. | ||||
| March 21, 2013 | ||||
| Segment Routing with IS-IS Routing Protocol | Segment Routing with IS-IS Routing Protocol | |||
| draft-previdi-filsfils-isis-segment-routing-00 | draft-previdi-filsfils-isis-segment-routing-01 | |||
| Abstract | Abstract | |||
| Segment Routing (SR) enables any node to select any path (explicit or | Segment Routing (SR) enables any node to select any path (explicit or | |||
| derived from IGPs SPT computations) for each of its traffic classes. | derived from IGPs SPT computations) for each of its traffic classes. | |||
| The path does not depend on a hop-by-hop signaling technique (neither | The path does not depend on a hop-by-hop signaling technique (neither | |||
| LDP nor RSVP). It only depends on a set of "segments" that are | LDP nor RSVP). It only depends on a set of "segments" that are | |||
| advertised by the IS-IS routing protocol. These segments act as | advertised by the IS-IS routing protocol. These segments act as | |||
| topological sub-paths that can be combined together to form the | topological sub-paths that can be combined together to form the | |||
| desired path. | desired path. | |||
| skipping to change at page 2, line 11 ¶ | skipping to change at page 2, line 15 ¶ | |||
| This document describes the Segment Routing functions, a set of use | This document describes the Segment Routing functions, a set of use | |||
| cases it addresses and the necessary changes that are required in the | cases it addresses and the necessary changes that are required in the | |||
| IS-IS protocol. | IS-IS protocol. | |||
| 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 RFC 2119 [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 September 13, 2013. | This Internet-Draft will expire on September 22, 2013. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2013 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 . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Applicability . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Applicability . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.1. Simplicity . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.1. Simplicity . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. Capacity Planning and Traffic Engineering (TE) . . . . . . 5 | 2.2. Capacity Planning and Traffic Engineering (TE) . . . . . 5 | |||
| 2.2.1. Disjointness in dual-plane networks . . . . . . . . . 9 | 2.2.1. Disjointness in dual-plane networks . . . . . . . . . 8 | |||
| 2.2.2. QoS-based Routing Policies . . . . . . . . . . . . . . 10 | 2.2.2. QoS-based Routing Policies . . . . . . . . . . . . . 9 | |||
| 2.2.3. Deterministic non-ECMP Path . . . . . . . . . . . . . 11 | 2.2.3. Deterministic non-ECMP Path . . . . . . . . . . . . . 10 | |||
| 2.3. Fast Reroute . . . . . . . . . . . . . . . . . . . . . . . 12 | 2.3. Fast Reroute . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 2.4. Segment Routing in Software Defined Networks (SR-SDN) . . 13 | 2.4. Segment Routing in Software Defined Networks (SR-SDN) . . 12 | |||
| 3. Segment Routing Identifiers . . . . . . . . . . . . . . . . . 13 | 3. Segment Routing Identifiers . . . . . . . . . . . . . . . . . 13 | |||
| 3.1. Node Segment Identifier (Node-SID) . . . . . . . . . . . . 14 | 3.1. Node Segment Identifier (Node-SID) . . . . . . . . . . . 13 | |||
| 3.1.1. Node-SID SubTLV . . . . . . . . . . . . . . . . . . . 14 | 3.1.1. Node-SID SubTLV . . . . . . . . . . . . . . . . . . . 14 | |||
| 3.2. Adjacency Segment Identifier (Adj-SID) . . . . . . . . . . 15 | 3.2. Adjacency Segment Identifier (Adj-SID) . . . . . . . . . 14 | |||
| 3.2.1. Adj-SID and Interface Address . . . . . . . . . . . . 16 | 3.2.1. Adj-SID and Interface Address . . . . . . . . . . . . 16 | |||
| 3.2.2. Adjacency Segment Identifier (Adj-SID) SubTLV . . . . 16 | 3.2.2. Adjacency Segment Identifier (Adj-SID) SubTLV . . . . 16 | |||
| 3.2.3. Adjacency Segment Identifiers in LANs . . . . . . . . 17 | 3.2.3. Adjacency Segment Identifiers in LANs . . . . . . . . 17 | |||
| 4. Segment Routing Capabilities . . . . . . . . . . . . . . . . . 18 | 4. Segment Routing Capabilities . . . . . . . . . . . . . . . . 19 | |||
| 5. Elements of Procedure . . . . . . . . . . . . . . . . . . . . 19 | 5. Elements of Procedure . . . . . . . . . . . . . . . . . . . . 20 | |||
| 5.1. Unicity . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 5.1. Unicity . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 5.2. IS-IS Multi-Level . . . . . . . . . . . . . . . . . . . . 20 | 5.2. IS-IS Multi-Level . . . . . . . . . . . . . . . . . . . . 20 | |||
| 5.3. Data-Plane Encodings . . . . . . . . . . . . . . . . . . . 20 | 5.3. Data-Plane Encodings . . . . . . . . . . . . . . . . . . 21 | |||
| 5.3.1. Segment Routing RIB (SR-RIB) . . . . . . . . . . . . . 21 | 5.3.1. Segment Routing RIB (SR-RIB) . . . . . . . . . . . . 21 | |||
| 5.3.2. Multiprotocol Label Switching (MPLS) . . . . . . . . . 23 | 5.3.2. Multiprotocol Label Switching (MPLS) . . . . . . . . 23 | |||
| 5.3.3. IP Version 6 . . . . . . . . . . . . . . . . . . . . . 24 | 5.3.3. IP Version 6 . . . . . . . . . . . . . . . . . . . . 24 | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 7. Manageability Considerations . . . . . . . . . . . . . . . . . 24 | 7. Manageability Considerations . . . . . . . . . . . . . . . . 24 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 24 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 24 | |||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 24 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . . 24 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 24 | |||
| 10.2. Informative References . . . . . . . . . . . . . . . . . . 25 | 10.2. Informative References . . . . . . . . . . . . . . . . . 25 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 25 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 1. Introduction | 1. Introduction | |||
| Segment Routing (SR) enables any node to select any path (explicit or | Segment Routing (SR) enables any node to select any path (explicit or | |||
| derived from IGPs SPT computations) for each of its traffic classes. | derived from IGPs SPT computations) for each of its traffic classes. | |||
| The path does not depend on a hop-by-hop signaling technique (neither | The path does not depend on a hop-by-hop signaling technique (neither | |||
| LDP nor RSVP). It only depends on a set of "segments" that are | LDP nor RSVP). It only depends on a set of "segments" that are | |||
| advertised by the IS-IS routing protocol. These segments act as | advertised by the IS-IS routing protocol. These segments act as | |||
| topological sub-paths that can be combined together to form the | topological sub-paths that can be combined together to form the | |||
| desired path. | desired path. | |||
| There are two forms of segments: node and adjacency. A node segment | There are two forms of segments: node and adjacency. A Node Segment | |||
| represents a path to a node. A Node Segment is typically a multi-hop | represents the shortest path to a node. A Node Segment is typically | |||
| path. An adjacency segment represents a specific adjacency to a | a multi-hop sortest path. An adjacency Segment represents a specific | |||
| node. | adjacency to a node. | |||
| SR's control-plane can be applied to IPv6 and MPLS dataplanes. | SR's control-plane can be applied to IPv6 and MPLS dataplanes. | |||
| In the MPLS dataplane, a node segment to node N is instantiated as an | In the MPLS dataplane, a node segment to node N is instantiated as an | |||
| LSP along the shortest-path (spt) to the node. An adjacency segment | LSP along the shortest-path (spt) to the node. An adjacency segment | |||
| is instantiated as a crossconnect entry pointing to a specific egress | is instantiated as a crossconnect entry pointing to a specific egress | |||
| datalink. | datalink. | |||
| At the heart of the SR technology, we find node segments. Node | At the heart of the SR technology, we find node segments. Node | |||
| segments must be globally unique within the network domain. | segments must be globally unique within the network domain. | |||
| A----B----C----D | A----B----C----D | |||
| Figure 1 | Figure 1 | |||
| In Figure 1, all the nodes must be configured with the same Segment | In Figure 1, all the nodes must be configured with the same Segment | |||
| Routing Identifiers Block (called SRB Node Registry), e.g. 64-5000, | Routing Identifiers Block (called SRB Node Registry), e.g. 64-5000, | |||
| and any node segment be uniquely allocated from that SRB Node | and any node segment be uniquely allocated from that SRB Node | |||
| Registry (e.g. A, B, C and D are configured respectively with node | Registry (e.g. A, B, C and D are configured respectively with node | |||
| segments 64, 65, 66 and 67). | segments 64, 65, 66 and 67). | |||
| In the MPLS dataplane instantiation, this means that all the nodes | In the MPLS dataplane instantiation, this means that all the nodes | |||
| need to be able to reserve and allocate to the SR control-plane the | need to be able to reserve and allocate to the SR control-plane the | |||
| same MPLS label range (e.g. 64-5000). | same MPLS label range (e.g. 64-5000). | |||
| 2. Applicability | 2. Applicability | |||
| Segment Routing is applicable to the following use-cases: simplicity, | Segment Routing is applicable to the following use-cases: simplicity, | |||
| TE, FRR and SDN. | TE, FRR and SDN. | |||
| 2.1. Simplicity | 2.1. Simplicity | |||
| The vast majority of IP traffic travels on shortest-paths to their | The vast majority of IP traffic travels on shortest-paths to their | |||
| destination. SR delivers a very efficient control-plane technique to | destination. SR delivers a very efficient control-plane technique to | |||
| skipping to change at page 6, line 29 ¶ | skipping to change at page 6, line 8 ¶ | |||
| Figure 2: Example Topology 1 | Figure 2: Example Topology 1 | |||
| ECMP is extremely frequent in SP, Enterprise and DC architectures and | ECMP is extremely frequent in SP, Enterprise and DC architectures and | |||
| it is not rare to see as much as 128 different ECMP paths between a | it is not rare to see as much as 128 different ECMP paths between a | |||
| source and a destination within a single network domain. | source and a destination within a single network domain. | |||
| This is illustrated in Figure 3 which consists of a subset of a | This is illustrated in Figure 3 which consists of a subset of a | |||
| network where already 6 ECMP paths are observed from A to M. | network where already 6 ECMP paths are observed from A to M. | |||
| C | C | |||
| / \ | / \ | |||
| B-D-L-- | B-D-L-- | |||
| / \ / \ | / \ / \ | |||
| A E \ | A E \ | |||
| \ M | \ M | |||
| \ G / | \ G / | |||
| \ / \ / | \ / \ / | |||
| F-H-K | F-H-K | |||
| \ / | \ / | |||
| I | I | |||
| Figure 3: ECMP Topology Example | Figure 3: ECMP Topology Example | |||
| Segment Routing offers a simple support for such ECMP-based shortest- | Segment Routing offers a simple support for such ECMP-based shortest- | |||
| path placement: a node segment. A single node segment enumerates all | path placement: a node segment. A single node segment enumerates all | |||
| the ECMP paths along the shortest-path. | the ECMP paths along the shortest-path. | |||
| This is much simpler to the RSVP-TE model where one TE tunnel is | This is much simpler to the RSVP-TE model where one TE tunnel is | |||
| required for each enumerated ECMP path. | required for each enumerated ECMP path. | |||
| skipping to change at page 7, line 21 ¶ | skipping to change at page 6, line 48 ¶ | |||
| Segment Routing offers a simple support for explicit path policy. | Segment Routing offers a simple support for explicit path policy. | |||
| In the diagram described in Figure 3, it is assumed that the | In the diagram described in Figure 3, it is assumed that the | |||
| requirement is that AM flow should not consume any resource on the LM | requirement is that AM flow should not consume any resource on the LM | |||
| and the FG links. | and the FG links. | |||
| The first option would consists of using the following encapsulation | The first option would consists of using the following encapsulation | |||
| at A: A sends any traffic to M towards the nhop F with a two-label | at A: A sends any traffic to M towards the nhop F with a two-label | |||
| stack where the top label is the adjacent segment FI and the next | stack where the top label is the adjacent segment FI and the next | |||
| label is the node segment to M. Alternatively, a three-label stack | label is the node segment to M. Alternatively, a three-label stack | |||
| with adjacency segments FI, IK and KM could have been used. | with adjacency segments FI, IK and KM could have been used. | |||
| The first option seems preferred as classically IP capacity planners | The first option seems preferred as classically IP capacity planners | |||
| optimize traffic along ECMP-aware shortest-path. The more node | optimize traffic along ECMP-aware shortest-path. The more node | |||
| segment can be used, the better. However, both options are available | segment can be used, the better. However, both options are available | |||
| and one can favor adjacency segments. | and one can favor adjacency segments. | |||
| In the same way, if the requirement in the diagram described in | In the same way, if the requirement in the diagram described in | |||
| Figure 3, is that the AM flow should not consume any resource along | Figure 3, is that the AM flow should not consume any resource along | |||
| the LM link but should use any resource on the bottom of the | the LM link but should use any resource on the bottom of the | |||
| skipping to change at page 10, line 4 ¶ | skipping to change at page 9, line 30 ¶ | |||
| Segment Routing (SR) offers a simpler solution. | Segment Routing (SR) offers a simpler solution. | |||
| Any node of the first plane can be configured with an anycast | Any node of the first plane can be configured with an anycast | |||
| loopback say 1.1.1.1/32 to which node segment 111 is attached. Any | loopback say 1.1.1.1/32 to which node segment 111 is attached. Any | |||
| node of the second plane can be configured with an anycast loopback | node of the second plane can be configured with an anycast loopback | |||
| say 2.2.2.2/32 to which node segment 222 is attached. Let us also | say 2.2.2.2/32 to which node segment 222 is attached. Let us also | |||
| assume that access node Z is advertising node segment 500. | assume that access node Z is advertising node segment 500. | |||
| A flow from A to Z via the first plane is simply represented by the | A flow from A to Z via the first plane is simply represented by the | |||
| segment list {111, 500}. In the MPLS dataplane case, A pushes a two- | segment list {111, 500}. In the MPLS dataplane case, A pushes a two- | |||
| label stack for Z-destined packets: the top label is 111 and the | label stack for Z-destined packets: the top label is 111 and the | |||
| second label is 500. | second label is 500. | |||
| Node segment 111 gets the traffic on ECMP-aware shortest path to the | Node segment 111 gets the traffic on ECMP-aware shortest path to the | |||
| first plane and then node segment 500 gets the traffic on ECMP-aware | first plane and then node segment 500 gets the traffic on ECMP-aware | |||
| shortest path to Z. | shortest path to Z. | |||
| Similarly, a flow from A to Z via the second plane is simply | Similarly, a flow from A to Z via the second plane is simply | |||
| represented by the segment list {222, 500}. | represented by the segment list {222, 500}. | |||
| skipping to change at page 10, line 47 ¶ | skipping to change at page 10, line 24 ¶ | |||
| suite the latency requirements of the voice traffic between the two | suite the latency requirements of the voice traffic between the two | |||
| cities. | cities. | |||
| Segment Routing (SR) offers a simple solution to the problem. | Segment Routing (SR) offers a simple solution to the problem. | |||
| The core routers in Russia are configured with an extra anycast | The core routers in Russia are configured with an extra anycast | |||
| loopback 3.3.3.3/32 to which node segment 333 is attached. | loopback 3.3.3.3/32 to which node segment 333 is attached. | |||
| If we assume that Brussels is configured with node segment 600, Tokyo | If we assume that Brussels is configured with node segment 600, Tokyo | |||
| can send all its data traffic to Brussels with one single segment: | can send all its data traffic to Brussels with one single segment: | |||
| 600. 600 gets the traffic from Tokyo to Brussels via USA and exploits | 600. 600 gets the traffic from Tokyo to Brussels via USA and | |||
| any ECMP-path along this shortest-path. | exploits any ECMP-path along this shortest-path. | |||
| Tokyo can send all its voice traffic to Brussels with a list of two | Tokyo can send all its voice traffic to Brussels with a list of two | |||
| segments: {333, 600}. 333 gets the traffic to Russia and exploit any | segments: {333, 600}. 333 gets the traffic to Russia and exploit any | |||
| ECMP path along the shortest path. 600 gets the traffic from Russia | ECMP path along the shortest path. 600 gets the traffic from Russia | |||
| to Brussels via ECMP-aware shortest-path. | to Brussels via ECMP-aware shortest-path. | |||
| One single metric per link is sufficient as clearly it is possible to | One single metric per link is sufficient as clearly it is possible to | |||
| set the IGP metrics such that the shortest-path from Brussels to | set the IGP metrics such that the shortest-path from Brussels to | |||
| Russia is via Russia and not via USA and the shortest-path from | Russia is via Russia and not via USA and the shortest-path from | |||
| Russia to Brussels is not back via Tokyo and USA but straight to | Russia to Brussels is not back via Tokyo and USA but straight to | |||
| Brussels. | Brussels. | |||
| 2.2.3. Deterministic non-ECMP Path | 2.2.3. Deterministic non-ECMP Path | |||
| skipping to change at page 14, line 7 ¶ | skipping to change at page 13, line 34 ¶ | |||
| SR provides for very frequent transaction-based application as the | SR provides for very frequent transaction-based application as the | |||
| network does not hold any state for the SR-encoded flows. | network does not hold any state for the SR-encoded flows. | |||
| 3. Segment Routing Identifiers | 3. Segment Routing Identifiers | |||
| Segment Routing defines two types of Segment Identifiers: Node-SID | Segment Routing defines two types of Segment Identifiers: Node-SID | |||
| and Adj-SID. | and Adj-SID. | |||
| 3.1. Node Segment Identifier (Node-SID) | 3.1. Node Segment Identifier (Node-SID) | |||
| A node-SID is associated to a prefix advertised by a node (e.g. in a | A node-SID is associated to a prefix advertised by a node (e.g. in a | |||
| TLV-135). The Node-SID SubTLV MAY be present in one of the following | TLV-135). The Node-SID SubTLV MAY be present in one of the following | |||
| TLVs: | TLVs: | |||
| TLV-135 (IPv4) defined in [RFC5305]. | TLV-135 (IPv4) defined in [RFC5305]. | |||
| TLV-235 (MT-ipv4) [RFC5120]. | TLV-235 (MT-ipv4) [RFC5120]. | |||
| TLV-236 (IPv6) [RFC5308]. | TLV-236 (IPv6) [RFC5308]. | |||
| TLV-237 (MT-IPv6) [RFC5120]. | TLV-237 (MT-IPv6) [RFC5120]. | |||
| skipping to change at page 15, line 21 ¶ | skipping to change at page 15, line 4 ¶ | |||
| L-Flag: Level flag. If set, then the prefix has been | L-Flag: Level flag. If set, then the prefix has been | |||
| propagated to the router in this level from another level | propagated to the router in this level from another level | |||
| (i.e.: from level-1 into level-2 or from level-2 into level-1). | (i.e.: from level-1 into level-2 or from level-2 into level-1). | |||
| Other bits: MUST be zero when sent and ignored when received. | Other bits: MUST be zero when sent and ignored when received. | |||
| Segment Identifier (SID): 32 bits of Segment Identifier | Segment Identifier (SID): 32 bits of Segment Identifier | |||
| 3.2. Adjacency Segment Identifier (Adj-SID) | 3.2. Adjacency Segment Identifier (Adj-SID) | |||
| An Adjacency Segment Identifier (Adj-SID) represents a router | An Adjacency Segment Identifier (Adj-SID) represents a router | |||
| adjacency. The value of the Adj-SID is local to the router and it is | adjacency. The value of the Adj-SID is local to the router and it is | |||
| encoded as a 32 bit number value using a new SubTLV in the following | encoded as a 32 bit number value using a new SubTLV. According to | |||
| TLVs: | IS-IS, each adjacency is advertised using one of the IS-IS Neighbor | |||
| TLVs below: | ||||
| TLV-22 [RFC5305] | TLV-22 [RFC5305] | |||
| TLV-222[RFC5120] | TLV-222 [RFC5120] | |||
| TLV-23[RFC5311] | TLV-23 [RFC5311] | |||
| TLV-223[RFC5311] | TLV-223 [RFC5311] | |||
| Multiple Adj-SID SubTLVs MAY be attached to the above-mentioned TLVs. | TLV-141[RFC5316] | |||
| An example where more than one is useful is the case of parallel | ||||
| adjacencies between two neighbors. Each Adjacency will be encoded | ||||
| separately (e.g. using TLV-22) and each adjacency will have one Adj- | ||||
| SID attached to it. This allow a remote router to explicitly | ||||
| determine which of the parallel adjacencies should be used for | ||||
| forwarding the packet. | ||||
| However, the remote router may prefer not to select a specific | Currently, [RFC5316] defines TLV-141 with the purpose of inter-AS | |||
| parallel interface and leave the decision to the local router so that | connectivity. In the Segment Routing context, we relax the | |||
| load sharing in the local router is determined locally. | constraint and we allow TLV-141 to be used for advertising any link | |||
| that is external to the IS-IS domain no matter if it connects another | ||||
| AS or not. | ||||
| Therefore, the local router (i.e.: the router with parallel | The newly defined Adj-SID subTLV carries the Adj-SID value for each | |||
| adjacencies) MAY insert a second Adj-SID, to each of its parallel | of the advertised adjacencies and MAY be present in any of the | |||
| adjacencies, with the same value so that when packets are received | neighbor TLVs described above. | |||
| with that Adj-SID the decision onto which link the packet should be | ||||
| forwarded is left to the local router. | ||||
| When the same Adj-SID value is used on different parallel | Multiple Adj-SID SubTLVs MAY be attached to the Neighbor TLVs (e.g.: | |||
| adjacencies, we call such value a Bundle-Adj-SID. | TLV-22). An example where more than one is useful is the case of | |||
| parallel adjacencies between two neighbors. In the figure here | ||||
| below: | ||||
| _____ | ||||
| / \ | ||||
| ----A------B------C---- | ||||
| \_____/ | ||||
| Figure 6: Parallel Adjacencies | ||||
| Router B nd C have 3 parallel adjacencies. Router B advertises three | ||||
| distinct Neighbor TLVs (e.g.: TLV-22), one for each parallel | ||||
| adjacency. Each of these advertisements will have its own Adj-SID | ||||
| SubTLV with a unique value (inside the Adj-SID space of the router). | ||||
| When router A inspects its IS-IS Link State Database (LSDB) it can | ||||
| figure out which link to use on a source routed path going through | ||||
| B-C links. It has knowledge of each individual parallel adjacency | ||||
| and can handle load sharing across them on its own (i.e.: decide in | ||||
| advance which packet should use which link). | ||||
| However, router A may prefer not to select a specific parallel | ||||
| interface and leave the load sharing decision to router B so that | ||||
| load sharing is handled locally (i.e.: where parallel interfaces | ||||
| resides). | ||||
| In order to achieve that, router B inserts an additional Adj-SID | ||||
| value on each of the parallel adjacencies it advertises. The value | ||||
| of this second Adj-SID is common to all parallel adjacencies. | ||||
| Again, when router A inspects its IS-IS LSDB, it finds that the | ||||
| parallel adjacencies advertised by router B have a second Adj-SID | ||||
| with a value that is common across all parallel adjacencies. Using | ||||
| that value will bring packets into router B and the load sharing | ||||
| decision is owned by router B itself. | ||||
| When the same Adj-SID value is used on parallel adjacencies, we | ||||
| called the Adj-SID a "Bundle-Adj-SID". | ||||
| 3.2.1. Adj-SID and Interface Address | 3.2.1. Adj-SID and Interface Address | |||
| When advertising one or more Adj-SID SubTLVs, the router MUST also | When advertising one or more Adj-SID SubTLVs, the router MUST also | |||
| advertise Interface Address and Neighbor Address SubTLVs (IPv4 or | advertise Interface Address and Neighbor Address SubTLVs (IPv4 or | |||
| IPv6). The two MUST be present. The encoding is defined in | IPv6). The two MUST be present. The encoding is defined in | |||
| [RFC5305] for IPv4 and in [RFC6119] for IPv6. | [RFC5305] for IPv4 and in [RFC6119] for IPv6. | |||
| 3.2.2. Adjacency Segment Identifier (Adj-SID) SubTLV | 3.2.2. Adjacency Segment Identifier (Adj-SID) SubTLV | |||
| skipping to change at page 18, line 51 ¶ | skipping to change at page 19, line 17 ¶ | |||
| corresponding Adj-SID table in order to figure out which Adj-SID has | corresponding Adj-SID table in order to figure out which Adj-SID has | |||
| to be used between any two neighbors in the LAN. | to be used between any two neighbors in the LAN. | |||
| 4. Segment Routing Capabilities | 4. Segment Routing Capabilities | |||
| Segment Routing requires each router to advertise its capabilities to | Segment Routing requires each router to advertise its capabilities to | |||
| the rest of the routing domain. TLV-242 (defined in [RFC4971]) | the rest of the routing domain. TLV-242 (defined in [RFC4971]) | |||
| describes router capabilities. For the purposes of Segment Routing | describes router capabilities. For the purposes of Segment Routing | |||
| we define an additional subTLV: the SR-Cap SubTLV. | we define an additional subTLV: the SR-Cap SubTLV. | |||
| The SR-Cap SubTLV MUST be present in the Router Capability TLV (TLV- | The SR-Cap SubTLV MUST be present in the Router Capability TLV | |||
| 242), MUST appear only once and has following format: | (TLV-242), MUST appear only once and has 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 | SR Capabilities Flags | | | Type | Length | SR Capabilities Flags | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| where: | where: | |||
| Type: TBA. | Type: TBA. | |||
| skipping to change at page 19, line 18 ¶ | skipping to change at page 19, line 33 ¶ | |||
| | Type | Length | SR Capabilities Flags | | | Type | Length | SR Capabilities Flags | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| where: | where: | |||
| Type: TBA. | Type: TBA. | |||
| Length: 2 octets. | Length: 2 octets. | |||
| SR Capabilities Flags: 2 octets field of following flags: | SR Capabilities Flags: 2 octets field of following flags: | |||
| 0 1 | 0 1 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |M|F|S| | | |M|F|S| | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| where: | where: | |||
| M-Flag: MPLS flag. If set, then the advertising router is | M-Flag: MPLS flag. If set, then the advertising router is | |||
| capable of MPLS label based forwarding. | capable of MPLS label based forwarding. | |||
| F-Flag: IPv4 flag. If set, then the advertising router is | F-Flag: IPv4 flag. If set, then the advertising router is | |||
| capable of IPv4 based forwarding. | capable of IPv4 based forwarding. | |||
| S-Flag: IPv6 flag. If set, then the advertising router is | S-Flag: IPv6 flag. If set, then the advertising router is | |||
| capable of IPv6 based forwarding. | capable of IPv6 based forwarding. | |||
| Other bits: MUST be zero when sent and ignored when received. | Other bits: MUST be zero when sent and ignored when | |||
| received. | ||||
| The Router Capability TLV defined in [RFC4971]specifies the S and D | The Router Capability TLV defined in [RFC4971]specifies the S and D | |||
| bits. The SR-Capability SubTLV MUST be propagated throughout the | bits. The SR-Capability SubTLV MUST be propagated throughout the | |||
| entire routing domain and therefore the S bit in the Router | entire routing domain and therefore the S bit in the Router | |||
| Capability TLV MUST be set. | Capability TLV MUST be set. | |||
| The D bit of Router Capability TLV must be set accordingly. I.e.: it | The D bit of Router Capability TLV must be set accordingly. I.e.: it | |||
| MUST be set when the Router Capability TLV is leaked from level-2 to | MUST be set when the Router Capability TLV is leaked from level-2 to | |||
| level-1. | level-1. | |||
| skipping to change at page 20, line 27 ¶ | skipping to change at page 20, line 43 ¶ | |||
| prefix is of anycast type and is advertised by two nodes N and M, | prefix is of anycast type and is advertised by two nodes N and M, | |||
| then N and M attach the same (anycast) Node-SID to the same anycast | then N and M attach the same (anycast) Node-SID to the same anycast | |||
| IP address. | IP address. | |||
| If a node N learns a remote Adj-SID S but advertised with a value | If a node N learns a remote Adj-SID S but advertised with a value | |||
| that falls in its locally configured Node SRB range, N SHOULD issue | that falls in its locally configured Node SRB range, N SHOULD issue | |||
| an error log warning for a misconfiguration. | an error log warning for a misconfiguration. | |||
| If a node N learns a remote Node-SID S but with a value that falls | If a node N learns a remote Node-SID S but with a value that falls | |||
| outside its locally configured node SRB range, N SHOULD NOT insert | outside its locally configured node SRB range, N SHOULD NOT insert | |||
| any RIB entry for segment S. Node N SHOULD issue an error log warning | any RIB entry for segment S. Node N SHOULD issue an error log | |||
| for misconfiguration. | warning for misconfiguration. | |||
| If a node N learns about two different IP addresses advertised with | If a node N learns about two different IP addresses advertised with | |||
| the same Node-SID, N MUST insert a RIB entry only for the node | the same Node-SID, N MUST insert a RIB entry only for the node | |||
| segment related to the highest IP address. N SHOULD issue an error | segment related to the highest IP address. N SHOULD issue an error | |||
| log warning for misconfiguration. | log warning for misconfiguration. | |||
| 5.2. IS-IS Multi-Level | 5.2. IS-IS Multi-Level | |||
| In IS-IS protocol, adjacencies advertisements (e.g.: TLV-22) are not | In IS-IS protocol, adjacencies advertisements (e.g.: TLV-22) are not | |||
| propagated across level/area boundaries hence the adjacency segment | propagated across level/area boundaries hence the adjacency segment | |||
| (Adj-SID) is not propagated across levels either. | (Adj-SID) is not propagated across levels either. | |||
| If a prefix is propagated across levels, then its Node-SID SubTLVs | If a prefix is propagated across levels, then its Node-SID SubTLVs | |||
| are also propagated. The Node-SID S flag is set accordingly, | are also propagated. The Node-SID S flag is set accordingly, | |||
| independently from the settings of the U/D bit defined in [RFC5305]. | independently from the settings of the U/D bit defined in [RFC5305]. | |||
| 5.3. Data-Plane Encodings | 5.3. Data-Plane Encodings | |||
| skipping to change at page 21, line 40 ¶ | skipping to change at page 22, line 8 ¶ | |||
| operation. | operation. | |||
| Other operations will be introduced in future versions of the | Other operations will be introduced in future versions of the | |||
| document. | document. | |||
| Two types of SR-RIB entries are defined: | Two types of SR-RIB entries are defined: | |||
| TRANSIT: the ingress packet comes with an active segment. A | TRANSIT: the ingress packet comes with an active segment. A | |||
| Transit SR-RIB entry is represented as: | Transit SR-RIB entry is represented as: | |||
| Ingress active segment. | Ingress active segment. | |||
| Operation on the active segment. | Operation on the active segment. | |||
| Egress Interface. | Egress Interface. | |||
| INGRESS: the ingress packet comes without active segment (plain | INGRESS: the ingress packet comes without active segment (plain | |||
| IP). | IP). | |||
| 5.3.1.1. SR-RIB entry for local segments | 5.3.1.1. SR-RIB entry for local segments | |||
| A node MUST install a transit SR-RIB entry for any local adjacency | A node MUST install a transit SR-RIB entry for any local adjacency | |||
| segment (Adj-SID) of value V attached to datalink L with: | segment (Adj-SID) of value V attached to datalink L with: | |||
| Ingress active segment : V | Ingress active segment : V | |||
| Ingress operation: NEXT | Ingress operation: NEXT | |||
| Egress interface: L | Egress interface: L | |||
| A node MUST install a transit SRIB entry for any local adjacency | A node MUST install a transit SR-RIB entry for any local adjacency | |||
| segment (Adj-SID) of value W attached to ISIS link bundle B with: | segment (Adj-SID) of value W attached to ISIS link bundle B with: | |||
| Ingress active segment: W | Ingress active segment: W | |||
| Ingress operation: NEXT | Ingress operation: NEXT | |||
| Egress interface: hash between any datalink within bundle B | Egress interface: hash between any datalink within bundle B | |||
| A node MUST install a transit SR-RIB entry for any local node segment | A node MUST install a transit SR-RIB entry for any local node segment | |||
| (Node-SID) of value N with: | (Node-SID) of value N with: | |||
| skipping to change at page 23, line 18 ¶ | skipping to change at page 23, line 27 ¶ | |||
| plane. An ingress SR-RIB entry is generally represented as: | plane. An ingress SR-RIB entry is generally represented as: | |||
| Classification: what traffic | Classification: what traffic | |||
| Encapsulation: what list of segments to insert | Encapsulation: what list of segments to insert | |||
| In this section, we define its simplest instantiation: the automated | In this section, we define its simplest instantiation: the automated | |||
| ingress SR-RIB entry insertion towards remote node segments (Node- | ingress SR-RIB entry insertion towards remote node segments (Node- | |||
| SID). | SID). | |||
| A node MUST install an ingress SR-RIB entry for any remote node | A node SHOULD install an ingress SR-RIB entry for any remote node | |||
| segment (Node-SID) of value V attached to IP prefix P with: | segment (Node-SID) of value V attached to IP prefix P with: | |||
| FEC: prefix P | FEC: prefix P | |||
| Ingress operation: insert nodal segment V. | Ingress operation: insert nodal segment V. | |||
| Egress interface: interface to next-hop along the shortest-path to | Egress interface: interface to next-hop along the shortest-path to | |||
| P. | P. | |||
| 5.3.1.4. Policy-based Ingress SRIB entry | 5.3.1.4. Policy-based Ingress SRIB entry | |||
| skipping to change at page 23, line 50 ¶ | skipping to change at page 24, line 11 ¶ | |||
| The CONTINUE operation is implemented as a swap where the outgoing | The CONTINUE operation is implemented as a swap where the outgoing | |||
| label value is set to the incoming label value. | label value is set to the incoming label value. | |||
| The NEXT operation is implemented as a MPLS pop operation. | The NEXT operation is implemented as a MPLS pop operation. | |||
| The INSERT operation is implemented as a MPLS push of a label | The INSERT operation is implemented as a MPLS push of a label | |||
| stack. | stack. | |||
| The Node-SID value or Adj-SID value rightmost 20 bits MUST be used | The Node-SID value or Adj-SID value rightmost 20 bits MUST be used | |||
| for label values. | for label values. This implies SID values to be allocated | |||
| according to the 20 bit space in MPLS labels. | ||||
| 5.3.3. IP Version 6 | 5.3.3. IP Version 6 | |||
| The text will be added in future revision. | The text will be added in future revision. | |||
| 6. IANA Considerations | 6. IANA Considerations | |||
| TBD | TBD | |||
| 7. Manageability Considerations | 7. Manageability Considerations | |||
| skipping to change at page 25, line 5 ¶ | skipping to change at page 25, line 12 ¶ | |||
| System to Intermediate System (IS-IS) Extensions for | System to Intermediate System (IS-IS) Extensions for | |||
| Advertising Router Information", RFC 4971, July 2007. | Advertising Router Information", RFC 4971, July 2007. | |||
| [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi | [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi | |||
| Topology (MT) Routing in Intermediate System to | Topology (MT) Routing in Intermediate System to | |||
| Intermediate Systems (IS-ISs)", RFC 5120, February 2008. | Intermediate Systems (IS-ISs)", RFC 5120, February 2008. | |||
| [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic | [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic | |||
| Engineering", RFC 5305, October 2008. | Engineering", RFC 5305, October 2008. | |||
| [RFC5308] Hopps, C., "Routing IPv6 with IS-IS", RFC 5308, | [RFC5308] Hopps, C., "Routing IPv6 with IS-IS", RFC 5308, October | |||
| October 2008. | 2008. | |||
| [RFC5311] McPherson, D., Ginsberg, L., Previdi, S., and M. Shand, | [RFC5311] McPherson, D., Ginsberg, L., Previdi, S., and M. Shand, | |||
| "Simplified Extension of Link State PDU (LSP) Space for | "Simplified Extension of Link State PDU (LSP) Space for | |||
| IS-IS", RFC 5311, February 2009. | IS-IS", RFC 5311, February 2009. | |||
| [RFC5316] Chen, M., Zhang, R., and X. Duan, "ISIS Extensions in | ||||
| Support of Inter-Autonomous System (AS) MPLS and GMPLS | ||||
| Traffic Engineering", RFC 5316, December 2008. | ||||
| [RFC6119] Harrison, J., Berger, J., and M. Bartlett, "IPv6 Traffic | [RFC6119] Harrison, J., Berger, J., and M. Bartlett, "IPv6 Traffic | |||
| Engineering in IS-IS", RFC 6119, February 2011. | Engineering in IS-IS", RFC 6119, February 2011. | |||
| 10.2. Informative References | 10.2. Informative References | |||
| [I-D.ietf-rtgwg-remote-lfa] | [I-D.ietf-rtgwg-remote-lfa] | |||
| Bryant, S., Filsfils, C., Previdi, S., Shand, M., and S. | Bryant, S., Filsfils, C., Previdi, S., Shand, M., and S. | |||
| Ning, "Remote LFA FRR", draft-ietf-rtgwg-remote-lfa-01 | Ning, "Remote LFA FRR", draft-ietf-rtgwg-remote-lfa-01 | |||
| (work in progress), December 2012. | (work in progress), December 2012. | |||
| skipping to change at page 25, line 37 ¶ | skipping to change at page 26, line 4 ¶ | |||
| Authors' Addresses | Authors' Addresses | |||
| 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: sprevidi@cisco.com | |||
| Clarence Filsfils (editor) | Clarence Filsfils (editor) | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| Brussels, | Brussels | |||
| BE | BE | |||
| Email: cfilsfil@cisco.com | Email: cfilsfil@cisco.com | |||
| Ahmed Bashandy | Ahmed Bashandy | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| 170, West Tasman Drive | 170, West Tasman Drive | |||
| San Jose, CA 95134 | San Jose, CA 95134 | |||
| US | US | |||
| Email: bashandy@cisco.com | Email: bashandy@cisco.com | |||
| Martin Horneffer | Martin Horneffer | |||
| Deutsche Telekom | Deutsche Telekom | |||
| skipping to change at page 26, line 39 ¶ | skipping to change at page 27, line 4 ¶ | |||
| Email: stephane.litkowski@orange.com | Email: stephane.litkowski@orange.com | |||
| Igor Milojevic | Igor Milojevic | |||
| Telekom Srbija | Telekom Srbija | |||
| Takovska 2 | Takovska 2 | |||
| Belgrade | Belgrade | |||
| RS | RS | |||
| Email: igormilojevic@telekom.rs | Email: igormilojevic@telekom.rs | |||
| Rob Shakir | Rob Shakir | |||
| British Telecom | British Telecom | |||
| London | London | |||
| UK | UK | |||
| Email: rob.shakir@bt.com | Email: rob.shakir@bt.com | |||
| Saku Ytti | Saku Ytti | |||
| TDC Oy | TDC Oy | |||
| Mechelininkatu 1a | Mechelininkatu 1a | |||
| TDC 00094 | TDC 00094 | |||
| FI | FI | |||
| Email: saku@ytti.fi | Email: saku@ytti.fi | |||
| Wim Henderickx | ||||
| Alcatel-Lucent | ||||
| Copernicuslaan 50 | ||||
| Antwerp 2018 | ||||
| BE | ||||
| Email: wim.henderickx@alcatel-lucent.com | ||||
| Hannes Gredler | ||||
| Juniper Networks, Inc. | ||||
| 1194 N. Mathilda Ave. | ||||
| Sunnyvale, CA 94089 | ||||
| US | ||||
| Email: hannes@juniper.net | ||||
| End of changes. 47 change blocks. | ||||
| 107 lines changed or deleted | 150 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/ | ||||