draft-ietf-6man-deprecate-atomfrag-generation-08.txt | rfc8021.txt | |||
---|---|---|---|---|
IPv6 maintenance Working Group (6man) F. Gont | Internet Engineering Task Force (IETF) F. Gont | |||
Internet-Draft SI6 Networks / UTN-FRH | Request for Comments: 8021 SI6 Networks / UTN-FRH | |||
Intended status: Informational W. Liu | Category: Informational W. Liu | |||
Expires: March 16, 2017 Huawei Technologies | ISSN: 2070-1721 Huawei Technologies | |||
T. Anderson | T. Anderson | |||
Redpill Linpro | Redpill Linpro | |||
September 12, 2016 | January 2017 | |||
Generation of IPv6 Atomic Fragments Considered Harmful | Generation of IPv6 Atomic Fragments Considered Harmful | |||
draft-ietf-6man-deprecate-atomfrag-generation-08 | ||||
Abstract | Abstract | |||
This document discusses the security implications of the generation | This document discusses the security implications of the generation | |||
of IPv6 atomic fragments and a number of interoperability issues | of IPv6 atomic fragments and a number of interoperability issues | |||
associated with IPv6 atomic fragments, and concludes that the | associated with IPv6 atomic fragments. It concludes that the | |||
aforementioned functionality is undesirable, thus documenting the | aforementioned functionality is undesirable and thus documents the | |||
motivation for removing this functionality in the revision of the | motivation for removing this functionality from an upcoming revision | |||
core IPv6 protocol specification. | of the core IPv6 protocol specification (RFC 2460). | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
provisions of BCP 78 and BCP 79. | published for informational purposes. | |||
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 http://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Not all documents | |||
approved by the IESG are a candidate for any level of Internet | ||||
Standard; see Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on March 16, 2017. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
http://www.rfc-editor.org/info/rfc8021. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2017 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction ....................................................2 | |||
2. Security Implications of the Generation of IPv6 Atomic | 2. Security Implications of the Generation of IPv6 Atomic | |||
Fragments . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | Fragments .......................................................3 | |||
3. Additional Considerations . . . . . . . . . . . . . . . . . . 5 | 3. Additional Considerations .......................................5 | |||
4. Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 4. Conclusions .....................................................8 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 5. Security Considerations .........................................8 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 6. References ......................................................9 | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 | 6.1. Normative References .......................................9 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 6.2. Informative References ....................................10 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 8 | Acknowledgements ..................................................12 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 9 | Authors' Addresses ................................................12 | |||
Appendix A. Small Survey of OSes that Fail to Produce IPv6 | ||||
Atomic Fragments . . . . . . . . . . . . . . . . . . 10 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 | ||||
1. Introduction | 1. Introduction | |||
[RFC2460] specifies the IPv6 fragmentation mechanism, which allows | [RFC2460] specifies the IPv6 fragmentation mechanism, which allows | |||
IPv6 packets to be fragmented into smaller pieces such that they can | IPv6 packets to be fragmented into smaller pieces such that they can | |||
fit in the Path-MTU to the intended destination(s). | fit in the Path MTU to the intended destination(s). | |||
A legacy IPv4/IPv6 translator implementing the Stateless IP/ICMP | A legacy IPv4/IPv6 translator implementing the Stateless IP/ICMP | |||
Translation algorithm [RFC6145] may legitimately generate ICMPv6 | Translation Algorithm [RFC6145] may legitimately generate ICMPv6 | |||
"Packet Too Big" messages [RFC4443] advertising a "Next-Hop MTU" | "Packet Too Big" (PTB) error messages [RFC4443] advertising an MTU | |||
smaller than 1280 (the minimum IPv6 MTU). Section 5 of [RFC2460] | smaller than 1280 (the minimum IPv6 MTU). Section 5 of [RFC2460] | |||
states that, upon receiving such an ICMPv6 error message, hosts are | states that, upon receiving such an ICMPv6 error message, hosts are | |||
not required to reduce the assumed Path-MTU, but must simply include | not required to reduce the assumed Path MTU but must simply include a | |||
a Fragment Header in all subsequent packets sent to that destination. | Fragment Header in all subsequent packets sent to that destination. | |||
The resulting packets will thus *not* be actually fragmented into | The resulting packets will thus *not* be actually fragmented into | |||
several pieces, but rather be "atomic fragments" [RFC6946] (i.e., | several pieces; rather, they will be "atomic" fragments [RFC6946] | |||
just include a Fragment Header with both the "Fragment Offset" and | (i.e., they will just include a Fragment Header with both the | |||
the "M" flag set to 0). [RFC6946] requires that these atomic | "Fragment Offset" and the "M" flag set to 0). [RFC6946] requires | |||
fragments be essentially processed by the destination host as non- | that these atomic fragments be essentially processed by the | |||
fragmented traffic (since there are not really any fragments to be | destination host(s) as non-fragmented traffic (since there are not | |||
reassembled). The goal of these atomic fragments is simply to convey | really any fragments to be reassembled). The goal of these atomic | |||
an appropriate Identification value to be employed by IPv6/IPv4 | fragments is simply to convey an appropriate Identification value to | |||
translators for the resulting IPv4 fragments. | be employed by IPv6/IPv4 translators for the resulting IPv4 | |||
fragments. | ||||
While atomic fragments might seem rather benign, there are scenarios | While atomic fragments might seem rather benign, there are scenarios | |||
in which the generation of IPv6 atomic fragments can be leveraged for | in which the generation of IPv6 atomic fragments can be leveraged for | |||
performing a number of attacks against the corresponding IPv6 flows. | performing a number of attacks against the corresponding IPv6 flows. | |||
Since there are concrete security implications arising from the | Since there are concrete security implications arising from the | |||
generation of IPv6 atomic fragments, and there is no real gain in | generation of IPv6 atomic fragments and there is no real gain in | |||
generating IPv6 atomic fragments (as opposed to e.g. having IPv6/IPv4 | generating IPv6 atomic fragments (as opposed to, for example, having | |||
translators generate a Fragment Identification value themselves), we | IPv6/IPv4 translators generate an IPv4 Identification value | |||
conclude that this functionality is undesirable. | themselves), we conclude that this functionality is undesirable. | |||
Section 2 briefly discusses the security implications of the | Section 2 briefly discusses the security implications of the | |||
generation of IPv6 atomic fragments, and describes a specific Denial | generation of IPv6 atomic fragments and describes a specific | |||
of Service (DoS) attack vector that leverages the widespread | Denial-of-Service (DoS) attack vector that leverages the widespread | |||
filtering of IPv6 fragments in the public Internet. Section 3 | dropping of IPv6 fragments in the public Internet. Section 3 | |||
provides additional considerations regarding the usefulness of | provides additional considerations regarding the usefulness of | |||
generating IPv6 atomic fragments. | generating IPv6 atomic fragments. | |||
2. Security Implications of the Generation of IPv6 Atomic Fragments | 2. Security Implications of the Generation of IPv6 Atomic Fragments | |||
The security implications of IP fragmentation have been discussed at | The security implications of IP fragmentation have been discussed at | |||
length in [RFC6274] and [RFC7739]. An attacker can leverage the | length in [RFC6274] and [RFC7739]. An attacker can leverage the | |||
generation of IPv6 atomic fragments to trigger the use of | generation of IPv6 atomic fragments to trigger the use of | |||
fragmentation in an arbitrary IPv6 flow (in scenarios in which actual | fragmentation in an arbitrary IPv6 flow (in scenarios in which actual | |||
fragmentation of packets is not needed), and subsequently perform any | fragmentation of packets is not needed) and can subsequently perform | |||
fragmentation-based attack against legacy IPv6 nodes that do not | any type of fragmentation-based attack against legacy IPv6 nodes that | |||
implement [RFC6946]. That is, employing fragmentation where not | do not implement [RFC6946]. That is, employing fragmentation where | |||
actually needed allows for fragmentation-based attack vectors to be | not actually needed allows for fragmentation-based attack vectors to | |||
employed, unnecessarily. | be employed, unnecessarily. | |||
We note that, Unfortunately, even nodes that already implement | We note that, unfortunately, even nodes that already implement | |||
[RFC6946] can be subject to DoS attacks as a result of the generation | [RFC6946] can be subject to DoS attacks as a result of the generation | |||
of IPv6 atomic fragments. Let us assume that Host A is communicating | of IPv6 atomic fragments. Let us assume that Host A is communicating | |||
with Server B, and that, as a result of the widespread dropping of | with Host B and that, as a result of the widespread dropping of IPv6 | |||
IPv6 packets that contain extension headers (including fragmentation) | packets that contain extension headers (including fragmentation) | |||
[RFC7872], some intermediate node filters fragments between Server B | [RFC7872], some intermediate node filters fragments between Host B | |||
and Host A. If an attacker sends a forged ICMPv6 "Packet Too Big" | and Host A. If an attacker sends a forged ICMPv6 PTB error message | |||
(PTB) error message to server B, reporting an MTU smaller than 1280, | to Host B, reporting an MTU smaller than 1280, this will trigger the | |||
this will trigger the generation of IPv6 atomic fragments from that | generation of IPv6 atomic fragments from that moment on (as required | |||
moment on (as required by [RFC2460]). When server B starts sending | by [RFC2460]). When Host B starts sending IPv6 atomic fragments (in | |||
IPv6 atomic fragments (in response to the received ICMPv6 PTB), these | response to the received ICMPv6 PTB error message), these packets | |||
packets will be dropped, since we previously noted that IPv6 packets | will be dropped, since we previously noted that IPv6 packets with | |||
with extension headers were being dropped between Server B and Host | extension headers were being dropped between Host B and Host A. | |||
A. Thus, this situation will result in a Denial of Service (DoS) | Thus, this situation will result in a DoS scenario. | |||
scenario. | ||||
Another possible scenario is that in which two BGP peers are | Another possible scenario is that in which two BGP peers are | |||
employing IPv6 transport, and they implement Access Control Lists | employing IPv6 transport and they implement Access Control Lists | |||
(ACLs) to drop IPv6 fragments (to avoid control-plane attacks). If | (ACLs) to drop IPv6 fragments (to avoid control-plane attacks). If | |||
the aforementioned BGP peers drop IPv6 fragments but still honor | the aforementioned BGP peers drop IPv6 fragments but still honor | |||
received ICMPv6 Packet Too Big error messages, an attacker could | received ICMPv6 PTB error messages, an attacker could easily attack | |||
easily attack the peering session by simply sending an ICMPv6 PTB | the corresponding peering session by simply sending an ICMPv6 PTB | |||
message with a reported MTU smaller than 1280 bytes. Once the attack | message with a reported MTU smaller than 1280 bytes. Once the attack | |||
packet has been sent, the aforementioned routers will themselves be | packet has been sent, the aforementioned routers will themselves be | |||
the ones dropping their own traffic. | the ones dropping their own traffic. | |||
The aforementioned attack vector is exacerbated by the following | The aforementioned attack vector is exacerbated by the following | |||
factors: | factors: | |||
o The attacker does not need to forge the IPv6 Source Address of his | o The attacker does not need to forge the IPv6 Source Address of his | |||
attack packets. Hence, deployment of simple BCP38 filters will | attack packets. Hence, deployment of simple filters as per BCP 38 | |||
not help as a counter-measure. | [BCP38] does not help as a countermeasure. | |||
o Only the IPv6 addresses of the IPv6 packet embedded in the ICMPv6 | o Only the IPv6 addresses of the IPv6 packet embedded in the ICMPv6 | |||
payload needs to be forged. While one could envision filtering | payload need to be forged. While one could envision filtering | |||
devices enforcing BCP38-style filters on the ICMPv6 payload, the | devices enforcing filters in the style of BCP 38 on the ICMPv6 | |||
use of extension headers (by the attacker) could make this | payload, the use of extension headers (by the attacker) could make | |||
difficult, if at all possible. | this difficult, if not impossible. | |||
o Many implementations fail to perform validation checks on the | o Many implementations fail to perform validation checks on the | |||
received ICMPv6 error messages, as recommended in Section 5.2 of | received ICMPv6 error messages as recommended in Section 5.2 of | |||
[RFC4443] and documented in [RFC5927]. It should be noted that in | [RFC4443] and documented in [RFC5927]. It should be noted that in | |||
some cases, such as when an ICMPv6 error message has (supposedly) | some cases, such as when an ICMPv6 error message has (supposedly) | |||
been elicited by a connection-less transport protocol (or some | been elicited by a connectionless transport protocol (or some | |||
other connection-less protocol being encapsulated in IPv6), it may | other connectionless protocol being encapsulated in IPv6), it may | |||
be virtually impossible to perform validation checks on the | be virtually impossible to perform validation checks on the | |||
received ICMPv6 error message. And, because of IPv6 extension | received ICMPv6 error message. And, because of IPv6 extension | |||
headers, the ICMPv6 payload might not even contain any useful | headers, the ICMPv6 payload might not even contain any useful | |||
information on which to perform validation checks. | information on which to perform validation checks. | |||
o Upon receipt of one of the aforementioned ICMPv6 "Packet Too Big" | o Upon receipt of one of the aforementioned ICMPv6 PTB error | |||
error messages, the Destination Cache [RFC4861] is usually updated | messages, the Destination Cache [RFC4861] is usually updated to | |||
to reflect that any subsequent packets to such destination should | reflect that any subsequent packets to such a destination should | |||
include a Fragment Header. This means that a single ICMPv6 | include a Fragment Header. This means that a single ICMPv6 PTB | |||
"Packet Too Big" error message might affect multiple communication | error message might affect multiple communication instances (e.g., | |||
instances (e.g., TCP connections) with such destination. | TCP connections) with such a destination. | |||
o As noted in Section 3, SIIT (Stateless IP/ICMP Translation | o As noted in Section 3, SIIT (the Stateless IP/ICMP Translation | |||
Algorithm) [RFC6145], including derivative protocols such as | Algorithm) [RFC6145], including derivative protocols such as | |||
Stateful NAT64 [RFC6146], was the only technology making use of | Stateful NAT64 (Network Address and Protocol Translation from IPv6 | |||
atomic fragments. Unfortunately, an IPv6 node cannot easily limit | Clients to IPv4 Servers) [RFC6146], was the only technology making | |||
its exposure to the aforementioned attack vector by only | use of atomic fragments. Unfortunately, an IPv6 node cannot | |||
generating IPv6 atomic fragments towards IPv4 destinations behind | easily limit its exposure to the aforementioned attack vector by | |||
a stateless translator. This is due to the fact that Section 3.3 | only generating IPv6 atomic fragments towards IPv4 destinations | |||
of [RFC6052] encourages operators to use a Network-Specific Prefix | behind a stateless translator. This is due to the fact that | |||
(NSP) that maps the IPv4 address space into IPv6. When an NSP is | Section 3.3 of [RFC6052] encourages operators to use a | |||
being used, IPv6 addresses representing IPv4 nodes (reached | Network-Specific Prefix (NSP) that maps the IPv4 address space | |||
through a stateless translator) are indistinguishable from native | into IPv6. When an NSP is being used, IPv6 addresses representing | |||
IPv6 addresses. | IPv4 nodes (reached through a stateless translator) are | |||
indistinguishable from native IPv6 addresses. | ||||
3. Additional Considerations | 3. Additional Considerations | |||
Besides the security assessment provided in Section 2, it is | Besides the security assessment provided in Section 2, it is | |||
interesting to evaluate the pros and cons of having an IPv6-to-IPv4 | interesting to evaluate the pros and cons of having an IPv6-to-IPv4 | |||
translating router rely on the generation of IPv6 atomic fragments. | translating router rely on the generation of IPv6 atomic fragments. | |||
Relying on the generation of IPv6 atomic fragments implies a reliance | Relying on the generation of IPv6 atomic fragments implies a | |||
on: | reliance on: | |||
1. ICMPv6 packets arriving from the translator to the IPv6 node | 1. ICMPv6 packets arriving from the translator to the destination | |||
IPv6 node | ||||
2. The ability of the nodes receiving ICMPv6 PTB messages reporting | 2. The ability of the nodes receiving ICMPv6 PTB messages reporting | |||
an MTU smaller than 1280 bytes to actually produce atomic | an MTU smaller than 1280 bytes to actually produce atomic | |||
fragments | fragments | |||
3. Support for IPv6 fragmentation on the IPv6 side of the translator | 3. Support for IPv6 fragmentation on the IPv6 side of the translator | |||
4. The ability of the translator implementation to access the | 4. The ability of the translator implementation to access the | |||
information conveyed by the IPv6 Fragment Header | information conveyed by the Fragment Header | |||
5. The value extracted from the low-order 16-bits of the IPv6 | 5. The value extracted from the low-order 16 bits of the IPv6 | |||
fragment Identification resulting in an appropriate IPv4 | fragment header Identification field resulting in an appropriate | |||
Identification value | IPv4 Identification value | |||
Unfortunately, | Unfortunately, | |||
1. There exists a fair share of evidence of ICMPv6 Packet Too Big | 1. There exists a fair share of evidence of ICMPv6 PTB error | |||
messages being dropped on the public Internet (for instance, that | messages being dropped on the public Internet (for instance, that | |||
is one of the reasons for which PLPMTUD [RFC4821] was produced). | is one of the reasons for which Packetization Layer Path MTU | |||
Therefore, relying on such messages being successfully delivered | Discovery (PLPMTUD) [RFC4821] was produced). Therefore, relying | |||
will affect the robustness of the protocol that relies on them. | on such messages being successfully delivered will affect the | |||
robustness of the protocol that relies on them. | ||||
2. A number of IPv6 implementations have been known to fail to | 2. A number of IPv6 implementations have been known to fail to | |||
generate IPv6 atomic fragments in response to ICMPv6 PTB messages | generate IPv6 atomic fragments in response to ICMPv6 PTB messages | |||
reporting an MTU smaller than 1280 bytes (see Appendix A for a | reporting an MTU smaller than 1280 bytes. Additionally, the | |||
small survey). Additionally, the results included in Section 6 | results included in Section 6 of [RFC6145] note that 57% of the | |||
of [RFC6145] note that 57% of the tested web servers failed to | tested web servers failed to produce IPv6 atomic fragments in | |||
produce IPv6 atomic fragments in response to ICMPv6 PTB messages | response to ICMPv6 PTB messages reporting an MTU smaller than | |||
reporting an MTU smaller than 1280 bytes. Thus, any protocol | 1280 bytes. Thus, any protocol relying on IPv6 atomic fragment | |||
relying on IPv6 atomic fragment generation for proper functioning | generation for proper functioning will have interoperability | |||
will have interoperability problems with the aforementioned IPv6 | problems with the aforementioned IPv6 stacks. | |||
stacks. | ||||
3. IPv6 atomic fragment generation represents a case in which | 3. IPv6 atomic fragment generation represents a case in which | |||
fragmented traffic is produced where otherwise it would not be | fragmented traffic is produced where otherwise it would not be | |||
needed. Since there is widespread filtering of IPv6 fragments in | needed. Since there is widespread dropping of IPv6 fragments in | |||
the public Internet [RFC7872], this would mean that the | the public Internet [RFC7872], this would mean that the | |||
(unnecessary) use of IPv6 fragmentation might result, | (unnecessary) use of IPv6 fragmentation might result, | |||
unnecessarily, in a Denial of Service situation even in | unnecessarily, in a DoS situation even in legitimate cases. | |||
legitimate cases. | ||||
4. The packet-handling API at the node where the translator is | 4. The packet-handling API at the node where the translator is | |||
running may obscure fragmentation-related information. In such | running may obscure fragmentation-related information. In such | |||
scenarios, the information conveyed by the Fragment Header may be | scenarios, the information conveyed by the Fragment Header may be | |||
unavailable to the translator. [JOOL] discusses a sample | unavailable to the translator. [JOOL] discusses a sample | |||
framework (Linux Netfilter) that hinders access to the | framework (Linux Netfilter) that hinders access to the | |||
information conveyed in IPv6 atomic fragments. | information conveyed in IPv6 fragments. | |||
5. While [RFC2460] requires that the IPv6 fragment Identification of | 5. While [RFC2460] requires that the IPv6 fragment header | |||
a fragmented packet be different that of any other fragmented | Identification field of a fragmented packet be different than | |||
packet sent recently with the same Source Address and Destination | that of any other fragmented packet sent recently with the same | |||
Address, there is no requirement on the low-order 16-bits of such | Source Address and Destination Address, there is no requirement | |||
value. Thus, there is no guarantee that, by employing the low- | on the low-order 16 bits of such a value. Thus, there is no | |||
order 16-bits of the IPv6 fragment Identification of a packet | guarantee that IPv4 fragment Identification collisions will be | |||
sent by a source host, IPv4 fragment identification collisions | avoided or reduced by employing the low-order 16 bits of the IPv6 | |||
will be avoided or reduced. Besides, collisions might occur | fragment header Identification field of a packet sent by a source | |||
where two distinct IPv6 Destination Addresses are translated into | host. Besides, collisions might occur where two distinct IPv6 | |||
the same IPv4 address, such that Identification values that might | Destination Addresses are translated into the same IPv4 address, | |||
have been generated to be unique in the IPv6 context end up | such that Identification values that might have been generated to | |||
colliding when used in the translated IPv4 context. | be unique in the context of IPv6 end up colliding when used in | |||
the context of translated IPv4. | ||||
We note that SIIT essentially employs the Fragment Header of IPv6 | We note that SIIT essentially employs the Fragment Header of IPv6 | |||
atomic fragments to signal the translator how to set the DF bit of | atomic fragments to signal the translator how to set the Don't | |||
IPv4 datagrams (the DF bit is cleared when the IPv6 packet contains a | Fragment (DF) bit of IPv4 datagrams (the DF bit is cleared when the | |||
Fragment Header, and is otherwise set to 1 when the IPv6 packet does | IPv6 packet contains a Fragment Header and is otherwise set to 1 when | |||
not contain an IPv6 Fragment Header). Additionally, the translator | the IPv6 packet does not contain a Fragment Header). Additionally, | |||
will employ the low-order 16-bits of the IPv6 Fragment Identification | the translator will employ the low-order 16 bits of the IPv6 fragment | |||
for setting the IPv4 Fragment Identification. At least in theory, | header Identification field for setting the IPv4 Identification. At | |||
this is expected to reduce the IPv4 Identification collision rate in | least in theory, this is expected to reduce the IPv4 Identification | |||
the following specific scenario: | collision rate in the following specific scenario: | |||
1. An IPv6 node communicates with an IPv4 node (through SIIT). | 1. An IPv6 node communicates with an IPv4 node (through SIIT). | |||
2. The IPv4 node is located behind an IPv4 link with an MTU smaller | 2. The IPv4 node is located behind an IPv4 link with an MTU smaller | |||
than 1260 bytes. An IPv4 Path MTU of 1260 corresponds to an IPv6 | than 1260 bytes. An IPv4 Path MTU of 1260 corresponds to an IPv6 | |||
Path MTU of 1280, due to an option-less IPv4 header being 20 | Path MTU of 1280, due to an optionless IPv4 header being 20 bytes | |||
bytes shorter than the IPv6 header. | shorter than the IPv6 header. | |||
3. ECMP routing [RFC2992] with more than one translator is employed | 3. ECMP routing [RFC2992] with more than one translator is employed, | |||
for e.g., redundancy purposes. | for example, for redundancy purposes. | |||
In such a scenario, if each translator were to select the IPv4 | In such a scenario, if each translator were to select the IPv4 | |||
Identification on its own (rather than selecting the IPv4 | Identification on its own (rather than selecting the IPv4 | |||
Identification from the low-order 16-bits of the Fragment | Identification from the low-order 16 bits of the fragment | |||
Identification of IPv6 atomic fragments), this could possibly lead to | Identification of IPv6 atomic fragments), this could possibly lead to | |||
IPv4 Identification collisions. However, as noted above, the value | IPv4 Identification collisions. However, as noted above, the value | |||
extracted from the low-order 16-bits of the IPv6 fragment | extracted from the low-order 16 bits of the IPv6 fragment header | |||
Identification might not result in an appropriate IPv4 | Identification field might not result in an appropriate IPv4 | |||
identification: for example, a number of implementations set the IPv6 | Identification: for example, a number of implementations set the IPv6 | |||
Fragment Identification according to the output of a Pseudo-Random | fragment header Identification field according to the output of a | |||
Number Generator (PRNG) (see Appendix B of [RFC7739]); hence,if the | Pseudorandom Number Generator (PRNG) (see Appendix B of [RFC7739]); | |||
translator only employs the low-order 16-bits of such value, it is | hence, if the translator only employs the low-order 16 bits of such a | |||
very unlikely that relying on the Fragment Identification of the IPv6 | value, it is very unlikely that relying on the fragment | |||
atomic fragment will result in a reduced IPv4 Identification | Identification of the IPv6 atomic fragment will result in a reduced | |||
collision rate (when compared to the case where the translator | IPv4 Identification collision rate (when compared to the case where | |||
selects each IPv4 Identification on its own). Besides, because of | the translator selects each IPv4 Identification on its own). | |||
the limited sized of the IPv4 identification field, it is | Besides, because of the limited size of the IPv4 Identification | |||
nevertheless virtually impossible to guarantee uniqueness of the IPv4 | field, it is nevertheless virtually impossible to guarantee | |||
identification values without artificially limiting the data rate of | uniqueness of the IPv4 Identification values without artificially | |||
fragmented traffic [RFC6864] [RFC4963]. | limiting the data rate of fragmented traffic [RFC6864] [RFC4963]. | |||
[RFC6145] was the only "consumer" of IPv6 atomic fragments, and it | [RFC6145] was the only "consumer" of IPv6 atomic fragments, and it | |||
correctly and diligently noted (in Section 6) the possible | correctly and diligently noted (in its Section 6) the possible | |||
interoperability problems of relying on IPv6 atomic fragments, | interoperability problems of relying on IPv6 atomic fragments, | |||
proposing a workaround that led to more robust behavior and | proposing a workaround that led to more robust behavior and | |||
simplified code. [RFC6145] has been obsoleted by [RFC7915], such | simplified code. [RFC6145] has been obsoleted by [RFC7915], such | |||
that SIIT does not rely on IPv6 atomic fragments. | that SIIT does not rely on IPv6 atomic fragments. | |||
4. Conclusions | 4. Conclusions | |||
Taking all of the above considerations into account, we recommend | Taking all of the above considerations into account, we recommend | |||
that IPv6 atomic fragments be deprecated. | that IPv6 atomic fragments be deprecated. | |||
In particular: | In particular: | |||
o IPv4/IPv6 translators should be updated to not generate ICMPv6 | o IPv4/IPv6 translators should be updated to not generate ICMPv6 PTB | |||
Packet Too Big errors containing a Path MTU value smaller than the | error messages containing an MTU value smaller than the minimum | |||
minimum IPv6 MTU of 1280 bytes. This will ensure that current | IPv6 MTU of 1280 bytes. This will ensure that current IPv6 nodes | |||
IPv6 nodes will never have a legitimate need to start generating | will never have a legitimate need to start generating IPv6 atomic | |||
IPv6 atomic fragments. | fragments. | |||
o The recommendation in the previous bullet ensures there no longer | o The recommendation in the previous bullet ensures that there are | |||
are any valid reasons for ICMPv6 Packet Too Big errors containing | no longer any valid reasons for ICMPv6 PTB error messages | |||
a Path MTU value smaller than the minimum IPv6 MTU to exist. IPv6 | reporting an MTU value smaller than the minimum IPv6 MTU | |||
nodes should therefore be updated to ignore them as invalid. | (1280 bytes). IPv6 nodes should therefore be updated to ignore | |||
ICMPv6 PTB error messages reporting an MTU smaller than 1280 bytes | ||||
as invalid. | ||||
We note that these recommendations have been incorporated in | We note that these recommendations have been incorporated in | |||
[I-D.ietf-6man-rfc1981bis], [I-D.ietf-6man-rfc2460bis] and [RFC7915]. | [IPv6-PMTUD], [IPv6-Spec], and [RFC7915]. | |||
5. IANA Considerations | ||||
There are no IANA registries within this document. | ||||
6. Security Considerations | 5. Security Considerations | |||
This document briefly discusses the security implications of the | This document briefly discusses the security implications of the | |||
generation of IPv6 atomic fragments, and describes one specific | generation of IPv6 atomic fragments and describes one specific DoS | |||
Denial of Service (DoS) attack vector that leverages the widespread | attack vector that leverages the widespread dropping of IPv6 | |||
filtering of IPv6 fragments in the public Internet. It concludes | fragments in the public Internet. It concludes that the generation | |||
that the generation of IPv6 atomic fragments is an undesirable | of IPv6 atomic fragments is an undesirable feature and documents the | |||
feature, and documents the motivation for removing this functionality | motivation for removing this functionality from [IPv6-Spec]. | |||
from [I-D.ietf-6man-rfc2460bis]. | ||||
7. Acknowledgements | ||||
The authors would like to thank (in alphabetical order) Congxiao Bao, | ||||
Carlos Jesus Bernardos Cano, Bob Briscoe, Brian Carpenter, Tatuya | ||||
Jinmei, Bob Hinden, Alberto Leiva, Ted Lemon, Xing Li, Jeroen Massar, | ||||
Erik Nordmark, Joe Touch, Qiong Sun, Ole Troan, Tina Tsou, and Bernie | ||||
Volz, for providing valuable comments on earlier versions of this | ||||
document. | ||||
Fernando Gont would like to thank Jan Zorz / Go6 Lab | ||||
<http://go6lab.si/>, and Jared Mauch / NTT America, for providing | ||||
access to systems and networks that were employed to produce some of | ||||
the tests that resulted in the publication of this document. | ||||
Additionally, he would like to thank SixXS <https://www.sixxs.net> | ||||
for providing IPv6 connectivity. | ||||
8. References | 6. References | |||
8.1. Normative References | 6.1. Normative References | |||
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
(IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | |||
December 1998, <http://www.rfc-editor.org/info/rfc2460>. | December 1998, <http://www.rfc-editor.org/info/rfc2460>. | |||
[BCP38] Ferguson, P. and D. Senie, "Network Ingress Filtering: | ||||
Defeating Denial of Service Attacks which employ IP Source | ||||
Address Spoofing", BCP 38, RFC 2827, May 2000, | ||||
<http://www.rfc-editor.org/info/rfc2827>. | ||||
[RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | |||
Control Message Protocol (ICMPv6) for the Internet | Control Message Protocol (ICMPv6) for the Internet | |||
Protocol Version 6 (IPv6) Specification", RFC 4443, | Protocol Version 6 (IPv6) Specification", RFC 4443, | |||
DOI 10.17487/RFC4443, March 2006, | DOI 10.17487/RFC4443, March 2006, | |||
<http://www.rfc-editor.org/info/rfc4443>. | <http://www.rfc-editor.org/info/rfc4443>. | |||
[RFC4821] Mathis, M. and J. Heffner, "Packetization Layer Path MTU | [RFC4821] Mathis, M. and J. Heffner, "Packetization Layer Path MTU | |||
Discovery", RFC 4821, DOI 10.17487/RFC4821, March 2007, | Discovery", RFC 4821, DOI 10.17487/RFC4821, March 2007, | |||
<http://www.rfc-editor.org/info/rfc4821>. | <http://www.rfc-editor.org/info/rfc4821>. | |||
skipping to change at page 9, line 18 ¶ | skipping to change at page 10, line 5 ¶ | |||
[RFC7915] Bao, C., Li, X., Baker, F., Anderson, T., and F. Gont, | [RFC7915] Bao, C., Li, X., Baker, F., Anderson, T., and F. Gont, | |||
"IP/ICMP Translation Algorithm", RFC 7915, | "IP/ICMP Translation Algorithm", RFC 7915, | |||
DOI 10.17487/RFC7915, June 2016, | DOI 10.17487/RFC7915, June 2016, | |||
<http://www.rfc-editor.org/info/rfc7915>. | <http://www.rfc-editor.org/info/rfc7915>. | |||
[RFC6864] Touch, J., "Updated Specification of the IPv4 ID Field", | [RFC6864] Touch, J., "Updated Specification of the IPv4 ID Field", | |||
RFC 6864, DOI 10.17487/RFC6864, February 2013, | RFC 6864, DOI 10.17487/RFC6864, February 2013, | |||
<http://www.rfc-editor.org/info/rfc6864>. | <http://www.rfc-editor.org/info/rfc6864>. | |||
8.2. Informative References | 6.2. Informative References | |||
[RFC2992] Hopps, C., "Analysis of an Equal-Cost Multi-Path | [RFC2992] Hopps, C., "Analysis of an Equal-Cost Multi-Path | |||
Algorithm", RFC 2992, DOI 10.17487/RFC2992, November 2000, | Algorithm", RFC 2992, DOI 10.17487/RFC2992, November 2000, | |||
<http://www.rfc-editor.org/info/rfc2992>. | <http://www.rfc-editor.org/info/rfc2992>. | |||
[RFC5927] Gont, F., "ICMP Attacks against TCP", RFC 5927, | [RFC5927] Gont, F., "ICMP Attacks against TCP", RFC 5927, | |||
DOI 10.17487/RFC5927, July 2010, | DOI 10.17487/RFC5927, July 2010, | |||
<http://www.rfc-editor.org/info/rfc5927>. | <http://www.rfc-editor.org/info/rfc5927>. | |||
[RFC4963] Heffner, J., Mathis, M., and B. Chandler, "IPv4 Reassembly | [RFC4963] Heffner, J., Mathis, M., and B. Chandler, "IPv4 Reassembly | |||
skipping to change at page 10, line 15 ¶ | skipping to change at page 11, line 5 ¶ | |||
[RFC7739] Gont, F., "Security Implications of Predictable Fragment | [RFC7739] Gont, F., "Security Implications of Predictable Fragment | |||
Identification Values", RFC 7739, DOI 10.17487/RFC7739, | Identification Values", RFC 7739, DOI 10.17487/RFC7739, | |||
February 2016, <http://www.rfc-editor.org/info/rfc7739>. | February 2016, <http://www.rfc-editor.org/info/rfc7739>. | |||
[RFC7872] Gont, F., Linkova, J., Chown, T., and W. Liu, | [RFC7872] Gont, F., Linkova, J., Chown, T., and W. Liu, | |||
"Observations on the Dropping of Packets with IPv6 | "Observations on the Dropping of Packets with IPv6 | |||
Extension Headers in the Real World", RFC 7872, | Extension Headers in the Real World", RFC 7872, | |||
DOI 10.17487/RFC7872, June 2016, | DOI 10.17487/RFC7872, June 2016, | |||
<http://www.rfc-editor.org/info/rfc7872>. | <http://www.rfc-editor.org/info/rfc7872>. | |||
[I-D.ietf-6man-rfc2460bis] | [IPv6-Spec] | |||
Deering, D. and R. Hinden, "Internet Protocol, Version 6 | Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
(IPv6) Specification", draft-ietf-6man-rfc2460bis-05 (work | (IPv6) Specification", Work in Progress, | |||
in progress), June 2016. | draft-ietf-6man-rfc2460bis-08, November 2016. | |||
[I-D.ietf-6man-rfc1981bis] | ||||
<>, J., <>, S., <>, J., and R. Hinden, "Path MTU Discovery | ||||
for IP version 6", draft-ietf-6man-rfc1981bis-02 (work in | ||||
progress), April 2016. | ||||
[Morbitzer] | [IPv6-PMTUD] | |||
Morbitzer, M., "TCP Idle Scans in IPv6", Master's Thesis. | McCann, J., Deering, S., Mogul, J., and R. Hinden, Ed., | |||
Thesis number: 670. Department of Computing Science, | "Path MTU Discovery for IP version 6", Work in Progress, | |||
Radboud University Nijmegen. August 2013, | draft-ietf-6man-rfc1981bis-03, October 2016. | |||
<http://www.ru.nl/publish/pages/769526/ | ||||
m_morbitzer_masterthesis.pdf>. | ||||
[JOOL] Leiva Popper, A., "nf_defrag_ipv4 and nf_defrag_ipv6", | [JOOL] Leiva Popper, A., "nf_defrag_ipv4 and nf_defrag_ipv6", | |||
April 2015, <https://github.com/NICMx/Jool/wiki/ | April 2015, <https://github.com/NICMx/Jool/wiki/ | |||
nf_defrag_ipv4-and-nf_defrag_ipv6#implementation-gotchas>. | nf_defrag_ipv4-and-nf_defrag_ipv6#implementation-gotchas>. | |||
Appendix A. Small Survey of OSes that Fail to Produce IPv6 Atomic | Acknowledgements | |||
Fragments | ||||
[This section will probably be removed from this document before it | ||||
is published as an RFC]. | ||||
This section includes a non-exhaustive list of operating systems that | ||||
*fail* to produce IPv6 atomic fragments. It is based on the results | ||||
published in [RFC6946] and [Morbitzer]. It is simply meant as a | ||||
datapoint regarding the extent to which IPv6 implementations can be | ||||
relied upon to generate IPv6 atomic fragments. | ||||
The following Operating Systems fail to generate IPv6 atomic | ||||
fragments in response to ICMPv6 PTB messages that report an MTU | ||||
smaller than 1280 bytes: | ||||
o FreeBSD 8.0 | ||||
o Linux kernel 2.6.32 | ||||
o Linux kernel 3.2 | ||||
o Mac OS X 10.6.7 | The authors would like to thank (in alphabetical order) Congxiao Bao, | |||
Bob Briscoe, Carlos Jesus Bernardos Cano, Brian Carpenter, Bob | ||||
Hinden, Tatuya Jinmei, Alberto Leiva Popper, Ted Lemon, Xing Li, | ||||
Jeroen Massar, Erik Nordmark, Qiong Sun, Joe Touch, Ole Troan, Tina | ||||
Tsou, and Bernie Volz for providing valuable comments on earlier | ||||
versions of this document. | ||||
o NetBSD 5.1 | Fernando Gont would like to thank Jan Zorz / Go6 Lab | |||
<http://go6lab.si/>, and Jared Mauch / NTT America, for providing | ||||
access to systems and networks that were employed to produce some of | ||||
the tests that resulted in the publication of this document. | ||||
Additionally, he would like to thank Ivan Arce, Guillermo Gont, and | ||||
Diego Armando Maradona for their inspiration. | ||||
Authors' Addresses | Authors' Addresses | |||
Fernando Gont | Fernando Gont | |||
SI6 Networks / UTN-FRH | SI6 Networks / UTN-FRH | |||
Evaristo Carriego 2644 | Evaristo Carriego 2644 | |||
Haedo, Provincia de Buenos Aires 1706 | Haedo, Provincia de Buenos Aires 1706 | |||
Argentina | Argentina | |||
Phone: +54 11 4650 8472 | Phone: +54 11 4650 8472 | |||
Email: fgont@si6networks.com | Email: fgont@si6networks.com | |||
URI: http://www.si6networks.com | URI: http://www.si6networks.com | |||
Will(Shucheng) Liu | Will (Shucheng) Liu | |||
Huawei Technologies | Huawei Technologies | |||
Bantian, Longgang District | Bantian, Longgang District | |||
Shenzhen 518129 | Shenzhen 518129 | |||
P.R. China | China | |||
Email: liushucheng@huawei.com | Email: liushucheng@huawei.com | |||
Tore Anderson | Tore Anderson | |||
Redpill Linpro | Redpill Linpro | |||
Vitaminveien 1A | Vitaminveien 1A | |||
Oslo 0485 | Oslo 0485 | |||
Norway | Norway | |||
Phone: +47 959 31 212 | Phone: +47 959 31 212 | |||
End of changes. 62 change blocks. | ||||
248 lines changed or deleted | 214 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |