| < draft-ietf-6man-segment-routing-header-12.txt | draft-ietf-6man-segment-routing-header-13.txt > | |||
|---|---|---|---|---|
| Network Working Group S. Previdi | Network Working Group S. Previdi | |||
| Internet-Draft Individual | Internet-Draft Individual | |||
| Intended status: Standards Track C. Filsfils, Ed. | Intended status: Standards Track C. Filsfils, Ed. | |||
| Expires: October 21, 2018 Cisco Systems, Inc. | Expires: November 24, 2018 Cisco Systems, Inc. | |||
| J. Leddy | J. Leddy | |||
| Comcast | Comcast | |||
| S. Matsushima | S. Matsushima | |||
| Softbank | Softbank | |||
| D. Voyer, Ed. | D. Voyer, Ed. | |||
| Bell Canada | Bell Canada | |||
| April 19, 2018 | May 23, 2018 | |||
| IPv6 Segment Routing Header (SRH) | IPv6 Segment Routing Header (SRH) | |||
| draft-ietf-6man-segment-routing-header-12 | draft-ietf-6man-segment-routing-header-13 | |||
| Abstract | Abstract | |||
| Segment Routing (SR) allows a node to steer a packet through a | Segment Routing can be applied to the IPv6 data plane using a new | |||
| controlled set of instructions, called segments, by prepending an SR | type of Routing Extension Header. This document describes the | |||
| header to the packet. A segment can represent any instruction, | Segment Routing Extension Header and how it is used by Segment | |||
| topological or service-based. SR allows a node to steer a flow | Routing capable nodes. | |||
| through any path (topological, or application/service based) while | ||||
| maintaining per-flow state only at the ingress node to the SR domain. | ||||
| Segment Routing can be applied to the IPv6 data plane with the | ||||
| addition of a new type of Routing Extension Header. This document | ||||
| describes the Segment Routing Extension Header Type and how it is | ||||
| used by SR capable nodes. | ||||
| 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 | |||
| skipping to change at page 2, line 7 ¶ | skipping to change at page 1, line 46 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on October 21, 2018. | This Internet-Draft will expire on November 24, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Segment Routing Documents . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Segment Routing Extension Header . . . . . . . . . . . . . . 4 | |||
| 2.1. Data Planes supporting Segment Routing . . . . . . . . . 4 | 2.1. SRH TLVs . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.2. SRv6 Segment . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1.1. Padding TLVs . . . . . . . . . . . . . . . . . . . . 7 | |||
| 2.3. Segment Routing (SR) Domain . . . . . . . . . . . . . . . 5 | 2.1.2. HMAC TLV . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3. Segment Routing Extension Header (SRH) . . . . . . . . . . . 5 | 3. SR Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 3.1. SRH TLVs . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.1. Source SR Node . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 3.1.1. Padding TLVs . . . . . . . . . . . . . . . . . . . . 8 | 3.2. Transit Node . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 3.1.2. HMAC TLV . . . . . . . . . . . . . . . . . . . . . . 10 | 3.3. SR Segment Endpoint Node . . . . . . . . . . . . . . . . 10 | |||
| 3.2. SRH Processing . . . . . . . . . . . . . . . . . . . . . 11 | 4. Packet Processing . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 4. SRH Functions . . . . . . . . . . . . . . . . . . . . . . . . 11 | 4.1. Source SR Node . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 4.1. Endpoint Function (End) . . . . . . . . . . . . . . . . . 11 | 4.1.1. Reduced SRH . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 4.2. End.X: Endpoint with Layer-3 cross-connect . . . . . . . 12 | 4.2. Transit Node . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 5. SR Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 4.3. Segment Endpoint Node . . . . . . . . . . . . . . . . . . 11 | |||
| 5.1. Source SR Node . . . . . . . . . . . . . . . . . . . . . 13 | 4.3.1. FIB Entry Is Locally Instantiated SRv6 END SID . . . 11 | |||
| 5.2. Transit Node . . . . . . . . . . . . . . . . . . . . . . 14 | 4.3.2. FIB Entry is a Local Interface . . . . . . . . . . . 12 | |||
| 5.3. SR Segment Endpoint Node . . . . . . . . . . . . . . . . 14 | 4.3.3. FIB Entry Is A Non-Local Route . . . . . . . . . . . 13 | |||
| 5.4. Load Balancing and ECMP . . . . . . . . . . . . . . . . . 14 | 4.3.4. FIB Entry Is A No Match . . . . . . . . . . . . . . . 13 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | 4.4. Load Balancing and ECMP . . . . . . . . . . . . . . . . . 13 | |||
| 6.1. Threat model . . . . . . . . . . . . . . . . . . . . . . 15 | 5. Illustrations . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 6.1.1. Source routing threats . . . . . . . . . . . . . . . 15 | 5.1. Abstract Representation of an SRH . . . . . . . . . . . . 13 | |||
| 6.1.2. Applicability of RFC 5095 to SRH . . . . . . . . . . 16 | 5.2. Example Topology . . . . . . . . . . . . . . . . . . . . 14 | |||
| 6.1.3. Service stealing threat . . . . . . . . . . . . . . . 17 | 5.3. Source SR Node . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 6.1.4. Topology disclosure . . . . . . . . . . . . . . . . . 17 | 5.3.1. Intra SR Domain Packet . . . . . . . . . . . . . . . 15 | |||
| 6.1.5. ICMP Generation . . . . . . . . . . . . . . . . . . . 17 | 5.3.2. Transit Packet Through SR Domain . . . . . . . . . . 15 | |||
| 6.2. Security fields in SRH . . . . . . . . . . . . . . . . . 18 | 5.4. Transit Node . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 6.2.1. Selecting a hash algorithm . . . . . . . . . . . . . 19 | 5.5. SR End Node . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 6.2.2. Performance impact of HMAC . . . . . . . . . . . . . 19 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | |||
| 6.2.3. Pre-shared key management . . . . . . . . . . . . . . 20 | 6.1. Threat model . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 6.3. Deployment Models . . . . . . . . . . . . . . . . . . . . 20 | 6.1.1. Source routing threats . . . . . . . . . . . . . . . 17 | |||
| 6.3.1. Nodes within the SR domain . . . . . . . . . . . . . 20 | 6.1.2. Applicability of RFC 5095 to SRH . . . . . . . . . . 17 | |||
| 6.3.2. Nodes outside of the SR domain . . . . . . . . . . . 21 | 6.1.3. Service stealing threat . . . . . . . . . . . . . . . 18 | |||
| 6.3.3. SR path exposure . . . . . . . . . . . . . . . . . . 21 | 6.1.4. Topology disclosure . . . . . . . . . . . . . . . . . 18 | |||
| 6.3.4. Impact of BCP-38 . . . . . . . . . . . . . . . . . . 22 | 6.1.5. ICMP Generation . . . . . . . . . . . . . . . . . . . 18 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 | 6.2. Security fields in SRH . . . . . . . . . . . . . . . . . 19 | |||
| 7.1. Segment Routing Header Flags Register . . . . . . . . . . 22 | 6.2.1. Selecting a hash algorithm . . . . . . . . . . . . . 20 | |||
| 7.2. Segment Routing Header TLVs Register . . . . . . . . . . 23 | 6.2.2. Performance impact of HMAC . . . . . . . . . . . . . 20 | |||
| 8. Implementation Status . . . . . . . . . . . . . . . . . . . . 23 | 6.2.3. Pre-shared key management . . . . . . . . . . . . . . 21 | |||
| 8.1. Linux . . . . . . . . . . . . . . . . . . . . . . . . . . 23 | 6.3. Deployment Models . . . . . . . . . . . . . . . . . . . . 22 | |||
| 8.2. Cisco Systems . . . . . . . . . . . . . . . . . . . . . . 23 | 6.3.1. Nodes within the SR domain . . . . . . . . . . . . . 22 | |||
| 8.3. FD.io . . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 6.3.2. Nodes outside of the SR domain . . . . . . . . . . . 22 | |||
| 8.4. Barefoot . . . . . . . . . . . . . . . . . . . . . . . . 24 | 6.3.3. SR path exposure . . . . . . . . . . . . . . . . . . 23 | |||
| 8.5. Juniper . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 6.3.4. Impact of BCP-38 . . . . . . . . . . . . . . . . . . 23 | |||
| 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 24 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 24 | 7.1. Segment Routing Header Flags Register . . . . . . . . . . 24 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 25 | 7.2. Segment Routing Header TLVs Register . . . . . . . . . . 24 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . 25 | 8. Implementation Status . . . . . . . . . . . . . . . . . . . . 24 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 26 | 8.1. Linux . . . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 8.2. Cisco Systems . . . . . . . . . . . . . . . . . . . . . . 25 | ||||
| 8.3. FD.io . . . . . . . . . . . . . . . . . . . . . . . . . . 25 | ||||
| 8.4. Barefoot . . . . . . . . . . . . . . . . . . . . . . . . 25 | ||||
| 8.5. Juniper . . . . . . . . . . . . . . . . . . . . . . . . . 25 | ||||
| 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 25 | ||||
| 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 | ||||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 26 | ||||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . 26 | ||||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 27 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 1. Segment Routing Documents | 1. Introduction | |||
| Segment Routing terminology is defined in | ||||
| [I-D.ietf-spring-segment-routing]. | ||||
| The network programming paradigm | ||||
| [I-D.filsfils-spring-srv6-network-programming] defines additional | ||||
| functions associated to a Segment Routing for IPv6 (SRv6) Segment ID | ||||
| (SID). | ||||
| Segment Routing use cases are described in [RFC7855] and [RFC8354]. | ||||
| Segment Routing protocol extensions are defined in | ||||
| [I-D.ietf-isis-segment-routing-extensions], and | ||||
| [I-D.ietf-ospf-ospfv3-segment-routing-extensions]. | ||||
| 2. Introduction | ||||
| Segment Routing (SR), defined in [I-D.ietf-spring-segment-routing], | ||||
| allows a node to steer a packet through a controlled set of | ||||
| instructions, called segments, by prepending an SR header to the | ||||
| packet. A segment can represent any instruction, topological or | ||||
| service-based. SR allows a node to steer a flow through any path | ||||
| (topological or service/application based) while maintaining per-flow | ||||
| state only at the ingress node to the SR domain. Segments can be | ||||
| derived from different components: IGP, BGP, Services, Contexts, | ||||
| Locators, etc. The list of segment forming the path is called the | ||||
| Segment List and is encoded in the packet header. | ||||
| SR allows the use of strict and loose source based routing paradigms | ||||
| without requiring any additional signaling protocols in the | ||||
| infrastructure hence delivering an excellent scalability property. | ||||
| The source based routing model described in | ||||
| [I-D.ietf-spring-segment-routing] inherits from the ones proposed by | ||||
| [RFC1940] and [RFC8200]. The source based routing model offers the | ||||
| support for explicit routing capability. | ||||
| 2.1. Data Planes supporting Segment Routing | ||||
| Segment Routing (SR), can be instantiated over MPLS | ||||
| (SRMPLS)([I-D.ietf-spring-segment-routing-mpls]) and IPv6 (SRv6). | ||||
| This document defines its instantiation over the IPv6 data-plane | ||||
| based on the use-cases defined in [RFC8354]. | ||||
| This document defines a new type of Routing Header (originally | ||||
| defined in [RFC8200]) called the Segment Routing Header (SRH) in | ||||
| order to convey the Segment List in the packet header as defined in | ||||
| [I-D.ietf-spring-segment-routing]. Mechanisms through which segments | ||||
| are known and advertised are outside the scope of this document. | ||||
| 2.2. SRv6 Segment | ||||
| An SRv6 Segment is a 128-bit value. "SRv6 SID" or simply "SID" are | ||||
| often used as a shorter reference for "SRv6 Segment". | ||||
| An SRv6-capable node N maintains a "My Local SID Table". This table | ||||
| contains all the local SRv6 segments explicitly instantiated at node | ||||
| N. N is the parent node for these SIDs. | ||||
| A local SID of N could be an IPv6 address of a local interface of N | ||||
| but it does not have to be. Most often, a local SID is not an | ||||
| address of a local interface of N. The My Local SID Table is thus | ||||
| not populated by default with all the addresses of a node. | ||||
| Every SRv6 local SID instantiated has a specific instruction bounded | ||||
| to it. | ||||
| This information is stored in the My Local SID Table. The My Local | ||||
| SID Table has three main purposes: | ||||
| o Define which local SIDs are explicitly instantiated. | ||||
| o Specify which instruction is bound to each of the instantiated | ||||
| SIDs. | ||||
| o Store the parameters associated to such instruction (i.e. OIF, | ||||
| NextHop,...). | ||||
| A Segment ID (SID) in the destination address of an IPv6 header, is | Segment Routing can be applied to the IPv6 data plane using a new | |||
| routed through an IPv6 network as an IPv6 address. SIDs, or the | type of Routing Extension Header (SRH). This document describes the | |||
| prefix(es) covering SIDs in the My Local SID Table, and their | Segment Routing Extension Header and how it is used by Segment | |||
| reachability may be distributed by means outside the scope of this | Routing capable nodes. | |||
| document. For example, [RFC5308] or [RFC5340] may be used to | ||||
| advertise a prefix covering the My Local SID Table. | ||||
| A node may receive a packet with an SRv6 SID in the DA without an | The Segment Routing Architecture [I-D.ietf-spring-segment-routing] | |||
| SRH. In such case the packet should still be processed by the | describes Segment Routing and its instantiation in two data planes | |||
| Segment Routing engine. | MPLS and IPv6. | |||
| 2.3. Segment Routing (SR) Domain | SR with the MPLS data plane is defined in | |||
| [I-D.ietf-spring-segment-routing-mpls]. | ||||
| The Segment Routing Domain (SR Domain) is defined as the set of nodes | SR with the IPv6 data plane is defined in | |||
| participating in the source based routing model. These nodes may be | [I-D.filsfils-spring-srv6-network-programming]. | |||
| connected to the same physical infrastructure (e.g.: a Service | ||||
| Provider's network). | ||||
| The SRH is added to the packet by its source, consistent with the | The encoding of MPLS labels and label stacking are defined in | |||
| source routing model defined in [RFC8200]. For example: | [RFC3032]. | |||
| o At the node originating the packet (host, server). | The encoding of IPv6 segments in the Segment Routing Extension header | |||
| is defined in this document. | ||||
| o At the ingress node of an SR domain where the ingress node | Terminology used within this document is defined in detail in | |||
| receives a packet and encapsulates it in an outer IPv6 header | [I-D.ietf-spring-segment-routing]. Specifically, these terms: | |||
| followed by a Segment Routing header. | Segment Routing, SR Domain, SRv6, Segment ID (SID), SRv6 SID, Active | |||
| Segment, and SR Policy. | ||||
| 3. Segment Routing Extension Header (SRH) | 2. Segment Routing Extension Header | |||
| A new type of the Routing Header (originally defined in [RFC8200]) is | Routing Headers are defined in [RFC8200]. The Segment Routing Header | |||
| defined: the Segment Routing Header (SRH) which has a new Routing | has a new Routing Type (suggested value 4) to be assigned by IANA. | |||
| Type, (suggested value 4) to be assigned by IANA. | ||||
| The Segment Routing Header (SRH) is defined as follows: | The Segment Routing Header (SRH) is defined as follows: | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Next Header | Hdr Ext Len | Routing Type | Segments Left | | | Next Header | Hdr Ext Len | Routing Type | Segments Left | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Last Entry | Flags | Tag | | | Last Entry | Flags | Tag | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 6, line 36 ¶ | skipping to change at page 5, line 4 ¶ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| // // | // // | |||
| // Optional Type Length Value objects (variable) // | // Optional Type Length Value objects (variable) // | |||
| // // | // // | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| where: | where: | |||
| o Next Header: Defined in [RFC8200] | o Next Header: Defined in [RFC8200] | |||
| o Hdr Ext Len: Defined in [RFC8200] | o Hdr Ext Len: Defined in [RFC8200] | |||
| o Routing Type: TBD, to be assigned by IANA (suggested value: 4). | o Routing Type: TBD, to be assigned by IANA (suggested value: 4). | |||
| o Segments Left: Defined in [RFC8200]. See Section 3.2 for detailed | o Segments Left: Defined in [RFC8200] | |||
| usage during SRH processing. | ||||
| o Last Entry: contains the index (zero based), in the Segment List, | o Last Entry: contains the index (zero based), in the Segment List, | |||
| of the last element of the Segment List. | of the last element of the Segment List. | |||
| o Flags: 8 bits of flags. Following flags are defined: | o Flags: 8 bits of flags. Following flags are defined: | |||
| 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| | U |H| U | | | U |H| U | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| U: Unused and for future use. SHOULD be 0 on transmission and | U: Unused and for future use. SHOULD be 0 on transmission and | |||
| MUST be ignored on receipt. | MUST be ignored on receipt. | |||
| H-flag: HMAC flag. If set, the HMAC TLV is present and is | H-flag: HMAC flag. If set, the HMAC TLV is present and is | |||
| encoded as the last TLV of the SRH. In other words, the last | encoded as the last TLV of the SRH. In other words, the last | |||
| 36 octets of the SRH represent the HMAC information. See | 36 octets of the SRH represent the HMAC information. See | |||
| Section 3.1.2 for details on the HMAC TLV. | Section 2.1.2 for details on the HMAC TLV. | |||
| o Tag: tag a packet as part of a class or group of packets, e.g., | o Tag: tag a packet as part of a class or group of packets, e.g., | |||
| packets sharing the same set of properties. When tag is not used | packets sharing the same set of properties. When tag is not used | |||
| at source it SHOULD be set to zero on transmission. When tag is | at source it SHOULD be set to zero on transmission. When tag is | |||
| not used during SRH Processing it MUST be ignored. The allocation | not used during SRH Processing it MUST be ignored. The allocation | |||
| and use of tag is outside the scope of this document. | and use of tag is outside the scope of this document. | |||
| o Segment List[n]: 128 bit IPv6 addresses representing the nth | o Segment List[n]: 128 bit IPv6 addresses representing the nth | |||
| segment in the Segment List. The Segment List is encoded starting | segment in the Segment List. The Segment List is encoded starting | |||
| from the last segment of the path. I.e., the first element of the | from the last segment of the SR Policy. I.e., the first element | |||
| segment list (Segment List [0]) contains the last segment of the | of the segment list (Segment List [0]) contains the last segment | |||
| path, the second element contains the penultimate segment of the | of the SR Policy, the second element contains the penultimate | |||
| path and so on. | segment of the SR Policy and so on. | |||
| o Type Length Value (TLV) are described in Section 3.1. | o Type Length Value (TLV) are described in Section 2.1. | |||
| 3.1. SRH TLVs | 2.1. SRH TLVs | |||
| This section defines TLVs of the Segment Routing Header. | This section defines TLVs of the Segment Routing Header. | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+----------------------- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+----------------------- | |||
| | Type | Length | Variable length data | | Type | Length | Variable length data | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+----------------------- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+----------------------- | |||
| Type: An 8 bit value. Unrecognized Types MUST be ignored on receipt. | Type: An 8 bit value. Unrecognized Types MUST be ignored on receipt. | |||
| Length: The length of the Variable length data. It is RECOMMENDED | Length: The length of the Variable length data. It is RECOMMENDED | |||
| that the total length of new TLVs be multiple of 8 bytes to avoid the | that the total length of new TLVs be multiple of 8 bytes to avoid the | |||
| use of Padding TLVs. | use of Padding TLVs. | |||
| Variable length data: Length bytes of data that is specific to the | Variable length data: Length bytes of data that is specific to the | |||
| Type. | Type. | |||
| Type Length Value (TLV) contain optional information that may be used | Type Length Value (TLV) contain optional information that may be used | |||
| by the node identified in the DA of the packet. The information | by the node identified in the Destination Address (DA) of the packet. | |||
| carried in the TLVs is not intended to be used by the routing layer. | The information carried in the TLVs is not intended to be used by the | |||
| Typically, TLVs carry information that is consumed by other | routing layer. Typically, TLVs carry information that is consumed by | |||
| components (e.g.: OAM) than the routing function. | other components (e.g.: OAM) than the routing function. | |||
| Each TLV has its own length, format and semantic. The code-point | Each TLV has its own length, format and semantic. The code-point | |||
| allocated (by IANA) to each TLV Type defines both the format and the | allocated (by IANA) to each TLV Type defines both the format and the | |||
| semantic of the information carried in the TLV. Multiple TLVs may be | semantic of the information carried in the TLV. Multiple TLVs may be | |||
| encoded in the same SRH. | encoded in the same SRH. | |||
| TLVs may change en route at each segment. To identify when a TLV | TLVs may change en route at each segment. To identify when a TLV | |||
| type may change en route the most significant bit of the Type has the | type may change en route the most significant bit of the Type has the | |||
| following significance: | following significance: | |||
| skipping to change at page 8, line 44 ¶ | skipping to change at page 7, line 11 ¶ | |||
| the "Type" and "Length" fields. | the "Type" and "Length" fields. | |||
| The following TLVs are defined in this document: | The following TLVs are defined in this document: | |||
| Padding TLV | Padding TLV | |||
| HMAC TLV | HMAC TLV | |||
| Additional TLVs may be defined in the future. | Additional TLVs may be defined in the future. | |||
| 3.1.1. Padding TLVs | 2.1.1. Padding TLVs | |||
| There are two types of padding TLVs, pad0 and padN, the following | There are two types of padding TLVs, pad0 and padN, the following | |||
| applies to both: | applies to both: | |||
| Padding TLVs are optional and more than one Padding TLV MUST NOT | Padding TLVs are optional and more than one Padding TLV MUST NOT | |||
| appear in the SRH. | appear in the SRH. | |||
| The Padding TLVs are used to align the SRH total length on the 8 | The Padding TLVs are used to align the SRH total length on the 8 | |||
| octet boundary. | octet boundary. | |||
| skipping to change at page 9, line 19 ¶ | skipping to change at page 7, line 33 ¶ | |||
| TLV before the HMAC TLV (if HMAC TLV is present). | TLV before the HMAC TLV (if HMAC TLV is present). | |||
| When present, a PadN TLV MUST have a length from 0 to 5 in order | When present, a PadN TLV MUST have a length from 0 to 5 in order | |||
| to align the SRH total length on a 8-octet boundary. | to align the SRH total length on a 8-octet boundary. | |||
| Padding TLVs are ignored by a node processing the SRH TLV, even if | Padding TLVs are ignored by a node processing the SRH TLV, even if | |||
| more than one is present. | more than one is present. | |||
| Padding TLVs are ignored during ICV calculation. | Padding TLVs are ignored during ICV calculation. | |||
| 3.1.1.1. PAD0 | 2.1.1.1. PAD0 | |||
| 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| | Type | | | Type | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Type: to be assigned by IANA (Suggested value 128) | Type: to be assigned by IANA (Suggested value 128) | |||
| A single Pad0 TLV MUST be used when a single byte of padding is | A single Pad0 TLV MUST be used when a single byte of padding is | |||
| required. If more than one byte of padding is required a Pad0 TLV | required. If more than one byte of padding is required a Pad0 TLV | |||
| MUST NOT be used, the PadN TLV MUST be used. | MUST NOT be used, the PadN TLV MUST be used. | |||
| 3.1.1.2. PADN | 2.1.1.2. PADN | |||
| 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 | Padding (variable) | | | Type | Length | Padding (variable) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| // Padding (variable) // | // Padding (variable) // | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type: to be assigned by IANA (suggested value 129). | Type: to be assigned by IANA (suggested value 129). | |||
| Length: 0 to 5 | Length: 0 to 5 | |||
| Padding: Length octets of padding. Padding bits have no | Padding: Length octets of padding. Padding bits have no | |||
| semantics. They SHOULD be set to 0 on transmission and MUST be | semantics. They SHOULD be set to 0 on transmission and MUST be | |||
| ignored on receipt. | ignored on receipt. | |||
| The PadN TLV MUST be used when more than one byte of padding is | The PadN TLV MUST be used when more than one byte of padding is | |||
| required. | required. | |||
| 3.1.2. HMAC TLV | 2.1.2. HMAC TLV | |||
| HMAC TLV is optional and contains the HMAC information. The HMAC TLV | HMAC TLV is optional and contains the HMAC information. The HMAC TLV | |||
| has the following format: | 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 | RESERVED | | | Type | Length | RESERVED | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | HMAC Key ID (4 octets) | | | HMAC Key ID (4 octets) | | |||
| skipping to change at page 11, line 5 ¶ | skipping to change at page 9, line 19 ¶ | |||
| o When present, the HMAC TLV MUST be encoded as the last TLV of the | o When present, the HMAC TLV MUST be encoded as the last TLV of the | |||
| SRH. | SRH. | |||
| o If the HMAC TLV is present, the SRH H-Flag (Figure 2) MUST be set. | o If the HMAC TLV is present, the SRH H-Flag (Figure 2) MUST be set. | |||
| Nodes processing SRH SHOULD process the HMAC TLV only when the | Nodes processing SRH SHOULD process the HMAC TLV only when the | |||
| H-Flag is set, and local policy. | H-Flag is set, and local policy. | |||
| o When the H-flag is set in the SRH, the router inspecting the SRH | o When the H-flag is set in the SRH, the router inspecting the SRH | |||
| MUST find the HMAC TLV in the last 38 octets of the SRH. | MUST find the HMAC TLV in the last 38 octets of the SRH. | |||
| 3.2. SRH Processing | 3. SR Nodes | |||
| Extension header processing is as defined in RFC8200 for packets | ||||
| destined to a local IPv6 address. If SRH is present, it is processed | ||||
| as follows (DA represents the destination address in the IPv6 | ||||
| header): | ||||
| 1. IF the DA is in My Local SID Table | ||||
| 2. The function associated with the DA is processed. | ||||
| (Examples are as described in section 4). | ||||
| 3. ELSE | ||||
| 4. Treat the extension header as unrecognized | ||||
| and process as defined in RFC8200 section 4.4. | ||||
| 4. SRH Functions | ||||
| Segment Routing architecture, as defined in | ||||
| [I-D.ietf-spring-segment-routing] defines a segment as an instruction | ||||
| or, more generally, a set of instructions (function). | ||||
| In this section we review two functions that may be associated to a | ||||
| segment: | ||||
| o End: the endpoint (End) function is the base of the source routing | ||||
| paradigm. It consists of updating the DA with the next segment | ||||
| and forward the packet accordingly. | ||||
| o End.X: The endpoint layer-3 cross-connect function. | ||||
| Other functions may be defined in other documents. | There are different types of nodes that may be involved in segment | |||
| routing networks: source SR nodes originate packets with a segment in | ||||
| the destination address of the IPv6 header, transit nodes that | ||||
| forward packets destined to a remote segment, and segment endpoint | ||||
| nodes that process a local segment in the destination address of an | ||||
| IPv6 header. | ||||
| 4.1. Endpoint Function (End) | 3.1. Source SR Node | |||
| The Endpoint function (End) is the most basic function. | A Source SR Node is any node that originates an IPv6 packet with a | |||
| segment (i.e. SRv6 SID) in the destination address of the IPv6 | ||||
| header. The packet leaving the source SR Node may or may not contain | ||||
| an SRH. This includes either: | ||||
| When the endpoint node receives a packet destined to DA "S" and S is | A host originating an IPv6 packet. | |||
| an entry in the My Local SID Table and the function associated with S | ||||
| in that entry is "End" then the endpoint does: | ||||
| 1. IF SegmentsLeft > 0 THEN | An SR domain ingress router encapsulating a received packet in an | |||
| 2. decrement SL | outer IPv6 header, followed by an optional SRH. | |||
| 3. update the IPv6 DA with SRH[SL] | ||||
| 4. FIB lookup on updated DA | ||||
| 5. forward accordingly to the matched entry | ||||
| 6. ELSE IF SID is assigned to an interface | ||||
| 7. proceed to process the next header | ||||
| 8. ELSE | ||||
| 9. drop the packet | ||||
| It has to be noted that: | ||||
| o The End function performs the FIB lookup in the forwarding table | The mechanism through which a segment in the destination address of | |||
| of the ingress interface. | the IPv6 header and the Segment List in the SRH, is derived is | |||
| outside the scope of this document. For example, the Segment List | ||||
| may be obtained through local SR Policy computation, local | ||||
| configuration, interaction with a controller instantiating an SR | ||||
| Policy, or any other mechanism. | ||||
| o An SRv6-capable node MUST include the FlowLabel of the IPv6 header | 3.2. Transit Node | |||
| in its hash computation for ECMP load-balancing as described in | ||||
| Section 5.4. | ||||
| 4.2. End.X: Endpoint with Layer-3 cross-connect | A transit node is any node forwarding an IPv6 packet where the | |||
| destination address of that packet is not locally configured as a | ||||
| segment nor a local interface. A transit node is not required to be | ||||
| capable of processing a segment nor SRH. | ||||
| When the endpoint node receives a packet destined to DA "S" and S is | 3.3. SR Segment Endpoint Node | |||
| an entry in the My Local SID Table and the function associated with S | ||||
| in that entry is "End.X" then the endpoint does: | ||||
| 1. IF SegmentsLeft > 0 THEN | A SR segment endpoint node is any node receiving an IPv6 packet where | |||
| 2. decrement SL | the destination address of that packet is locally configured as a | |||
| 3. update the IPv6 DA with SRH[SL] | segment or local interface. | |||
| 4. forward to layer-3 adjacency bound to the SID "S" | ||||
| 5. ELSE | ||||
| 6. drop the packet | ||||
| It has to be noted that: | 4. Packet Processing | |||
| o If an array of layer-3 adjacencies is bound to the End.X SID, one | This section describes SRv6 packet processing at the Source, Transit | |||
| entry of the array is selected based on a hash of the packet's | and Segment Endpoint nodes. | |||
| header as described in Section 5.4 | ||||
| o An End.X function does not allow decaps. An End.X SID cannot be | 4.1. Source SR Node | |||
| the last SID of an SRH and cannot be the DA of a packet without | ||||
| SRH. | ||||
| o The End.X function is required to express an explicit path through | A Source node steers a packet into an SR Policy and the SRH is | |||
| an IP network. | created as follows: | |||
| o The End.X function is the SRv6 instantiation of a Adjacency SID as | Next Header and Hdr Ext Len fields are set as specified in | |||
| defined in [I-D.ietf-spring-segment-routing]. | [RFC8200]. | |||
| o Note that with SR-MPLS ([I-D.ietf-spring-segment-routing-mpls]), | Routing Type field is set as TBD (to be allocated by IANA, | |||
| an AdjSID is typically preceded by a PrefixSID. This is unlikely | suggested value 4). | |||
| in SRv6, most likely an End.X SID is globally routed address of N. | ||||
| o If a node N has 30 outgoing interfaces to 30 neighbors, usually | The DA of the packet is set with the value of the first segment. | |||
| the operator would explicitly instantiate 30 End.X SIDs at N: one | ||||
| per layer-3 adjacency to a neighbor. Potentially, more End.X | ||||
| could be explicitly defined (groups of layer-3 adjacencies to the | ||||
| same neighbor or to different neighbors). | ||||
| o If node N has a bundle outgoing interface I to a neighbor Q made | The first element of the SRH Segment List is the ultimate segment. | |||
| of 10 member links, N may allocate up to 11 End.X local SIDs for | The second element is the penultimate segment and so on. | |||
| that bundle: one for the bundle itself and then up to one for each | ||||
| member link. This is the equivalent of the L2-Link Adj SID in SR- | ||||
| MPLS ([I-D.ietf-isis-l2bundles]). | ||||
| 5. SR Nodes | The Segments Left field is set to n-1 where n is the number of | |||
| elements in the SR Policy. | ||||
| There are different types of nodes that may be involved in segment | The Last Entry field is set to n-1 where n is the number of | |||
| routing networks: source nodes that originate packets with an SRH, | elements in the SR Policy. | |||
| transit nodes that forward packets having an SRH and segment endpoint | ||||
| nodes that MUST process the SRH. | ||||
| 5.1. Source SR Node | HMAC TLV may be set according to Section 6. | |||
| A Source SR Node can be any node originating an IPv6 packet with its | If the segment list contains a single segment and there is no need | |||
| IPv6 and Segment Routing Headers. This include either: | for information in flag or TLV, then the SRH MAY be omitted. | |||
| A host originating an IPv6 packet. | The packet is forwarded toward the packet's Destination Address | |||
| (the first segment). | ||||
| An SR domain ingress router encapsulating a received packet in an | 4.1.1. Reduced SRH | |||
| outer IPv6 header followed by an SRH. | ||||
| The mechanism through which a Segment List is derived is outside the | When a source does not require the entire SID list to be preserved in | |||
| scope of this document. As an example, the Segment List may be | the SRH, a reduced SRH may be used. | |||
| obtained through: | ||||
| Local path computation. | A reduced SRH does not contain the first segment of the related SR | |||
| Policy (the first segment is the one already in the DA of the IPv6 | ||||
| header), and the Last Entry field is set to n-2 where n is the number | ||||
| of elements in the SR Policy. | ||||
| Local configuration. | 4.2. Transit Node | |||
| Interaction with a centralized controller delivering the path. | As specified in [RFC8200], the only node allowed to inspect the | |||
| Routing Extension Header (and therefore the SRH), is the node | ||||
| corresponding to the DA of the packet. Any other transit node MUST | ||||
| NOT inspect the underneath routing header and MUST forward the packet | ||||
| toward the DA according to its IPv6 routing table. | ||||
| Any other mechanism. | When a SID is in the destination address of an IPv6 header of a | |||
| packet, it's routed through an IPv6 network as an IPv6 address. | ||||
| SIDs, or the prefix(es) covering SIDs, and their reachability may be | ||||
| distributed by means outside the scope of this document. For | ||||
| example, [RFC5308] or [RFC5340] may be used to advertise a prefix | ||||
| covering the SIDs on a node. | ||||
| The following are the steps of the creation of the SRH: | 4.3. Segment Endpoint Node | |||
| Next Header and Hdr Ext Len fields are set as specified in | Without constraining the details of an implementation, the Segment | |||
| [RFC8200]. | Endpoint Node creates Forwarding Information Base (FIB) entries for | |||
| its local SIDs. | ||||
| Routing Type field is set as TBD (to be allocated by IANA, | When an SRv6-capable node receives an IPv6 packet, it performs a | |||
| suggested value 4). | longest-prefix-match lookup on the packets destination address. This | |||
| lookup can return any of the following: | ||||
| The DA of the packet is set with the value of the first segment. | A FIB entry that represents a locally instantiated SRv6 SID | |||
| A FIB entry that represents a local interface, not locally | ||||
| instantiated as an SRv6 SID | ||||
| A FIB entry that represents a non-local route | ||||
| No Match | ||||
| The first element of the segment list is the last segment (the | 4.3.1. FIB Entry Is Locally Instantiated SRv6 END SID | |||
| final DA of the packet). The second element is the penultimate | ||||
| segment and so on. | ||||
| In other words, the Segment List is encoded in the reverse order | This document, and section, defines a single SRv6 SID called END. | |||
| of the path. | Future documents may define additional SRv6 SIDs. In which case, the | |||
| entire content of this section will be defined in that document. | ||||
| The Segments Left field is set to n-1 where n is the number of | If the FIB entry represents a locally instantiated SRv6 SID, process | |||
| elements in the Segment List. | the next header of the IPv6 header as defined in section 4 of | |||
| [RFC8200] until the upper-layer header, or "No Next Header" is | ||||
| reached. | ||||
| The Last_Entry field is set to n-1 where n is the number of | When an SRH is processed { | |||
| elements in the Segment List. | If Segments Left is equal to zero { | |||
| Skip SRH Processing | ||||
| } | ||||
| Else { | ||||
| If Segments Left is greater than (Last Entry+1) { | ||||
| Send an ICMP Parameter Problem, Code 0, message to the | ||||
| Source Address, pointing to the Segments Left field, and | ||||
| discard the packet. | ||||
| } | ||||
| Else { | ||||
| Decrement Segments Left by 1. | ||||
| Copy Segment List[Segments Left] from the SRH to the | ||||
| destination address of the IPv6 header. | ||||
| If the IPv6 Hop Limit is less than or equal to 1 { | ||||
| Send an ICMP Time Exceeded -- Hop Limit Exceeded in | ||||
| Transit message to the Source Address and discard | ||||
| the packet. | ||||
| } | ||||
| Else { | ||||
| Decrement the Hop Limit by 1 | ||||
| Resubmit the packet to the IPv6 module for transmission | ||||
| to the new destination. | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| HMAC TLV may be set according to Section 6. | If the upper-layer header or No Next Header is reached { | |||
| Send an ICMP destination unreachable to | ||||
| the Source Address and discard the packet. | ||||
| } | ||||
| If the segment list contains a single segment and there is no need | 4.3.2. FIB Entry is a Local Interface | |||
| for information in flag or TLV, then the SRH MAY be omitted. | ||||
| The packet is sent towards the packet's DA (the first segment). | If the FIB entry represents a local interface, not locally | |||
| instantiated as an SRv6 SID, the SRH is processed as follows: | ||||
| 5.2. Transit Node | If Segments Left is zero, the node must ignore the Routing header | |||
| and proceed to process the next header in the packet, whose type | ||||
| is identified by the Next Header field in the Routing header. | ||||
| As specified in [RFC8200], the only node who is allowed to inspect | If Segments Left is non-zero, the node must discard the packet and | |||
| the Routing Extension Header (and therefore the SRH), is the node | send an ICMP Parameter Problem, Code 0, message to the packet's | |||
| corresponding to the DA of the packet. Any other transit node MUST | Source Address, pointing to the unrecognized Routing Type. | |||
| NOT inspect the underneath routing header and MUST forward the packet | ||||
| towards the DA and according to the IPv6 routing table. | ||||
| As a generic security measure, any service provider will block any | 4.3.3. FIB Entry Is A Non-Local Route | |||
| packet destined to one of its internal routers, especially if these | ||||
| packets have an extension header in it. | ||||
| 5.3. SR Segment Endpoint Node | Processing is not changed by this document. | |||
| The SR segment endpoint node is the node whose My Local SID | 4.3.4. FIB Entry Is A No Match | |||
| Table contains an entry for the DA of the packet. | ||||
| The segment endpoint node executes the function bound to the SID as | Processing is not changed by this document. | |||
| per the matched My Local SID entry (Section 4). | ||||
| 5.4. Load Balancing and ECMP | 4.4. Load Balancing and ECMP | |||
| Within an SR domain, an SR source node encapsulates a packet in an | Within an SR domain, an SR source node encapsulates a packet in an | |||
| outer IPv6 header for transport to an endpoint. The SR source node | outer IPv6 header for transport to an endpoint. The SR source node | |||
| MUST impose a Flow Label computed based on the inner packet. The | MUST impose a flow label computed based on the inner packet. The | |||
| computation of the flow label is as recommended in [RFC6438] for the | computation of the flow label is as recommended in [RFC6438] for the | |||
| sending TEP. | sending Tunnel End Point. | |||
| At any transit node within an SR domain, the flow label MUST be used | At any transit node within an SR domain, the flow label MUST be used | |||
| as defined in [RFC6438] to calculate the ECMP hash toward the | as defined in [RFC6438] to calculate the ECMP hash toward the | |||
| destination address. | destination address. If flow label is not used, the transit node may | |||
| hash all packets between a pair of SR Edge nodes to the same link. | ||||
| At an SR segment endpoint node, the flow label MUST be used as | At an SR segment endpoint node, the flow label MUST be used as | |||
| defined in [RFC6438] to calculate any ECMP hash used to forward the | defined in [RFC6438] to calculate any ECMP hash used to forward the | |||
| processed packet to the next segment. | processed packet to the next segment. | |||
| 5. Illustrations | ||||
| This section provides illustrations of SRv6 packet processing at | ||||
| source, transit and endpoint nodes. | ||||
| 5.1. Abstract Representation of an SRH | ||||
| For a node k, its IPv6 address is represented as Ak, its SRv6 SID is | ||||
| represented as Sk. | ||||
| IPv6 headers are represented as the tuple of (source, destination). | ||||
| For example, a packet with source address A1 and destination address | ||||
| A2 is represented as (A1,A2). The payload of the packet is omitted. | ||||
| An SR Policy is a list of segments. A list of segments is | ||||
| represented as <S1,S2,S3> where S1 is the first SID to visit, S2 is | ||||
| the second SID to visit and S3 is the last SID to visit. | ||||
| (SA,DA) (S3, S2, S1; SL) represents an IPv6 packet with: | ||||
| o Source Address is SA, Destination Addresses is DA, and next-header | ||||
| is SRH. | ||||
| o SRH with SID list <S1, S2, S3> with SegmentsLeft = SL. | ||||
| o Note the difference between the <> and () symbols. <S1, S2, S3> | ||||
| represents a SID list where the leftmost segment is the first | ||||
| segment. Whereas, (S3, S2, S1; SL) represents the same SID list | ||||
| but encoded in the SRH Segment List format where the leftmost | ||||
| segment is the last segment. When referring to an SR policy in a | ||||
| high-level use-case, it is simpler to use the <S1, S2, S3> | ||||
| notation. When referring to an illustration of detailed behavior, | ||||
| the (S3, S2, S1; SL) notation is more convenient. | ||||
| At its SR Policy headend, the Segment List <S1,S2,S3> results in SRH | ||||
| (S3,S2,S1; SL=2) represented fully as: | ||||
| Segments Left=2 | ||||
| Last Entry=2 | ||||
| Flags=0 | ||||
| Tag=0 | ||||
| Segment List[0]=S3 | ||||
| Segment List[1]=S2 | ||||
| Segment List[2]=S1 | ||||
| 5.2. Example Topology | ||||
| The following topology is used in examples below: | ||||
| + * * * * * * * * * * * * * * * * * * * * + | ||||
| * [8] [9] * | ||||
| | | | ||||
| * | | * | ||||
| [1]----[3]--------[5]----------------[6]---------[4]---[2] | ||||
| * | | * | ||||
| | | | ||||
| * | | * | ||||
| +--------[7]-------+ | ||||
| * * | ||||
| + * * * * * * * SR Domain * * * * * * * + | ||||
| o 3 and 4 are SR Domain edge routers | ||||
| o 5, 6, and 7 are all SR Domain routers | ||||
| o 8 and 9 are hosts within the SR Domain | ||||
| o 1 and 2 are hosts outside the SR Domain | ||||
| 5.3. Source SR Node | ||||
| 5.3.1. Intra SR Domain Packet | ||||
| When host 8 sends a packet to host 9 via an SR Policy <S7,A9> the | ||||
| packet is | ||||
| P1: (A8,S7)(A9,S7; SL=1) | ||||
| 5.3.1.1. Reduced Variant | ||||
| When host 8 sends a packet to host 9 via an SR Policy <S7,A9> and it | ||||
| wants to use a reduced SRH, the packet is | ||||
| P2: (A8,S7)(A9; SL=1) | ||||
| 5.3.2. Transit Packet Through SR Domain | ||||
| When host 1 sends a packet to host 2, the packet is | ||||
| P3: (A1,A2) | ||||
| The SR Domain ingress router 3 receives P3 and steers it to SR Domain | ||||
| egress router 4 via an SR Policy <S7, S4>. Router 3 encapsulates the | ||||
| received packet P3 in an outer header with an SRH. The packet is | ||||
| P4: (A3, S7)(S4, S7; SL=1)(A1, A2) | ||||
| If the SR Policy contains only one segment (the egress router 4), the | ||||
| ingress Router 3 encapsulates P3 into an outer header (A3, S4). The | ||||
| packet is | ||||
| P5: (A3, S4)(A1, A2) | ||||
| 5.3.2.1. Reduced Variant | ||||
| The SR Domain ingress router 3 receives P3 and steers it to SR Domain | ||||
| egress router 4 via an SR Policy <S7, S4>. If router 3 wants to use | ||||
| a reduced SRH, Router 3 encapsulates the received packet P3 in an | ||||
| outer header with a reduced SRH. The packet is | ||||
| P6: (A3, S7)(S4; SL=1)(A1, A2) | ||||
| 5.4. Transit Node | ||||
| Nodes 5 acts as transit nodes for packet P1, and sends packet | ||||
| P1: (A8,S7)(A9,S7;SL=1) | ||||
| on the interface toward node 7. | ||||
| 5.5. SR End Node | ||||
| Node 7 receives packet P1 and, using the logic in section 4.3.1, | ||||
| sends packet | ||||
| P7: (A8,A9)(A9,S7; SL=0) | ||||
| on the interface toward router 6. | ||||
| 6. Security Considerations | 6. Security Considerations | |||
| This section analyzes the security threat model, the security issues | This section analyzes the security threat model, the security issues | |||
| and proposed solutions related to the new Segment Routing Header. | and proposed solutions related to the new Segment Routing Header. | |||
| The Segment Routing Header (SRH) is simply another type of the | The Segment Routing Header (SRH) is simply another type of the | |||
| routing header as described in [RFC8200] and is: | routing header as described in [RFC8200] and is: | |||
| o Added by an SR edge router when entering the segment routing | o Added by an SR edge router when entering the segment routing | |||
| domain or by the originating host itself. The source host can | domain or by the originating host itself. The source host can | |||
| even be outside the SR domain; | even be outside the SR domain; | |||
| o inspected and acted upon when reaching the destination address of | o inspected and acted upon when reaching the destination address of | |||
| the IP header per [RFC8200]. | the IP header per [RFC8200]. | |||
| Per [RFC8200], routers on the path that simply forward an IPv6 packet | Per [RFC8200], routers on the path that simply forward an IPv6 packet | |||
| (i.e. the IPv6 destination address is none of theirs) will never | (i.e. the IPv6 destination address is none of theirs) will never | |||
| inspect and process the content of the SRH. Routers whose one | inspect and process the content of the SRH. Routers whose FIB | |||
| interface IPv6 address equals the destination address field of the | contains a locally instantiated SRv6 SID equal to the destination | |||
| IPv6 packet MUST parse the SRH and, if supported and if the local | address field of the IPv6 packet MUST parse the SRH and, if supported | |||
| configuration allows it, MUST act accordingly to the SRH content. | and if the local configuration allows it, MUST act accordingly to the | |||
| SRH content. | ||||
| As specified in [RFC8200], the default behavior of a non SR-capable | As specified in [RFC8200], the default behavior of a non SR-capable | |||
| router upon receipt of an IPv6 packet with SRH destined to an address | router upon receipt of an IPv6 packet with SRH destined to an address | |||
| of its, is to: | of its, is to: | |||
| o ignore the SRH completely if the Segment Left field is 0 and | o ignore the SRH completely if the Segment Left field is 0 and | |||
| proceed to process the next header in the IPv6 packet; | proceed to process the next header in the IPv6 packet; | |||
| o discard the IPv6 packet if Segment Left field is greater than 0, | o discard the IPv6 packet if Segment Left field is greater than 0, | |||
| it MAY send a Parameter Problem ICMP message back to the Source | it MAY send a Parameter Problem ICMP message back to the Source | |||
| skipping to change at page 17, line 16 ¶ | skipping to change at page 18, line 27 ¶ | |||
| applicable. | applicable. | |||
| 6.1.3. Service stealing threat | 6.1.3. Service stealing threat | |||
| Segment routing is used for added value services, there is also a | Segment routing is used for added value services, there is also a | |||
| need to prevent non-participating nodes to use those services; this | need to prevent non-participating nodes to use those services; this | |||
| is called 'service stealing prevention'. | is called 'service stealing prevention'. | |||
| 6.1.4. Topology disclosure | 6.1.4. Topology disclosure | |||
| The SRH may also contains IPv6 addresses of some intermediate SR- | The SRH may also contains SIDs of some intermediate SR-nodes in the | |||
| nodes in the path towards the destination, this obviously reveals | path towards the destination, this obviously reveals those addresses | |||
| those addresses to the potentially hostile attackers if those | to the potentially hostile attackers if those attackers are able to | |||
| attackers are able to intercept packets containing SRH. On the other | intercept packets containing SRH. On the other hand, if the attacker | |||
| hand, if the attacker can do a traceroute whose probes will be | can do a traceroute whose probes will be forwarded along the SR | |||
| forwarded along the SR path, then there is little learned by | Policy, then there is little learned by intercepting the SRH itself. | |||
| intercepting the SRH itself. | ||||
| 6.1.5. ICMP Generation | 6.1.5. ICMP Generation | |||
| Per Section 4.4 of [RFC8200], when destination nodes (i.e. where the | Per Section 4.4 of [RFC8200], when destination nodes (i.e. where the | |||
| destination address is one of theirs) receive a Routing Header with | destination address is one of theirs) receive a Routing Header with | |||
| unsupported Routing Type, the required behavior is: | unsupported Routing Type, the required behavior is: | |||
| o If Segments Left is zero, the node must ignore the Routing header | o If Segments Left is zero, the node must ignore the Routing header | |||
| and proceed to process the next header in the packet. | and proceed to process the next header in the packet. | |||
| skipping to change at page 20, line 51 ¶ | skipping to change at page 22, line 17 ¶ | |||
| 6.3.1. Nodes within the SR domain | 6.3.1. Nodes within the SR domain | |||
| An SR domain is defined as a set of interconnected routers where all | An SR domain is defined as a set of interconnected routers where all | |||
| routers at the perimeter are configured to add and act on SRH. Some | routers at the perimeter are configured to add and act on SRH. Some | |||
| routers inside the SR domain can also act on SRH or simply forward | routers inside the SR domain can also act on SRH or simply forward | |||
| IPv6 packets. | IPv6 packets. | |||
| The routers inside an SR domain can be trusted to generate SRH and to | The routers inside an SR domain can be trusted to generate SRH and to | |||
| process SRH received on interfaces that are part of the SR domain. | process SRH received on interfaces that are part of the SR domain. | |||
| These nodes MUST drop all SRH packets received on an interface that | These nodes MUST drop all SRH packets received on an interface that | |||
| is not part of the SR domain and containing an SRH whose HMAC field | is not part of the SR domain, destined to a locally instantiated SID, | |||
| cannot be validated by local policies. This includes obviously | and containing an SRH whose HMAC field cannot be validated by local | |||
| packet with an SRH generated by a non-cooperative SR domain. | policies. This includes obviously packet with an SRH generated by a | |||
| non-cooperative SR domain. | ||||
| If the validation fails, then these packets MUST be dropped, ICMP | If the validation fails, then these packets MUST be dropped, ICMP | |||
| error messages (parameter problem) SHOULD be generated (but rate | error messages (parameter problem) SHOULD be generated (but rate | |||
| limited) and SHOULD be logged. | limited) and SHOULD be logged. | |||
| 6.3.2. Nodes outside of the SR domain | 6.3.2. Nodes outside of the SR domain | |||
| Nodes outside of the SR domain cannot be trusted for physical | Nodes outside of the SR domain cannot be trusted for physical | |||
| security; hence, they need to request by some trusted means (outside | security; hence, they need to request by some trusted means (outside | |||
| the scope of this document) a complete SRH for each new connection | the scope of this document) a complete SRH for each new connection | |||
| (i.e. new destination address). The received SRH MUST include an | (i.e. new destination address). The received SRH MUST include an | |||
| HMAC TLV which is computed correctly (see Section 6.2). | HMAC TLV which is computed correctly (see Section 6.2). | |||
| When an outside node sends a packet with an SRH and towards an SR | When an outside node sends a packet with an SRH and towards an SR | |||
| domain ingress node, the packet MUST contain the HMAC TLV (with a | domain ingress node, the packet MUST contain the HMAC TLV (with a | |||
| Key-id and HMAC fields) and the the destination address MUST be an | Key-id and HMAC fields) and the the destination address MUST be an | |||
| address of an SR domain ingress node . | address of an SR domain ingress node . | |||
| The ingress SR router, i.e., the router with an interface address | The ingress SR router, i.e., the router with a SID equal to the | |||
| equal to the destination address, MUST verify the HMAC TLV. | destination address, MUST verify the HMAC TLV. | |||
| If the validation is successful, then the packet is simply forwarded | If the validation is successful, then the packet is simply forwarded | |||
| as usual for an SR packet. As long as the packet travels within the | as usual for an SR packet. As long as the packet travels within the | |||
| SR domain, no further HMAC check needs to be done. Subsequent | SR domain, no further HMAC check needs to be done. Subsequent | |||
| routers in the SR domain MAY verify the HMAC TLV when they process | routers in the SR domain MAY verify the HMAC TLV when they process | |||
| the SRH (i.e. when they are the destination). | the SRH (i.e. when they are the destination). | |||
| If the validation fails, then this packet MUST be dropped, an ICMP | If the validation fails, then this packet MUST be dropped, an ICMP | |||
| error message (parameter problem) SHOULD be generated (but rate | error message (parameter problem) SHOULD be generated (but rate | |||
| limited) and SHOULD be logged. | limited) and SHOULD be logged. | |||
| skipping to change at page 22, line 4 ¶ | skipping to change at page 23, line 20 ¶ | |||
| knowledge on the topology. This is especially applicable when the | knowledge on the topology. This is especially applicable when the | |||
| path between the source node and the first SR domain ingress router | path between the source node and the first SR domain ingress router | |||
| is on the public Internet. | is on the public Internet. | |||
| The first remark is to state that 'security by obscurity' is never | The first remark is to state that 'security by obscurity' is never | |||
| enough; in other words, the security policy of the SR domain MUST | enough; in other words, the security policy of the SR domain MUST | |||
| assume that the internal topology and addressing is known by the | assume that the internal topology and addressing is known by the | |||
| attacker. A simple traceroute will also give the same information | attacker. A simple traceroute will also give the same information | |||
| (with even more information as all intermediate nodes between SID | (with even more information as all intermediate nodes between SID | |||
| will also be exposed). IPsec Encapsulating Security Payload | will also be exposed). IPsec Encapsulating Security Payload | |||
| [RFC4303] cannot be use to protect the SRH as per RFC4303 the ESP | [RFC4303] cannot be use to protect the SRH as per RFC4303 the ESP | |||
| header must appear after any routing header (including SRH). | header must appear after any routing header (including SRH). | |||
| To prevent a user to leverage the gained knowledge by intercepting | To prevent a user to leverage the gained knowledge by intercepting | |||
| SRH, it it recommended to apply an infrastructure Access Control List | SRH, it it recommended to apply an infrastructure Access Control List | |||
| (iACL) at the edge of the SR domain. This iACL will drop all packets | (iACL) at the edge of the SR domain. This iACL will drop all packets | |||
| from outside the SR-domain whose destination is any address of any | from outside the SR-domain whose destination is any address of any | |||
| router inside the domain. This security policy should be tuned for | router interface or SID inside the domain. This security policy | |||
| local operations. | should be tuned for local operations. | |||
| 6.3.4. Impact of BCP-38 | 6.3.4. Impact of BCP-38 | |||
| BCP-38 [RFC2827], also known as "Network Ingress Filtering", checks | BCP-38 [RFC2827], also known as "Network Ingress Filtering", checks | |||
| whether the source address of packets received on an interface is | whether the source address of packets received on an interface is | |||
| valid for this interface. The use of loose source routing such as | valid for this interface. The use of loose source routing such as | |||
| SRH forces packets to follow a path which differs from the expected | SRH forces packets to follow a path which differs from the expected | |||
| routing. Therefore, if BCP-38 was implemented in all routers inside | routing. Therefore, if BCP-38 was implemented in all routers inside | |||
| the SR domain, then SR packets could be received by an interface | the SR domain, then SR packets could be received by an interface | |||
| which is not expected one and the packets could be dropped. | which is not expected one and the packets could be dropped. | |||
| skipping to change at page 23, line 38 ¶ | skipping to change at page 24, line 52 ¶ | |||
| 8. Implementation Status | 8. Implementation Status | |||
| This section is to be removed prior to publishing as an RFC. | This section is to be removed prior to publishing as an RFC. | |||
| 8.1. Linux | 8.1. Linux | |||
| Name: Linux Kernel v4.14 | Name: Linux Kernel v4.14 | |||
| Status: Production | Status: Production | |||
| Implementation: adds SRH, performs END and END.X processing, supports | Implementation: adds SRH, performs END processing, supports HMAC TLV | |||
| HMAC TLV | ||||
| Details: https://irtf.org/anrw/2017/anrw17-final3.pdf and | Details: https://irtf.org/anrw/2017/anrw17-final3.pdf and | |||
| [I-D.filsfils-spring-srv6-interop] | [I-D.filsfils-spring-srv6-interop] | |||
| 8.2. Cisco Systems | 8.2. Cisco Systems | |||
| Name: IOS XR and IOS XE | Name: IOS XR and IOS XE | |||
| Status: Pre-production | Status: Pre-production | |||
| Implementation: adds SRH, performs END and END.X processing, no TLV | Implementation: adds SRH, performs END processing, no TLV processing | |||
| processing | ||||
| Details: [I-D.filsfils-spring-srv6-interop] | Details: [I-D.filsfils-spring-srv6-interop] | |||
| 8.3. FD.io | 8.3. FD.io | |||
| Name: VPP/Segment Routing for IPv6 | Name: VPP/Segment Routing for IPv6 | |||
| Status: Production | Status: Production | |||
| Implementation: adds SRH, performs END and END.X processing, no TLV | Implementation: adds SRH, performs END processing, no TLV processing | |||
| processing | ||||
| Details: https://wiki.fd.io/view/VPP/Segment_Routing_for_IPv6 and | Details: https://wiki.fd.io/view/VPP/Segment_Routing_for_IPv6 and | |||
| [I-D.filsfils-spring-srv6-interop] | [I-D.filsfils-spring-srv6-interop] | |||
| 8.4. Barefoot | 8.4. Barefoot | |||
| Name: Barefoot Networks Tofino NPU | Name: Barefoot Networks Tofino NPU | |||
| Status: Prototype | Status: Prototype | |||
| Implementation: performs END and END.X processing, no TLV processing | Implementation: performs END processing, no TLV processing | |||
| Details: [I-D.filsfils-spring-srv6-interop] | Details: [I-D.filsfils-spring-srv6-interop] | |||
| 8.5. Juniper | 8.5. Juniper | |||
| Name: Juniper Networks Trio and vTrio NPU's | Name: Juniper Networks Trio and vTrio NPU's | |||
| Status: Prototype & Experimental | Status: Prototype & Experimental | |||
| Implementation: SRH insertion mode, Process SID where SID is an | Implementation: SRH insertion mode, Process SID where SID is an | |||
| skipping to change at page 24, line 48 ¶ | skipping to change at page 26, line 10 ¶ | |||
| Kamran Raza, Darren Dukes, Brian Field, Daniel Bernier, Ida Leung, | Kamran Raza, Darren Dukes, Brian Field, Daniel Bernier, Ida Leung, | |||
| Jen Linkova, Ebben Aries, Tomoya Kosugi, Eric Vyncke, David Lebrun, | Jen Linkova, Ebben Aries, Tomoya Kosugi, Eric Vyncke, David Lebrun, | |||
| Dirk Steinberg, Robert Raszuk, Dave Barach, John Brzozowski, Pierre | Dirk Steinberg, Robert Raszuk, Dave Barach, John Brzozowski, Pierre | |||
| Francois, Nagendra Kumar, Mark Townsley, Christian Martin, Roberta | Francois, Nagendra Kumar, Mark Townsley, Christian Martin, Roberta | |||
| Maglione, James Connolly, Aloys Augustin contributed to the content | Maglione, James Connolly, Aloys Augustin contributed to the content | |||
| of this document. | of this document. | |||
| 10. Acknowledgements | 10. Acknowledgements | |||
| The authors would like to thank Ole Troan, Bob Hinden, Fred Baker, | The authors would like to thank Ole Troan, Bob Hinden, Ron Bonica, | |||
| Brian Carpenter, Alexandru Petrescu, Punit Kumar Jaiswal, and David | Fred Baker, Brian Carpenter, Alexandru Petrescu, Punit Kumar Jaiswal, | |||
| Lebrun for their comments to this document. | and David Lebrun for their comments to this document. | |||
| 11. References | 11. References | |||
| 11.1. Normative References | 11.1. Normative References | |||
| [FIPS180-4] | [FIPS180-4] | |||
| National Institute of Standards and Technology, "FIPS | National Institute of Standards and Technology, "FIPS | |||
| 180-4 Secure Hash Standard (SHS)", March 2012, | 180-4 Secure Hash Standard (SHS)", March 2012, | |||
| <http://csrc.nist.gov/publications/fips/fips180-4/ | <http://csrc.nist.gov/publications/fips/fips180-4/ | |||
| fips-180-4.pdf>. | fips-180-4.pdf>. | |||
| skipping to change at page 25, line 39 ¶ | skipping to change at page 26, line 48 ¶ | |||
| [RFC5095] Abley, J., Savola, P., and G. Neville-Neil, "Deprecation | [RFC5095] Abley, J., Savola, P., and G. Neville-Neil, "Deprecation | |||
| of Type 0 Routing Headers in IPv6", RFC 5095, | of Type 0 Routing Headers in IPv6", RFC 5095, | |||
| DOI 10.17487/RFC5095, December 2007, | DOI 10.17487/RFC5095, December 2007, | |||
| <https://www.rfc-editor.org/info/rfc5095>. | <https://www.rfc-editor.org/info/rfc5095>. | |||
| [RFC6407] Weis, B., Rowles, S., and T. Hardjono, "The Group Domain | [RFC6407] Weis, B., Rowles, S., and T. Hardjono, "The Group Domain | |||
| of Interpretation", RFC 6407, DOI 10.17487/RFC6407, | of Interpretation", RFC 6407, DOI 10.17487/RFC6407, | |||
| October 2011, <https://www.rfc-editor.org/info/rfc6407>. | October 2011, <https://www.rfc-editor.org/info/rfc6407>. | |||
| [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, <https://www.rfc-editor.org/info/rfc7855>. | ||||
| [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
| (IPv6) Specification", STD 86, RFC 8200, | (IPv6) Specification", STD 86, RFC 8200, | |||
| DOI 10.17487/RFC8200, July 2017, | DOI 10.17487/RFC8200, July 2017, | |||
| <https://www.rfc-editor.org/info/rfc8200>. | <https://www.rfc-editor.org/info/rfc8200>. | |||
| [RFC8354] Brzozowski, J., Leddy, J., Filsfils, C., Maglione, R., | ||||
| Ed., and M. Townsley, "Use Cases for IPv6 Source Packet | ||||
| Routing in Networking (SPRING)", RFC 8354, | ||||
| DOI 10.17487/RFC8354, March 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8354>. | ||||
| 11.2. Informative References | 11.2. Informative References | |||
| [I-D.filsfils-spring-srv6-interop] | [I-D.filsfils-spring-srv6-interop] | |||
| Filsfils, C., Clad, F., Camarillo, P., Abdelsalam, A., | Filsfils, C., Clad, F., Camarillo, P., Abdelsalam, A., | |||
| Salsano, S., Bonaventure, O., Horn, J., and J. Liste, | Salsano, S., Bonaventure, O., Horn, J., and J. Liste, | |||
| "SRv6 interoperability report", draft-filsfils-spring- | "SRv6 interoperability report", draft-filsfils-spring- | |||
| srv6-interop-00 (work in progress), March 2018. | srv6-interop-00 (work in progress), March 2018. | |||
| [I-D.filsfils-spring-srv6-network-programming] | [I-D.filsfils-spring-srv6-network-programming] | |||
| Filsfils, C., Li, Z., Leddy, J., daniel.voyer@bell.ca, d., | Filsfils, C., Li, Z., Leddy, J., daniel.voyer@bell.ca, d., | |||
| daniel.bernier@bell.ca, d., Steinberg, D., Raszuk, R., | daniel.bernier@bell.ca, d., Steinberg, D., Raszuk, R., | |||
| Matsushima, S., Lebrun, D., Decraene, B., Peirens, B., | Matsushima, S., Lebrun, D., Decraene, B., Peirens, B., | |||
| Salsano, S., Naik, G., Elmalky, H., Jonnalagadda, P., and | Salsano, S., Naik, G., Elmalky, H., Jonnalagadda, P., and | |||
| M. Sharif, "SRv6 Network Programming", draft-filsfils- | M. Sharif, "SRv6 Network Programming", draft-filsfils- | |||
| spring-srv6-network-programming-04 (work in progress), | spring-srv6-network-programming-04 (work in progress), | |||
| March 2018. | March 2018. | |||
| [I-D.ietf-isis-l2bundles] | ||||
| Ginsberg, L., Bashandy, A., Filsfils, C., Nanduri, M., and | ||||
| E. Aries, "Advertising L2 Bundle Member Link Attributes in | ||||
| IS-IS", draft-ietf-isis-l2bundles-07 (work in progress), | ||||
| May 2017. | ||||
| [I-D.ietf-isis-segment-routing-extensions] | ||||
| Previdi, S., Ginsberg, L., Filsfils, C., Bashandy, A., | ||||
| Gredler, H., Litkowski, S., Decraene, B., and J. Tantsura, | ||||
| "IS-IS Extensions for Segment Routing", draft-ietf-isis- | ||||
| segment-routing-extensions-15 (work in progress), December | ||||
| 2017. | ||||
| [I-D.ietf-ospf-ospfv3-segment-routing-extensions] | ||||
| Psenak, P., Filsfils, C., Previdi, S., Gredler, H., | ||||
| Shakir, R., Henderickx, W., and J. Tantsura, "OSPFv3 | ||||
| Extensions for Segment Routing", draft-ietf-ospf-ospfv3- | ||||
| segment-routing-extensions-11 (work in progress), January | ||||
| 2018. | ||||
| [I-D.ietf-spring-segment-routing-mpls] | [I-D.ietf-spring-segment-routing-mpls] | |||
| Bashandy, A., Filsfils, C., Previdi, S., Decraene, B., | Bashandy, A., Filsfils, C., Previdi, S., Decraene, B., | |||
| Litkowski, S., and R. Shakir, "Segment Routing with MPLS | Litkowski, S., and R. Shakir, "Segment Routing with MPLS | |||
| data plane", draft-ietf-spring-segment-routing-mpls-13 | data plane", draft-ietf-spring-segment-routing-mpls-13 | |||
| (work in progress), April 2018. | (work in progress), April 2018. | |||
| [RFC1940] Estrin, D., Li, T., Rekhter, Y., Varadhan, K., and D. | ||||
| Zappala, "Source Demand Routing: Packet Format and | ||||
| Forwarding Specification (Version 1)", RFC 1940, | ||||
| DOI 10.17487/RFC1940, May 1996, | ||||
| <https://www.rfc-editor.org/info/rfc1940>. | ||||
| [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- | [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- | |||
| Hashing for Message Authentication", RFC 2104, | Hashing for Message Authentication", RFC 2104, | |||
| DOI 10.17487/RFC2104, February 1997, | DOI 10.17487/RFC2104, February 1997, | |||
| <https://www.rfc-editor.org/info/rfc2104>. | <https://www.rfc-editor.org/info/rfc2104>. | |||
| [RFC2827] Ferguson, P. and D. Senie, "Network Ingress Filtering: | [RFC2827] Ferguson, P. and D. Senie, "Network Ingress Filtering: | |||
| Defeating Denial of Service Attacks which employ IP Source | Defeating Denial of Service Attacks which employ IP Source | |||
| Address Spoofing", BCP 38, RFC 2827, DOI 10.17487/RFC2827, | Address Spoofing", BCP 38, RFC 2827, DOI 10.17487/RFC2827, | |||
| May 2000, <https://www.rfc-editor.org/info/rfc2827>. | May 2000, <https://www.rfc-editor.org/info/rfc2827>. | |||
| [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., | ||||
| Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack | ||||
| Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, | ||||
| <https://www.rfc-editor.org/info/rfc3032>. | ||||
| [RFC4302] Kent, S., "IP Authentication Header", RFC 4302, | [RFC4302] Kent, S., "IP Authentication Header", RFC 4302, | |||
| DOI 10.17487/RFC4302, December 2005, | DOI 10.17487/RFC4302, December 2005, | |||
| <https://www.rfc-editor.org/info/rfc4302>. | <https://www.rfc-editor.org/info/rfc4302>. | |||
| [RFC4942] Davies, E., Krishnan, S., and P. Savola, "IPv6 Transition/ | [RFC4942] Davies, E., Krishnan, S., and P. Savola, "IPv6 Transition/ | |||
| Co-existence Security Considerations", RFC 4942, | Co-existence Security Considerations", RFC 4942, | |||
| DOI 10.17487/RFC4942, September 2007, | DOI 10.17487/RFC4942, September 2007, | |||
| <https://www.rfc-editor.org/info/rfc4942>. | <https://www.rfc-editor.org/info/rfc4942>. | |||
| [RFC5308] Hopps, C., "Routing IPv6 with IS-IS", RFC 5308, | [RFC5308] Hopps, C., "Routing IPv6 with IS-IS", RFC 5308, | |||
| End of changes. 95 change blocks. | ||||
| 390 lines changed or deleted | 406 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/ | ||||