diff options
Diffstat (limited to 'doc/rfc/rfc9098.txt')
-rw-r--r-- | doc/rfc/rfc9098.txt | 960 |
1 files changed, 960 insertions, 0 deletions
diff --git a/doc/rfc/rfc9098.txt b/doc/rfc/rfc9098.txt new file mode 100644 index 0000000..f06a6d6 --- /dev/null +++ b/doc/rfc/rfc9098.txt @@ -0,0 +1,960 @@ + + + + +Internet Engineering Task Force (IETF) F. Gont +Request for Comments: 9098 SI6 Networks +Category: Informational N. Hilliard +ISSN: 2070-1721 INEX + G. Doering + SpaceNet AG + W. Kumari + Google + G. Huston + APNIC + W. Liu + Huawei Technologies + September 2021 + + + Operational Implications of IPv6 Packets with Extension Headers + +Abstract + + This document summarizes the operational implications of IPv6 + extension headers specified in the IPv6 protocol specification (RFC + 8200) and attempts to analyze reasons why packets with IPv6 extension + headers are often dropped in the public Internet. + +Status of This Memo + + This document is not an Internet Standards Track specification; it is + published for informational purposes. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Not all documents + approved by the IESG are candidates for any level of Internet + Standard; see Section 2 of RFC 7841. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + https://www.rfc-editor.org/info/rfc9098. + +Copyright Notice + + Copyright (c) 2021 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. + +Table of Contents + + 1. Introduction + 2. Terminology + 3. Disclaimer + 4. Background Information + 5. Previous Work on IPv6 Extension Headers + 6. Packet-Forwarding Engine Constraints + 6.1. Recirculation + 7. Requirement to Process Layer 3 / Layer 4 Information in + Intermediate Systems + 7.1. ECMP and Hash-Based Load Sharing + 7.2. Enforcing Infrastructure ACLs + 7.3. DDoS Management and Customer Requests for Filtering + 7.4. Network Intrusion Detection and Prevention + 7.5. Firewalling + 8. Operational and Security Implications + 8.1. Inability to Find Layer 4 Information + 8.2. Route-Processor Protection + 8.3. Inability to Perform Fine-Grained Filtering + 8.4. Security Concerns Associated with IPv6 Extension Headers + 9. IANA Considerations + 10. Security Considerations + 11. References + 11.1. Normative References + 11.2. Informative References + Acknowledgements + Authors' Addresses + +1. Introduction + + IPv6 extension headers (EHs) allow for the extension of the IPv6 + protocol and provide support for core functionality such as IPv6 + fragmentation. However, common implementation limitations suggest + that EHs present a challenge for IPv6 packet routing equipment and + middleboxes, and evidence exists that IPv6 packets with EHs are + intentionally dropped in the public Internet in some circumstances. + + This document has the following goals: + + * Raise awareness about the operational and security implications of + IPv6 extension headers specified in [RFC8200] and present reasons + why some networks resort to intentionally dropping packets + containing IPv6 extension headers. + + * Highlight areas where current IPv6 support by networking devices + may be suboptimal, such that the aforementioned support is + improved. + + * Highlight operational issues associated with IPv6 extension + headers, such that those issues are considered in IETF + standardization efforts. + + Section 4 of this document provides background information about the + IPv6 packet structure and associated implications. Section 5 + summarizes previous work that has been carried out in the area of + IPv6 extension headers. Section 6 discusses packet-forwarding engine + constraints in contemporary routers. Section 7 discusses why + intermediate systems may need to access Layer 4 information to make a + forwarding decision. Finally, Section 8 discusses operational + implications of IPv6 EHs. + +2. Terminology + + This document uses the term "intermediate system" to describe both + routers and middleboxes when there is no need to distinguish between + the two and where the important issue is that the device being + discussed forwards packets. + +3. Disclaimer + + This document analyzes the operational challenges represented by + packets that employ IPv6 extension headers and documents some of the + operational reasons why these packets are often dropped in the public + Internet. This document is not a recommendation to drop such + packets, but rather an analysis of why they are currently dropped. + +4. Background Information + + It is useful to compare the basic structure of IPv6 packets against + that of IPv4 packets and analyze the implications of the two + different packet structures. + + IPv4 packets have a variable-length header size that allows for the + use of IPv4 "options" -- optional information that may be of use to + nodes processing IPv4 packets. The IPv4 header length is specified + in the "Internet Header Length" (IHL) field of the mandatory IPv4 + header and must be in the range of 20 octets (the minimum IPv4 header + size) to 60 octets, accommodating at most 40 octets of options. The + upper-layer protocol type is specified via the "Protocol" field of + the mandatory IPv4 header. + + Protocol, IHL + +--------+ + | | + | v + +------//-----+------------------------+ + | | | + | IPv4 | Upper-Layer | + | Header | Protocol | + | | | + +-----//------+------------------------+ + + variable length + <-------------> + + Figure 1: IPv4 Packet Structure + + IPv6 took a different approach to the IPv6 packet structure. Rather + than employing a variable-length header as IPv4 does, IPv6 employs a + packet structure similar to a linked list, where a mandatory fixed- + length IPv6 header is followed by an arbitrary number of optional + extension headers, with the upper-layer header being the last header + in the IPv6 header chain. Each extension header typically specifies + its length (unless it is implicit from the extension header type) and + the "next header" (NH) type that follows in the IPv6 header chain. + + NH NH, EH-length NH, EH-length + +-------+ +------+ +-------+ + | | | | | | + | v | v | v + +-------------+-------------+-//-+---------------+--------------+ + | | | | | | + | IPv6 | Ext. | | Ext. | Upper-Layer | + | header | Header | | Header | Protocol | + | | | | | | + +-------------+-------------+-//-+---------------+--------------+ + + fixed length variable number of EHs & length + <------------> <--------------------------------> + + Figure 2: IPv6 Packet Structure + + This packet structure has the following implications: + + * [RFC8200] requires the entire IPv6 header chain to be contained in + the first fragment of a packet, therefore limiting the IPv6 header + chain to the size of the path MTU. + + * Other than the path MTU constraints, there are no other limits to + the number of IPv6 EHs that may be present in a packet. + Therefore, there is no upper limit regarding how deep into the + IPv6 packet the upper-layer protocol header may be found. + + * The only way for a node to obtain the upper-layer protocol type or + find the upper-layer protocol header is to parse and process the + entire IPv6 header chain, in sequence, starting from the mandatory + IPv6 header until the last header in the IPv6 header chain is + found. + +5. Previous Work on IPv6 Extension Headers + + Some of the operational and security implications of IPv6 extension + headers have been discussed in the IETF: + + * [OPERATORS] discusses a rationale for which operators drop IPv6 + fragments. + + * [HEADERS] discusses possible issues arising from "long" IPv6 + header chains. + + * [PARSING] describes how inconsistencies in the way IPv6 packets + with extension headers are parsed by different implementations + could result in evasion of security controls and presents + guidelines for parsing IPv6 extension headers, with the goal of + providing a common and consistent parsing methodology for IPv6 + implementations. + + * [IPV6-EH] analyzes the security implications of IPv6 EHs, as well + as the operational implications of dropping packets that employ + IPv6 EHs and associated options. + + * [RFC7113] discusses how some popular Router Advertisement Guard + (RA-Guard) implementations are subject to evasion by means of IPv6 + extension headers. + + * [RFC8900] analyzes the fragility introduced by IP fragmentation. + + A number of recent RFCs have discussed issues related to IPv6 + extension headers and have specified updates to RFC 2460 [RFC2460] + (an earlier version of the IPv6 standard). Many of these updates + have now been incorporated into the current IPv6 core standard + [RFC8200] or the IPv6 node requirements [RFC8504]. Namely, + + * [RFC5095] discusses the security implications of Routing Header + Type 0 (RHT0) and deprecates it. + + * [RFC5722] analyzes the security implications of overlapping + fragments and provides recommendations in this area. + + * [RFC7045] clarifies how intermediate nodes should deal with IPv6 + extension headers. + + * [RFC7112] discusses the issues arising in a specific fragmentation + case where the IPv6 header chain is fragmented into two or more + fragments and formally forbids such fragmentation. + + * [RFC6946] discusses a flawed (but common) processing of the so- + called IPv6 "atomic fragments" and specifies improved processing + of such packets. + + * [RFC8021] deprecates the generation of IPv6 atomic fragments. + + * [RFC8504] clarifies processing rules for packets with extension + headers and also allows hosts to enforce limits on the number of + options included in IPv6 EHs. + + * [RFC7739] discusses the security implications of predictable + fragment Identification values and provides recommendations for + the generation of these values. + + * [RFC6980] analyzes the security implications of employing IPv6 + fragmentation with Neighbor Discovery for IPv6 and formally + recommends against such usage. + + Additionally, [RFC8200] has relaxed the requirement that "all nodes + must examine and process the Hop-by-Hop Options header" from + [RFC2460], by specifying that only nodes that have been explicitly + configured to process the Hop-by-Hop Options header are required to + do so. + + A number of studies have measured the extent to which packets + employing IPv6 extension headers are dropped in the public Internet: + + * [PMTUD-Blackholes] and [Linkova-Gont-IEPG90] present some + preliminary measurements regarding the extent to which packets + containing IPv6 EHs are dropped in the public Internet. + + * [RFC7872] presents more comprehensive results and documents the + methodology used to obtain these results. + + * [Huston-2017] and [Huston-2020] measure packet drops resulting + from IPv6 fragmentation when communicating with DNS servers. + +6. Packet-Forwarding Engine Constraints + + Most contemporary carrier-grade routers use dedicated hardware, e.g., + Application-Specific Integrated Circuits (ASICs) or Network + Processing Units (NPUs), to determine how to forward packets across + their internal fabrics (see [IEPG94-Scudder] and [APNIC-Scudder] for + details). One common method of handling next-hop lookups is to send + a small portion of the ingress packet to a lookup engine with + specialized hardware, e.g., ternary content-addressable memory (TCAM) + or reduced latency dynamic random-access memory (RLDRAM), to + determine the packet's next hop. Technical constraints mean that + there is a trade-off between the amount of data sent to the lookup + engine and the overall packet-forwarding rate of the lookup engine. + If more data is sent, the lookup engine can inspect further into the + packet, but the overall packet-forwarding rate of the system will be + reduced. If less data is sent, the overall packet-forwarding rate of + the router will be increased, but the packet lookup engine may not be + able to inspect far enough into a packet to determine how it should + be handled. + + | NOTE: + | + | For example, some contemporary high-end routers are known to + | inspect up to 192 bytes, while others are known to parse up + | to 384 bytes of header. + + If a hardware-forwarding engine on a contemporary router cannot make + a forwarding decision about a packet because critical information is + not sent to the lookup engine, then the router will normally drop the + packet. Section 7 discusses some of the reasons for which a + contemporary router might need to access Layer 4 information to make + a forwarding decision. + + Historically, some packet-forwarding engines punted packets of this + kind to the control plane for more in-depth analysis, but this is + unfeasible on most contemporary router architectures as a result of + the vast difference between the hardware-based forwarding capacity of + the router and the processing capacity of the control plane and the + size of the management link that connects the control plane to the + forwarding plane. Other platforms may have a separate software-based + forwarding plane that is distinct both from the hardware-based + forwarding plane and the control plane. However, the limited CPU + resources of this software-based forwarding plane, as well as the + limited bandwidth of the associated link, results in similar + throughput constraints. + + If an IPv6 header chain is sufficiently long such that it exceeds the + packet lookup capacity of the router, the router might be unable to + determine how the packet should be handled and thus could resort to + dropping the packet. + +6.1. Recirculation + + Although type-length-value (TLV) chains are amenable to iterative + processing on architectures that have packet lookup engines with deep + inspection capabilities, some packet-forwarding engines manage IPv6 + header chains using recirculation. This approach processes extension + headers one at a time: when processing on one extension header is + completed, the packet is looped back through the processing engine + again. This recirculation process continues repeatedly until there + are no more extension headers left to be processed. + + Recirculation is typically used on packet-forwarding engines with + limited lookup capability, because it allows arbitrarily long header + chains to be processed without the complexity and cost associated + with packet-forwarding engines, which have deep lookup capabilities. + However, recirculation can impact the forwarding capacity of + hardware, as each packet will pass through the processing engine + multiple times. Depending on configuration, the type of packets + being processed, and the hardware capabilities of the packet- + forwarding engine, the data-plane throughput performance on the + router might be negatively affected. + +7. Requirement to Process Layer 3 / Layer 4 Information in Intermediate + Systems + + The following subsections discuss some of the reasons for which + intermediate systems may need to process Layer 3 / Layer 4 + information to make a forwarding decision. + +7.1. ECMP and Hash-Based Load Sharing + + In the case of Equal Cost Multipath (ECMP) load sharing, the + intermediate system needs to make a decision regarding which of its + interfaces to use to forward a given packet. Since round-robin usage + of the links is usually avoided to prevent packet reordering, + forwarding engines need to use a mechanism that will consistently + forward the same data streams down the same forwarding paths. Most + forwarding engines achieve this by calculating a simple hash using an + n-tuple gleaned from a combination of Layer 2 through to Layer 4 + protocol header information. This n-tuple will typically use the + src/dst Media Access Control (MAC) addresses, src/dst IP addresses, + and, if possible, further Layer 4 src/dst port information. + + In the IPv6 world, flows are expected to be identified by means of + the IPv6 "Flow Label" [RFC6437]. Thus, ECMP and hash-based load + sharing should be possible without the need to process the entire + IPv6 header chain to obtain upper-layer information to identify + flows. [RFC7098] discusses how the IPv6 Flow Label can be used to + enhance Layer 3/4 load distribution and balancing for large server + farms. + + Historically, many IPv6 implementations failed to set the Flow Label, + and hash-based ECMP/load-sharing devices also did not employ the Flow + Label for performing their task. While support of [RFC6437] is + currently widespread for current versions of all popular host + implementations, there is still only marginal usage of the IPv6 Flow + Label for ECMP and load balancing [Almeida-2020]. A contributing + factor could be the issues that have been found in host + implementations and middleboxes [Jaeggli-2018]. + + Clearly, widespread support of [RFC6437] would relieve intermediate + systems from having to process the entire IPv6 header chain, making + Flow Label-based ECMP and load sharing [RFC6438] feasible. + + If an intermediate system cannot determine consistent n-tuples for + calculating flow hashes, data streams are more likely to end up being + distributed unequally across ECMP and load-shared links. This may + lead to packet drops or reduced performance. + +7.2. Enforcing Infrastructure ACLs + + Infrastructure Access Control Lists (iACLs) drop unwanted packets + destined to a network's infrastructure. Typically, iACLs are + deployed because external direct access to a network's infrastructure + addresses is operationally unnecessary and can be used for attacks of + different sorts against router control planes. To this end, traffic + usually needs to be differentiated on the basis of Layer 3 or Layer 4 + criteria to achieve a useful balance of protection and functionality. + For example, an infrastructure may be configured with the following + policy: + + * Permit some amount of ICMP echo (ping) traffic towards a router's + addresses for troubleshooting. + + * Permit BGP sessions on the shared network of an exchange point + (potentially differentiating between the amount of packets/second + permitted for established sessions and for connection + establishment), but do not permit other traffic from the same peer + IP addresses. + + If a forwarding router cannot determine consistent n-tuples for + calculating flow hashes, data streams are more likely to end up being + distributed unequally across ECMP and load-shared links. This may + lead to packet drops or reduced performance. + + If a network cannot deploy infrastructure ACLs, then the security of + the network may be compromised as a result of the increased attack + surface. + +7.3. DDoS Management and Customer Requests for Filtering + + The case of customer Distributed Denial-of-Service (DDoS) protection + and edge-to-core customer protection filters is similar in nature to + the iACL protection. Similar to iACL protection, Layer 4 ACLs + generally need to be applied as close to the edge of the network as + possible, even though the intent is usually to protect the customer + edge rather than the provider core. Application of Layer 4 DDoS + protection to a network edge is often automated using BGP Flowspec + [RFC8955] [RFC8956]. + + For example, a website that normally only handles traffic on TCP + ports 80 and 443 could be subject to a volumetric DDoS attack using + NTP and DNS packets with a randomized source IP address, thereby + rendering source-based remote triggered black hole [RFC5635] + mechanisms useless. In this situation, ACLs that provide DDoS + protection could be configured to block all UDP traffic at the + network edge without impairing the web server functionality in any + way. Thus, being able to block arbitrary protocols at the network + edge can avoid DDoS-related problems both in the provider network and + on the customer edge link. + +7.4. Network Intrusion Detection and Prevention + + Network Intrusion Detection Systems (NIDS) examine network traffic + and try to identify traffic patterns that can be correlated to + network-based attacks. These systems generally attempt to inspect + application-layer traffic (if possible) but, at the bare minimum, + inspect Layer 4 flows. When attack activity is inferred, the + operator is notified of the potential intrusion attempt. + + Network Intrusion Prevention Systems (IPS) operate similarly to + NIDSs, but they can also prevent intrusions by reacting to detected + attack attempts by e.g., triggering packet filtering policies at + firewalls and other devices. + + Use of extension headers can be problematic for NIDS/IPS, since: + + * Extension headers increase the complexity of resulting traffic and + the associated work and system requirements to process it. + + * Use of unknown extension headers can prevent a NIDS or IPS from + processing Layer 4 information. + + * Use of IPv6 fragmentation requires a stateful fragment-reassembly + operation, even for decoy traffic employing forged source + addresses (see, e.g., [nmap]). + + As a result, in order to increase the efficiency or effectiveness of + these systems, packets employing IPv6 extension headers are often + dropped at the network ingress point(s) of networks that deploy these + systems. + +7.5. Firewalling + + Firewalls enforce security policies by means of packet filtering. + These systems usually inspect Layer 3 and Layer 4 traffic but can + often also examine application-layer traffic flows. + + As with a NIDS or IPS (Section 7.4), use of IPv6 extension headers + can represent a challenge to network firewalls, since: + + * Extension headers increase the complexity of resulting traffic and + the associated work and system requirements to process it, as + outlined in [Zack-FW-Benchmark]. + + * Use of unknown extension headers can prevent firewalls from + processing Layer 4 information. + + * Use of IPv6 fragmentation requires a stateful fragment-reassembly + operation, even for decoy traffic employing forged source + addresses (see, e.g., [nmap]). + + Additionally, a common firewall filtering policy is the so-called + "default deny", where all traffic is blocked (by default), and only + expected traffic is added to an "allow/accept list". + + As a result, packets employing IPv6 extension headers are often + dropped by network firewalls, either because of the challenges + represented by extension headers or because the use of IPv6 extension + headers has not been explicitly allowed. + + Note that although the data presented in [Zack-FW-Benchmark] was + several years old at the time of publication of this document, many + contemporary firewalls use comparable hardware and software + architectures; consequently, the conclusions of this benchmark are + still relevant, despite its age. + +8. Operational and Security Implications + +8.1. Inability to Find Layer 4 Information + + As discussed in Section 7, intermediate systems that need to find the + Layer 4 header must process the entire IPv6 header chain. When such + devices are unable to obtain the required information, the forwarding + device has the option to drop the packet unconditionally, forward the + packet unconditionally, or process the packet outside the normal + forwarding path. Forwarding packets unconditionally will usually + allow for the circumvention of security controls (see, e.g., + Section 7.5), while processing packets outside of the normal + forwarding path will usually open the door to Denial-of-Service (DoS) + attacks (see, e.g., Section 6). Thus, in these scenarios, devices + often simply resort to dropping such packets unconditionally. + +8.2. Route-Processor Protection + + Most contemporary carrier-grade routers have a fast hardware-assisted + forwarding plane and a loosely coupled control plane, connected + together with a link that has much less capacity than the forwarding + plane could handle. Traffic differentiation cannot be performed by + the control plane because this would overload the internal link + connecting the forwarding plane to the control plane. + + The Hop-by-Hop Options header has been particularly challenging + since, in most circumstances, the corresponding packet is punted to + the control plane for processing. As a result, many operators drop + IPv6 packets containing this extension header [RFC7872]. [RFC6192] + provides advice regarding protection of a router's control plane. + +8.3. Inability to Perform Fine-Grained Filtering + + Some intermediate systems do not have support for fine-grained + filtering of IPv6 extension headers. For example, an operator that + wishes to drop packets containing RHT0 may only be able to filter on + the extension header type (Routing Header). This could result in an + operator enforcing a coarser filtering policy (e.g., "drop all + packets containing a Routing Header" vs. "only drop packets that + contain a Routing Header Type 0"). + +8.4. Security Concerns Associated with IPv6 Extension Headers + + The security implications of IPv6 extension headers generally fall + into one or more of these categories: + + * Evasion of security controls + + * DoS due to processing requirements + + * DoS due to implementation errors + + * Issues specific to the extension header type + + Unlike IPv4 packets where the upper-layer protocol can be trivially + found by means of the IHL field of the IPv4 header, the structure of + IPv6 packets is more flexible and complex. This can represent a + challenge for devices that need to find this information, since + locating upper-layer protocol information requires that all IPv6 + extension headers be examined. In turn, this presents implementation + difficulties, since some packet-filtering mechanisms that require + upper-layer information (even if just the upper-layer protocol type) + can be trivially circumvented by inserting IPv6 extension headers + between the main IPv6 header and the upper-layer protocol header. + [RFC7113] describes this issue for the RA-Guard case, but the same + techniques could be employed to circumvent other IPv6 firewall and + packet-filtering mechanisms. Additionally, implementation + inconsistencies in packet-forwarding engines can result in evasion of + security controls [PARSING] [Atlasis2014] [BH-EU-2014]. + + Sometimes, packets with IPv6 extension headers can impact throughput + performance on intermediate systems. Unless appropriate mitigations + are put in place (e.g., packet dropping and/or rate limiting), an + attacker could simply send a large amount of IPv6 traffic employing + IPv6 extension headers with the purpose of performing a DoS attack + (see Sections 6.1 and 8 for further details). The extent to which + performance is affected on these devices is implementation dependent. + + | NOTE: + | + | In the most trivial case, a packet that includes a Hop-by- + | Hop Options header might go through the slow forwarding + | path, to be processed by the router's CPU. Alternatively, a + | router configured to enforce an ACL based on upper-layer + | information (e.g., upper-layer protocol type or TCP + | Destination Port) may need to process the entire IPv6 header + | chain in order to find the required information, thereby + | causing the packet to be processed in the slow path + | [Cisco-EH-Cons]. We note that, for obvious reasons, the + | aforementioned performance issues can affect devices such as + | firewalls, NIDSs, etc. [Zack-FW-Benchmark]. + + IPv6 implementations, like all other software, tend to mature with + time and wide-scale deployment. While the IPv6 protocol itself has + existed for over 20 years, serious bugs related to IPv6 extension + header processing continue to be discovered (see, e.g., [Cisco-Frag], + [Microsoft-SA], and [FreeBSD-SA]). Because there is currently little + operational reliance on IPv6 extension headers, the corresponding + code paths are rarely exercised, and there is the potential for bugs + that still remain to be discovered in some implementations. + + The IPv6 Fragment Header is employed for the fragmentation and + reassembly of IPv6 packets. While many of the security implications + of the fragmentation/reassembly mechanism are known from the IPv4 + world, several related issues have crept into IPv6 implementations. + These range from DoS attacks to information leakages, as discussed in + [RFC7739], [Bonica-NANOG58], and [Atlasis2012]. + +9. IANA Considerations + + This document has no IANA actions. + +10. Security Considerations + + The security implications of IPv6 extension headers are discussed in + Section 8.4. This document does not introduce any new security + issues. + +11. References + +11.1. Normative References + + [RFC5095] Abley, J., Savola, P., and G. Neville-Neil, "Deprecation + of Type 0 Routing Headers in IPv6", RFC 5095, + DOI 10.17487/RFC5095, December 2007, + <https://www.rfc-editor.org/info/rfc5095>. + + [RFC5722] Krishnan, S., "Handling of Overlapping IPv6 Fragments", + RFC 5722, DOI 10.17487/RFC5722, December 2009, + <https://www.rfc-editor.org/info/rfc5722>. + + [RFC6946] Gont, F., "Processing of IPv6 "Atomic" Fragments", + RFC 6946, DOI 10.17487/RFC6946, May 2013, + <https://www.rfc-editor.org/info/rfc6946>. + + [RFC6980] Gont, F., "Security Implications of IPv6 Fragmentation + with IPv6 Neighbor Discovery", RFC 6980, + DOI 10.17487/RFC6980, August 2013, + <https://www.rfc-editor.org/info/rfc6980>. + + [RFC7112] Gont, F., Manral, V., and R. Bonica, "Implications of + Oversized IPv6 Header Chains", RFC 7112, + DOI 10.17487/RFC7112, January 2014, + <https://www.rfc-editor.org/info/rfc7112>. + + [RFC8021] Gont, F., Liu, W., and T. Anderson, "Generation of IPv6 + Atomic Fragments Considered Harmful", RFC 8021, + DOI 10.17487/RFC8021, January 2017, + <https://www.rfc-editor.org/info/rfc8021>. + + [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 + (IPv6) Specification", STD 86, RFC 8200, + DOI 10.17487/RFC8200, July 2017, + <https://www.rfc-editor.org/info/rfc8200>. + + [RFC8504] Chown, T., Loughney, J., and T. Winters, "IPv6 Node + Requirements", BCP 220, RFC 8504, DOI 10.17487/RFC8504, + January 2019, <https://www.rfc-editor.org/info/rfc8504>. + +11.2. Informative References + + [Almeida-2020] + Almeida, R., Cunha, I., Teixeira, R., Veitch, D., and C. + Diot, "Classification of Load Balancing in the Internet", + IEEE INFOCOM 2020, DOI 10.1109/INFOCOM41043.2020.9155387, + July 2020, <https://homepages.dcc.ufmg.br/~cunha/papers/ + almeida20infocom-mca.pdf>. + + [APNIC-Scudder] + Scudder, J., "Modern router architecture and IPv6", APNIC + Blog, June 2020, <https://blog.apnic.net/2020/06/04/ + modern-router-architecture-and-ipv6/>. + + [Atlasis2012] + Atlasis, A., "Attacking IPv6 Implementation Using + Fragmentation", Black Hat Europe 2012, March 2012, + <https://void.gr/kargig/ipv6/bh-eu-12-Atlasis- + Attacking_IPv6-Slides.pdf>. + + [Atlasis2014] + Atlasis, A., "A Novel Way of Abusing IPv6 Extension + Headers to Evade IPv6 Security Devices", May 2014, + <http://www.insinuator.net/2014/05/a-novel-way-of-abusing- + ipv6-extension-headers-to-evade-ipv6-security-devices/>. + + [BH-EU-2014] + Atlasis, A., Rey, E., and R. Schaefer, "Evasion of High- + End IDPS Devices at the IPv6 Era", Black Hat Europe 2014, + 2014, <https://www.ernw.de/download/eu-14-Atlasis-Rey- + Schaefer-briefings-Evasion-of-HighEnd-IPS-Devices-wp.pdf>. + + [Bonica-NANOG58] + Bonica, R., "IPv6 Fragmentation: The Case For + Deprecation", NANOG 58, June 2013, + <https://www.nanog.org/sites/default/files/ + mon.general.fragmentation.bonica.pdf>. + + [Cisco-EH-Cons] + Cisco, "IPv6 Extension Headers Review and Considerations", + October 2006, + <http://www.cisco.com/en/US/technologies/tk648/tk872/ + technologies_white_paper0900aecd8054d37d.pdf>. + + [Cisco-Frag] + Cisco, "Cisco IOS XR Software Crafted IPv6 Packet Denial + of Service Vulnerability", June 2015, + <http://tools.cisco.com/security/center/content/ + CiscoSecurityAdvisory/cisco-sa-20150611-iosxr>. + + [FreeBSD-SA] + The FreeBSD Project, "IPv6 Hop-by-Hop options use-after- + free bug", September 2020, + <https://www.freebsd.org/security/advisories/FreeBSD-SA- + 20:24.ipv6.asc>. + + [HEADERS] Kumari, W., Jaeggli, J., Bonica, R. P., and J. Linkova, + "Operational Issues Associated With Long IPv6 Header + Chains", Work in Progress, Internet-Draft, draft-wkumari- + long-headers-03, 16 June 2015, + <https://datatracker.ietf.org/doc/html/draft-wkumari-long- + headers-03>. + + [Huston-2017] + Huston, G., "Dealing with IPv6 fragmentation in the DNS", + APNIC Blog, August 2017, + <https://blog.apnic.net/2017/08/22/dealing-ipv6- + fragmentation-dns/>. + + [Huston-2020] + Huston, G., "Measurement of IPv6 Extension Header + Support", NPS/CAIDA 2020 Virtual IPv6 Workshop, June 2020, + <https://www.cmand.org/workshops/202006-v6/ + slides/2020-06-16-xtn-hdrs.pdf>. + + [IEPG94-Scudder] + Petersen, B. and J. Scudder, "Modern Router Architecture + for Protocol Designers", IEPG 94, November 2015, + <http://www.iepg.org/2015-11-01-ietf94/IEPG- + RouterArchitecture-jgs.pdf>. + + [IPV6-EH] Gont, F. and W. Liu, "Recommendations on the Filtering of + IPv6 Packets Containing IPv6 Extension Headers at Transit + Routers", Work in Progress, Internet-Draft, draft-ietf- + opsec-ipv6-eh-filtering-08, 3 June 2021, + <https://datatracker.ietf.org/doc/html/draft-ietf-opsec- + ipv6-eh-filtering-08>. + + [Jaeggli-2018] + Jaeggli, J., "IPv6 flow label: misuse in hashing", APNIC + Blog, January 2018, <https://blog.apnic.net/2018/01/11/ + ipv6-flow-label-misuse-hashing/>. + + [Linkova-Gont-IEPG90] + Linkova, J. and F. Gont, "IPv6 Extension Headers in the + Real World v2.0", IEPG 90, July 2014, + <http://www.iepg.org/2014-07-20-ietf90/iepg-ietf90-ipv6- + ehs-in-the-real-world-v2.0.pdf>. + + [Microsoft-SA] + Microsoft, "Windows TCP/IP Remote Code Execution + Vulnerability", CVE-2021-24094, February 2021, + <https://msrc.microsoft.com/update-guide/vulnerability/ + CVE-2021-24094>. + + [nmap] Lyon, G., "Firewall/IDS Evasion and Spoofing", Chapter 15. + Nmap Reference Guide, + <https://nmap.org/book/man-bypass-firewalls-ids.html>. + + [OPERATORS] + Jaeggli, J., Colitti, L., Kumari, W., Vyncke, E., Kaeo, + M., and T. Taylor, Ed., "Why Operators Filter Fragments + and What It Implies", Work in Progress, Internet-Draft, + draft-taylor-v6ops-fragdrop-02, 3 December 2013, + <https://datatracker.ietf.org/doc/html/draft-taylor-v6ops- + fragdrop-02>. + + [PARSING] Kampanakis, P., "Implementation Guidelines for Parsing + IPv6 Extension Headers", Work in Progress, Internet-Draft, + draft-kampanakis-6man-ipv6-eh-parsing-01, 5 August 2014, + <https://datatracker.ietf.org/doc/html/draft-kampanakis- + 6man-ipv6-eh-parsing-01>. + + [PMTUD-Blackholes] + De Boer, M. and J. Bosma, "Discovering Path MTU black + holes on the Internet using RIPE Atlas", University of + Amsterdam, MSc. Systems & Network Engineering, July 2012, + <http://www.nlnetlabs.nl/downloads/publications/pmtu- + black-holes-msc-thesis.pdf>. + + [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 + (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, + December 1998, <https://www.rfc-editor.org/info/rfc2460>. + + [RFC5635] Kumari, W. and D. McPherson, "Remote Triggered Black Hole + Filtering with Unicast Reverse Path Forwarding (uRPF)", + RFC 5635, DOI 10.17487/RFC5635, August 2009, + <https://www.rfc-editor.org/info/rfc5635>. + + [RFC6192] Dugal, D., Pignataro, C., and R. Dunn, "Protecting the + Router Control Plane", RFC 6192, DOI 10.17487/RFC6192, + March 2011, <https://www.rfc-editor.org/info/rfc6192>. + + [RFC6437] Amante, S., Carpenter, B., Jiang, S., and J. Rajahalme, + "IPv6 Flow Label Specification", RFC 6437, + DOI 10.17487/RFC6437, November 2011, + <https://www.rfc-editor.org/info/rfc6437>. + + [RFC6438] Carpenter, B. and S. Amante, "Using the IPv6 Flow Label + for Equal Cost Multipath Routing and Link Aggregation in + Tunnels", RFC 6438, DOI 10.17487/RFC6438, November 2011, + <https://www.rfc-editor.org/info/rfc6438>. + + [RFC7045] Carpenter, B. and S. Jiang, "Transmission and Processing + of IPv6 Extension Headers", RFC 7045, + DOI 10.17487/RFC7045, December 2013, + <https://www.rfc-editor.org/info/rfc7045>. + + [RFC7098] Carpenter, B., Jiang, S., and W. Tarreau, "Using the IPv6 + Flow Label for Load Balancing in Server Farms", RFC 7098, + DOI 10.17487/RFC7098, January 2014, + <https://www.rfc-editor.org/info/rfc7098>. + + [RFC7113] Gont, F., "Implementation Advice for IPv6 Router + Advertisement Guard (RA-Guard)", RFC 7113, + DOI 10.17487/RFC7113, February 2014, + <https://www.rfc-editor.org/info/rfc7113>. + + [RFC7739] Gont, F., "Security Implications of Predictable Fragment + Identification Values", RFC 7739, DOI 10.17487/RFC7739, + February 2016, <https://www.rfc-editor.org/info/rfc7739>. + + [RFC7872] Gont, F., Linkova, J., Chown, T., and W. Liu, + "Observations on the Dropping of Packets with IPv6 + Extension Headers in the Real World", RFC 7872, + DOI 10.17487/RFC7872, June 2016, + <https://www.rfc-editor.org/info/rfc7872>. + + [RFC8900] Bonica, R., Baker, F., Huston, G., Hinden, R., Troan, O., + and F. Gont, "IP Fragmentation Considered Fragile", + BCP 230, RFC 8900, DOI 10.17487/RFC8900, September 2020, + <https://www.rfc-editor.org/info/rfc8900>. + + [RFC8955] Loibl, C., Hares, S., Raszuk, R., McPherson, D., and M. + Bacher, "Dissemination of Flow Specification Rules", + RFC 8955, DOI 10.17487/RFC8955, December 2020, + <https://www.rfc-editor.org/info/rfc8955>. + + [RFC8956] Loibl, C., Ed., Raszuk, R., Ed., and S. Hares, Ed., + "Dissemination of Flow Specification Rules for IPv6", + RFC 8956, DOI 10.17487/RFC8956, December 2020, + <https://www.rfc-editor.org/info/rfc8956>. + + [Zack-FW-Benchmark] + Zack, E., "Firewall Security Assessment and Benchmarking + IPv6 Firewall Load Tests", IPv6 Hackers Meeting #1, June + 2013, <https://www.ipv6hackers.org/files/meetings/ipv6- + hackers-1/zack-ipv6hackers1-firewall-security-assessment- + and-benchmarking.pdf>. + +Acknowledgements + + The authors would like to thank (in alphabetical order) Mikael + Abrahamsson, Fred Baker, Dale W. Carder, Brian Carpenter, Tim Chown, + Owen DeLong, Gorry Fairhurst, Guillermo Gont, Tom Herbert, Lee + Howard, Tom Petch, Sander Steffann, Eduard Vasilenko, Éric Vyncke, + Rob Wilton, Jingrong Xie, and Andrew Yourtchenko for providing + valuable comments on earlier draft versions of this document. + + Fernando Gont would like to thank Jan Zorz / Go6 Lab + <https://go6lab.si/>, Jared Mauch, and Sander Steffann + <https://steffann.nl/> for providing access to systems and networks + that were employed to perform experiments and measurements involving + packets with IPv6 extension headers. + +Authors' Addresses + + Fernando Gont + SI6 Networks + Segurola y Habana 4310, 7mo Piso + Villa Devoto + Ciudad Autonoma de Buenos Aires + Argentina + + Email: fgont@si6networks.com + URI: https://www.si6networks.com + + + Nick Hilliard + INEX + 4027 Kingswood Road + Dublin + 24 + Ireland + + Email: nick@inex.ie + + + Gert Doering + SpaceNet AG + Joseph-Dollinger-Bogen 14 + D-80807 Muenchen + Germany + + Email: gert@space.net + + + Warren Kumari + Google + 1600 Amphitheatre Parkway + Mountain View, CA 94043 + United States of America + + Email: warren@kumari.net + + + Geoff Huston + + Email: gih@apnic.net + URI: https://www.apnic.net + + + Will (Shucheng) Liu + Huawei Technologies + Bantian, Longgang District + Shenzhen + 518129 + China + + Email: liushucheng@huawei.com |