Network Working Group | D. Voyer, Ed. |
Internet-Draft | Bell Canada |
Intended status: Standards Track | C. Filsfils |
Expires: March 23, 2020 | D. Dukes, Ed. |
Cisco Systems, Inc. | |
S. Matsushima | |
Softbank | |
J. Leddy | |
Individual Contributor | |
September 20, 2019 |
Insertion of IPv6 Segment Routing Headers in a Controlled Domain
draft-voyer-6man-extension-header-insertion-07
Traffic traversing an SR domain is encapsulated in an outer IPv6 header for its journey through the SR domain.
To implement transport services strictly within the SR domain, the SR domain may require insertion or removal of an SRH after the outer IPv6 header of the SR domain. Any segment within the SRH is strictly contained within the SR domain.
The SR domain always preserves the end-to-end integrity of traffic traversing it. No extension header is manipulated, inserted or removed from an inner transported packet. The packet leaving the SR domain is exactly the same (except for the hop-limit update) as the packet entering the SR domain.
The SR domain is designed with link MTU sufficiently greater than the MTU at the ingress edge of the SR domain.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on March 23, 2020.
Copyright (c) 2019 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
This document describes insertion and removal of SRH within an SR domain, and explores why and how it is safe to do so.
An SR Domain is defined in [RFC8402].
Section 5.2 of [I-D.ietf-6man-segment-routing-header] further describes the SR domain as a single system with delegation among components. It states:
In other words, all packets within the SR domain have a source and destination address within the SR Domain.
The following illustration shows how traffic is encapsulated within an SR domain, and how an SRH is inserted and processed for a packet traversing the SR domain.
+ * * * * * * * * * * * * * * * * * * * * + * * [1]----[3]--------[5]----------------[6]---------[4]---[2] * | | * | | * | | * [7]----------------[8] * * + * * * * * * * SR Domain * * * * * * * +
Figure 1
When host 1 sends a packet to host 2, the packet is
The SR Domain ingress router 3 receives P1 and steers it to SR Domain egress router 4 via an SR Policy <S6, S4>. Router 3 encapsulates the received packet in an outer IPv6 header with an SRH. The packet is
At node 5, P2 is steered through an SR Policy <S7,S8.PSP> resulting in the insertion of an SRH. S8.PSP is a segment at node 8 that removes the SRH when segments left is decremented to 0
At node 7, S7 is processed. The outer most SRH segments left (SL) is decremented and S8 is placed in the destination address of the outer IPv6 header resulting in
At node 8, S8.PSP is processed. The outer most SRH segments left is decremented to 0 and S6 is placed in the destination address of the outer IPv6 header. Since S8.PSP decrements SL to 0 it also removes the SRH resulting in
At node 6, S6 is processed. SL is decremented and S4 is placed in the destination address of the outer IPv6 header
At node 4, S4 is processed and the outer IPv6 header chain is removed resulting in
The illustration above shows the possible actions taken in the SR domain. They can be categorized as follows:
This document defines several constraints on the SR domain that enable the safe insertion and removal of an SRH within the SR domain.
This document does not limit the ability for future documents to widen the scope.
These constraints reflect the design practices used in commercial SRv6 deployments reported in [I-D.matsushima-spring-srv6-deployment-status]
Within an SR domain, constrained as defined in Section 2.1, there are two actions that require detailed description in this document.
Action 2: SRH insertion at a node within the SR Domain
Action 3: SRH processing at a segment endpoint with PSP to remove the SRH when SL is decremented to zero.
When an SRH is inserted by an intermediate node it walks the IPv6 header chain to the first header after the IPv6 header and inserts the SRH prior to that header.
+---------------+----------------------+------------ | IPv6 header | SRH | IPv4 header | | | | Next Header = | Next Header = | | SRH | IPv4 | +---------------+----------------------+------------ ^-SRH insertion here
Figure 2
An SR Policy headend within the SR domain inserts an SRH as follows:
An endpoint of the SRH removes an SRH of the SR domain as follows:
This document assumes that the SR domain link MTU is sufficiently greater than the MTU at the ingress edge of the SR domain. The difference in MTUs should be greater than the sum of the IPv6 header length and the expected length of all inserted SRH within the SR domain.
This is in-line with well known mitigation techniques that have been deployed since the early 2000's for the MPLS-based FRR services and numerous VPN services that involve deploying a greater MTU value in the core than at the ingress edge of a domain.
This is also recommended in section 5.3 of [I-D.ietf-6man-segment-routing-header].
ICMP errors may be generated for packets with one or more SRH present. In such a case the ICMP process of a source node may receive an ICMP error packet with more SRH's than it originated.
Processing of such packets follows the processing defined in section 5.4 of [I-D.ietf-6man-segment-routing-header] with relevant text copied below:
ICMP errors are then processed by upper layer transports as defined in [RFC4443].
For IP packets encapsulated in an outer IPv6 header, ICMP error handling is as defined in [RFC2473].
When a larger MTU is deployed within the SR domain than at the ingress edge ICMP "Packet Too Big" error messages should not be generated within the SR domain.
They must be handled regardless, so in addition to the ICMP processing defined in this document, a source node in the SR domain receiving and processing an ICMP error "Packet Too Big" message SHOULD decrement the MTU received in the message by the size in bytes of the SRH's present in the invoking packet. This is required to compensate for any SRH inserted along the packets path.
The SR domain ingress edge processing the ICMP error SHOULD log the error and decrement the ingress edge MTU for traffic traversing the SR domain (if it's greater than the IPv6 minimum MTU of 1280 bytes) or fragment the encapsulated packet to avoid reducing the ingress edge MTU.
To implement transport services strictly within the SR domain, the SR domain may require the insertion or removal of an SRH after the outer IPv6 header of the SR domain.
This document details the actions and reminds the reader of the conditions that ensure
The SR domain always preserves the end-to-end integrity of traffic traversing it. No extension header is manipulated, inserted or removed from an inner transported packet. The packet leaving the SR domain is exactly the same (except for the hop-limit update) as the packet entering the SR domain.
The SR domain is secured as per Section 5.1 of [SRH] and no external packet can enter the domain with a destination address equal to a segment of the domain.
An SRH of the SR domain is only added after the outer IPv6 header. An SRH of the SR domain only contains segments within the domain. Under these conditions, the SRH of the SR domain cannot leave the domain. Additionally, egress edge nodes SHOULD ensure packets sourced from within the SR domain (IPv6 source prefix), destined to nodes outside the SR domain (IPv6 destination prefix) do not contain an SRH.
All security considerations discussed in [I-D.ietf-6man-segment-routing-header] are equally applicable to an SRH applied by a non-source node within the SR domain.
The four actions within the SR domain have the following association with [RFC8200]
Actions 1, 3, and 4 are all directly supported by [RFC8200] section 4
Action 2 inserts an SRH in a packet within the SR domain at a node not in the destination address, and inserts more than one SRH in a packet. This does not appear to be permitted by the statements quoted above from RFC8200. However, the restrictions above are not applicable within the SR domain. Every source node participating in the SR domain expects SRH insertion, relies on it for services provided by the SR domain, correctly processes ICMP errors, and according to RFC8200 must process multiple SRH in the same packet.
This document doesn't introduce any IANA request.
The authors would like to thank the following for their contributions: Robert Raszuk, Stefano Previdi, Stefano Salsano, Antonio Cianfrani, David Lebrun, Olivier Bonaventure, Prem Jonnalagadda, Milad Sharif, Hani Elmalky, Ahmed Abdelsalam, Arthi Ayyangar, Dirk Steinberg, Wim Henderickx.
[I-D.ietf-rtgwg-segment-routing-ti-lfa] | Litkowski, S., Bashandy, A., Filsfils, C., Decraene, B., Francois, P., daniel.voyer@bell.ca, d., Clad, F. and P. Camarillo, "Topology Independent Fast Reroute using Segment Routing", Internet-Draft draft-ietf-rtgwg-segment-routing-ti-lfa-01, March 2019. |
[I-D.ietf-spring-segment-routing-policy] | Filsfils, C., Sivabalan, S., daniel.voyer@bell.ca, d., bogdanov@google.com, b. and P. Mattes, "Segment Routing Policy Architecture", Internet-Draft draft-ietf-spring-segment-routing-policy-03, May 2019. |
[I-D.ietf-spring-srv6-network-programming] | Filsfils, C., Camarillo, P., Leddy, J., daniel.voyer@bell.ca, d., Matsushima, S. and Z. Li, "SRv6 Network Programming", Internet-Draft draft-ietf-spring-srv6-network-programming-02, September 2019. |
[I-D.matsushima-spring-srv6-deployment-status] | Matsushima, S., Filsfils, C., Ali, Z. and Z. Li, "SRv6 Implementation and Deployment Status", Internet-Draft draft-matsushima-spring-srv6-deployment-status-01, May 2019. |