| < draft-ietf-spring-srv6-network-programming-23.txt | draft-ietf-spring-srv6-network-programming-24.txt > | |||
|---|---|---|---|---|
| SPRING C. Filsfils, Ed. | SPRING C. Filsfils, Ed. | |||
| Internet-Draft P. Camarillo, Ed. | Internet-Draft P. Camarillo, Ed. | |||
| Intended status: Standards Track Cisco Systems, Inc. | Intended status: Standards Track Cisco Systems, Inc. | |||
| Expires: April 3, 2021 J. Leddy | Expires: April 10, 2021 J. Leddy | |||
| Individual Contributor | Individual Contributor | |||
| D. Voyer | D. Voyer | |||
| Bell Canada | Bell Canada | |||
| S. Matsushima | S. Matsushima | |||
| SoftBank | SoftBank | |||
| Z. Li | Z. Li | |||
| Huawei Technologies | Huawei Technologies | |||
| September 30, 2020 | October 7, 2020 | |||
| SRv6 Network Programming | SRv6 Network Programming | |||
| draft-ietf-spring-srv6-network-programming-23 | draft-ietf-spring-srv6-network-programming-24 | |||
| Abstract | Abstract | |||
| The SRv6 Network Programming framework enables a network operator or | The SRv6 Network Programming framework enables a network operator or | |||
| an application to specify a packet processing program by encoding a | an application to specify a packet processing program by encoding a | |||
| sequence of instructions in the IPv6 packet header. | sequence of instructions in the IPv6 packet header. | |||
| Each instruction is implemented on one or several nodes in the | Each instruction is implemented on one or several nodes in the | |||
| network and identified by an SRv6 Segment Identifier in the packet. | network and identified by an SRv6 Segment Identifier in the packet. | |||
| skipping to change at page 1, line 47 ¶ | skipping to change at page 1, line 47 ¶ | |||
| 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 April 3, 2021. | This Internet-Draft will expire on April 10, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 | |||
| skipping to change at page 2, line 34 ¶ | skipping to change at page 2, line 34 ¶ | |||
| 2.1. Requirements Language . . . . . . . . . . . . . . . . . . 5 | 2.1. Requirements Language . . . . . . . . . . . . . . . . . . 5 | |||
| 3. SRv6 SID . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. SRv6 SID . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.1. SID Format . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.1. SID Format . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.2. SID Allocation within an SR domain . . . . . . . . . . . 7 | 3.2. SID Allocation within an SR domain . . . . . . . . . . . 7 | |||
| 3.3. SID Reachability . . . . . . . . . . . . . . . . . . . . 9 | 3.3. SID Reachability . . . . . . . . . . . . . . . . . . . . 9 | |||
| 4. SR Endpoint Behaviors . . . . . . . . . . . . . . . . . . . . 10 | 4. SR Endpoint Behaviors . . . . . . . . . . . . . . . . . . . . 10 | |||
| 4.1. End: Endpoint . . . . . . . . . . . . . . . . . . . . . . 11 | 4.1. End: Endpoint . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 4.1.1. Upper-Layer Header . . . . . . . . . . . . . . . . . 12 | 4.1.1. Upper-Layer Header . . . . . . . . . . . . . . . . . 12 | |||
| 4.2. End.X: Layer-3 Cross-Connect . . . . . . . . . . . . . . 12 | 4.2. End.X: Layer-3 Cross-Connect . . . . . . . . . . . . . . 12 | |||
| 4.3. End.T: Specific IPv6 Table Lookup . . . . . . . . . . . . 13 | 4.3. End.T: Specific IPv6 Table Lookup . . . . . . . . . . . . 13 | |||
| 4.4. End.DX6: Decapsulation and IPv6 Cross-Connect . . . . . . 13 | 4.4. End.DX6: Decapsulation and IPv6 Cross-Connect . . . . . . 14 | |||
| 4.5. End.DX4: Decapsulation and IPv4 Cross-Connect . . . . . . 14 | 4.5. End.DX4: Decapsulation and IPv4 Cross-Connect . . . . . . 15 | |||
| 4.6. End.DT6: Decapsulation and Specific IPv6 Table Lookup . . 15 | 4.6. End.DT6: Decapsulation and Specific IPv6 Table Lookup . . 16 | |||
| 4.7. End.DT4: Decapsulation and Specific IPv4 Table Lookup . . 16 | 4.7. End.DT4: Decapsulation and Specific IPv4 Table Lookup . . 17 | |||
| 4.8. End.DT46: Decapsulation and Specific IP Table Lookup . . 17 | 4.8. End.DT46: Decapsulation and Specific IP Table Lookup . . 18 | |||
| 4.9. End.DX2: Decapsulation and L2 Cross-Connect . . . . . . . 18 | 4.9. End.DX2: Decapsulation and L2 Cross-Connect . . . . . . . 19 | |||
| 4.10. End.DX2V: Decapsulation and VLAN L2 Table Lookup . . . . 19 | 4.10. End.DX2V: Decapsulation and VLAN L2 Table Lookup . . . . 20 | |||
| 4.11. End.DT2U: Decapsulation and Unicast MAC L2 Table Lookup . 20 | 4.11. End.DT2U: Decapsulation and Unicast MAC L2 Table Lookup . 20 | |||
| 4.12. End.DT2M: Decapsulation and L2 Table Flooding . . . . . . 21 | 4.12. End.DT2M: Decapsulation and L2 Table Flooding . . . . . . 21 | |||
| 4.13. End.B6.Encaps: Endpoint Bound to an SRv6 Policy w/ Encaps 21 | 4.13. End.B6.Encaps: Endpoint Bound to an SRv6 Policy w/ Encaps 22 | |||
| 4.14. End.B6.Encaps.Red: End.B6.Encaps with Reduced SRH . . . . 23 | 4.14. End.B6.Encaps.Red: End.B6.Encaps with Reduced SRH . . . . 24 | |||
| 4.15. End.BM: Endpoint Bound to an SR-MPLS Policy . . . . . . . 23 | 4.15. End.BM: Endpoint Bound to an SR-MPLS Policy . . . . . . . 24 | |||
| 4.16. Flavors . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 4.16. Flavors . . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 4.16.1. PSP: Penultimate Segment Pop of the SRH . . . . . . 24 | 4.16.1. PSP: Penultimate Segment Pop of the SRH . . . . . . 25 | |||
| 4.16.2. USP: Ultimate Segment Pop of the SRH . . . . . . . . 27 | 4.16.2. USP: Ultimate Segment Pop of the SRH . . . . . . . . 28 | |||
| 4.16.3. USD: Ultimate Segment Decapsulation . . . . . . . . 27 | 4.16.3. USD: Ultimate Segment Decapsulation . . . . . . . . 28 | |||
| 5. SR Policy Headend Behaviors . . . . . . . . . . . . . . . . . 28 | 5. SR Policy Headend Behaviors . . . . . . . . . . . . . . . . . 29 | |||
| 5.1. H.Encaps: SR Headend with Encapsulation in an SRv6 Policy 29 | 5.1. H.Encaps: SR Headend with Encapsulation in an SRv6 Policy 30 | |||
| 5.2. H.Encaps.Red: H.Encaps with Reduced Encapsulation . . . . 29 | 5.2. H.Encaps.Red: H.Encaps with Reduced Encapsulation . . . . 30 | |||
| 5.3. H.Encaps.L2: H.Encaps Applied to Received L2 Frames . . . 30 | 5.3. H.Encaps.L2: H.Encaps Applied to Received L2 Frames . . . 31 | |||
| 5.4. H.Encaps.L2.Red: H.Encaps.Red Applied to Received L2 | 5.4. H.Encaps.L2.Red: H.Encaps.Red Applied to Received L2 | |||
| frames . . . . . . . . . . . . . . . . . . . . . . . . . 30 | frames . . . . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 6. Counters . . . . . . . . . . . . . . . . . . . . . . . . . . 30 | 6. Counters . . . . . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 7. Flow-based Hash Computation . . . . . . . . . . . . . . . . . 31 | 7. Flow-based Hash Computation . . . . . . . . . . . . . . . . . 32 | |||
| 8. Control Plane . . . . . . . . . . . . . . . . . . . . . . . . 31 | 8. Control Plane . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 8.1. IGP . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 | 8.1. IGP . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 8.2. BGP-LS . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 8.2. BGP-LS . . . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 8.3. BGP IP/VPN/EVPN . . . . . . . . . . . . . . . . . . . . . 32 | 8.3. BGP IP/VPN/EVPN . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 8.4. Summary . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 8.4. Summary . . . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 34 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 35 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 | |||
| 10.1. Ethernet Next Header Type . . . . . . . . . . . . . . . 34 | 10.1. Ethernet Next Header Type . . . . . . . . . . . . . . . 35 | |||
| 10.2. SRv6 Endpoint Behaviors Registry . . . . . . . . . . . . 34 | 10.2. SRv6 Endpoint Behaviors Registry . . . . . . . . . . . . 35 | |||
| 10.2.1. Initial Registrations . . . . . . . . . . . . . . . 35 | 10.2.1. Initial Registrations . . . . . . . . . . . . . . . 36 | |||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 36 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 37 | |||
| 12. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 36 | 12. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 38 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 39 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 39 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 41 | |||
| 13.2. Informative References . . . . . . . . . . . . . . . . . 40 | 13.2. Informative References . . . . . . . . . . . . . . . . . 41 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 42 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
| 1. Introduction | 1. Introduction | |||
| Segment Routing [RFC8402] leverages the source routing paradigm. An | Segment Routing [RFC8402] leverages the source routing paradigm. An | |||
| ingress node steers a packet through an ordered list of instructions, | ingress node steers a packet through an ordered list of instructions, | |||
| called segments. Each one of these instructions represents a | called segments. Each one of these instructions represents a | |||
| function to be called at a specific location in the network. A | function to be called at a specific location in the network. A | |||
| function is locally defined on the node where it is executed and may | function is locally defined on the node where it is executed and may | |||
| range from simply moving forward in the Segment List to any complex | range from simply moving forward in the Segment List to any complex | |||
| user-defined behavior. Network programming combines segment routing | user-defined behavior. Network programming combines segment routing | |||
| skipping to change at page 12, line 19 ¶ | skipping to change at page 12, line 19 ¶ | |||
| S01. If (Upper-Layer Header type is allowed by local configuration) { | S01. If (Upper-Layer Header type is allowed by local configuration) { | |||
| S02. Proceed to process the Upper-layer Header | S02. Proceed to process the Upper-layer Header | |||
| S03. } Else { | S03. } Else { | |||
| S04. Send an ICMP Parameter Problem to the Source Address, | S04. Send an ICMP Parameter Problem to the Source Address, | |||
| Code 4 (SR Upper-layer Header Error), | Code 4 (SR Upper-layer Header Error), | |||
| Pointer set to the offset of the Upper-layer Header, | Pointer set to the offset of the Upper-layer Header, | |||
| Interrupt packet processing and discard the packet. | Interrupt packet processing and discard the packet. | |||
| S05 } | S05 } | |||
| Notes: | Allowing processing of specific Upper-Layer Headers types is useful | |||
| S01. As an example, an operator may not wish to have any TCP traffic | for OAM. As an example, an operator might permit pinging of SIDs. | |||
| destined to a local SID, but may want to enable ICMPv6 packet | To do this they may enable local configuration to allow Upper-layer | |||
| processing for OAM purposes. | Header type 58 (ICMPv6). | |||
| It is RECOMMENDED that an implementation of local configuration only | ||||
| allows Upper-layer Header processing of types that do not result in | ||||
| the packet being forwarded (e.g. ICMPv6). | ||||
| 4.2. End.X: Layer-3 Cross-Connect | 4.2. End.X: Layer-3 Cross-Connect | |||
| The "Endpoint with cross-connect to an array of layer-3 adjacencies" | The "Endpoint with cross-connect to an array of layer-3 adjacencies" | |||
| behavior (End.X for short) is a variant of the End behavior. | behavior (End.X for short) is a variant of the End behavior. | |||
| It is the SRv6 instantiation of an Adjacency-SID [RFC8402] and its | It is the SRv6 instantiation of an Adjacency-SID [RFC8402] and its | |||
| main use is for traffic-engineering policies. | main use is for traffic-engineering policies. | |||
| Any SID instance of this behavior is associated with a set, J, of one | Any SID instance of this behavior is associated with a set, J, of one | |||
| skipping to change at page 34, line 27 ¶ | skipping to change at page 35, line 27 ¶ | |||
| services. Additionally, [RFC8754] defines an HMAC TLV permitting SR | services. Additionally, [RFC8754] defines an HMAC TLV permitting SR | |||
| Endpoint Nodes in the SR domain to verify that the SRH applied to a | Endpoint Nodes in the SR domain to verify that the SRH applied to a | |||
| packet was selected by an authorized party and to ensure that the | packet was selected by an authorized party and to ensure that the | |||
| segment list is not modified after generation, regardless of the | segment list is not modified after generation, regardless of the | |||
| number of segments in the segment list. When enabled by local | number of segments in the segment list. When enabled by local | |||
| configuration, HMAC processing occurs at the beginning of SRH | configuration, HMAC processing occurs at the beginning of SRH | |||
| processing as defined in [RFC8754] Section 2.1.2.1 . | processing as defined in [RFC8754] Section 2.1.2.1 . | |||
| This document introduces SRv6 Endpoint and SR Policy Headend | This document introduces SRv6 Endpoint and SR Policy Headend | |||
| behaviors for implementation on SRv6 capable nodes in the network. | behaviors for implementation on SRv6 capable nodes in the network. | |||
| As such, this document does not introduce any new security | The headend policy definition should be consistent with the specific | |||
| considerations. | behavior used and any local configuration (as specified in | |||
| Section 4.1.1). As such, this document does not introduce any new | ||||
| security considerations. | ||||
| 10. IANA Considerations | 10. IANA Considerations | |||
| 10.1. Ethernet Next Header Type | 10.1. Ethernet Next Header Type | |||
| This document requests IANA to allocate, in the "Protocol Numbers" | This document requests IANA to allocate, in the "Protocol Numbers" | |||
| registry (https://www.iana.org/assignments/protocol-numbers/protocol- | registry (https://www.iana.org/assignments/protocol-numbers/protocol- | |||
| numbers.xhtml), a new value for "Ethernet" with the following | numbers.xhtml), a new value for "Ethernet" with the following | |||
| definition: The value 143 in the Next Header field of an IPv6 header | definition: The value 143 in the Next Header field of an IPv6 header | |||
| or any extension header indicates that the payload is an Ethernet | or any extension header indicates that the payload is an Ethernet | |||
| End of changes. 9 change blocks. | ||||
| 47 lines changed or deleted | 53 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/ | ||||