rfc8900v2.txt   rfc8900.txt 
skipping to change at line 14 skipping to change at line 14
BCP: 230 F. Baker BCP: 230 F. Baker
Category: Best Current Practice Unaffiliated Category: Best Current Practice Unaffiliated
ISSN: 2070-1721 G. Huston ISSN: 2070-1721 G. Huston
APNIC APNIC
R. Hinden R. Hinden
Check Point Software Check Point Software
O. Troan O. Troan
Cisco Cisco
F. Gont F. Gont
SI6 Networks SI6 Networks
August 2020 September 2020
IP Fragmentation Considered Fragile IP Fragmentation Considered Fragile
Abstract Abstract
This document describes IP fragmentation and explains how it This document describes IP fragmentation and explains how it
introduces fragility to Internet communication. introduces fragility to Internet communication.
This document also proposes alternatives to IP fragmentation and This document also proposes alternatives to IP fragmentation and
provides recommendations for developers and network operators. provides recommendations for developers and network operators.
skipping to change at line 453 skipping to change at line 453
* IPv4 Protocol or IPv6 Next Header. * IPv4 Protocol or IPv6 Next Header.
Therefore, non-fragmented packets belonging to a flow can be assigned Therefore, non-fragmented packets belonging to a flow can be assigned
to one link while fragmented packets belonging to the same flow can to one link while fragmented packets belonging to the same flow can
be divided between that link and another. This can cause suboptimal be divided between that link and another. This can cause suboptimal
load distribution. load distribution.
[RFC6438] offers a partial solution to this problem for IPv6 devices [RFC6438] offers a partial solution to this problem for IPv6 devices
only. According to [RFC6438]: only. According to [RFC6438]:
| At intermediate routers that perform load balancing, the hash | At intermediate routers that perform load distribution, the hash
| algorithm used to determine the outgoing component-link in an ECMP | algorithm used to determine the outgoing component-link in an ECMP
| and/or LAG toward the next hop MUST minimally include the 3-tuple | and/or LAG toward the next hop MUST minimally include the 3-tuple
| {dest addr, source addr, flow label} and MAY also include the | {dest addr, source addr, flow label} and MAY also include the
| remaining components of the 5-tuple. | remaining components of the 5-tuple.
If the algorithm includes only the 3-tuple {dest addr, source addr, If the algorithm includes only the 3-tuple {dest addr, source addr,
flow label}, it will assign all fragments belonging to a packet to flow label}, it will assign all fragments belonging to a packet to
the same link. (See [RFC6437] and [RFC7098]). the same link. (See [RFC6437] and [RFC7098]).
In order to avoid the problem described above, implementations SHOULD In order to avoid the problem described above, implementations SHOULD
skipping to change at line 754 skipping to change at line 754
[RFC8085] recognizes that IP fragmentation reduces the reliability of [RFC8085] recognizes that IP fragmentation reduces the reliability of
Internet communication. It also recognizes that UDP lacks a Internet communication. It also recognizes that UDP lacks a
fragmentation mechanism of its own and relies on IP fragmentation. fragmentation mechanism of its own and relies on IP fragmentation.
Therefore, [RFC8085] offers the following advice regarding Therefore, [RFC8085] offers the following advice regarding
applications the run over the UDP: applications the run over the UDP:
| An application SHOULD NOT send UDP datagrams that result in IP | An application SHOULD NOT send UDP datagrams that result in IP
| packets that exceed the Maximum Transmission Unit (MTU) along the | packets that exceed the Maximum Transmission Unit (MTU) along the
| path to the destination. Consequently, an application SHOULD | path to the destination. Consequently, an application SHOULD
| either use the Path MTU information provided by the IP layer or | either use the path MTU information provided by the IP layer or
| implement Path MTU Discovery (PMTUD) itself to determine whether | implement Path MTU Discovery (PMTUD) itself [RFC1191] [RFC1981]
| the path to a destination will support its desired message size | [RFC4821] to determine whether the path to a destination will
| without fragmentation. | support its desired message size without fragmentation.
RFC 8085 continues: RFC 8085 continues:
| Applications that do not follow the recommendation to do PMTU/ | Applications that do not follow the recommendation to do PMTU/
| PLPMTUD discovery SHOULD still avoid sending UDP datagrams that | PLPMTUD discovery SHOULD still avoid sending UDP datagrams that
| would result in IP packets that exceed the Path MTU. Because the | would result in IP packets that exceed the path MTU. Because the
| actual Path MTU is unknown, such applications SHOULD fall back to | actual path MTU is unknown, such applications SHOULD fall back to
| sending messages that are shorter than the default effective MTU | sending messages that are shorter than the default effective MTU
| for sending (EMTU_S in [RFC1122]). For IPv4, EMTU_S is the | for sending (EMTU_S in [RFC1122]). For IPv4, EMTU_S is the
| smaller of 576 octets and the first-hop MTU. For IPv6, EMTU_S is | smaller of 576 bytes and the first-hop MTU [RFC1122]. For IPv6,
| 1280 octets [RFC8200]. The effective PMTU for a directly | EMTU_S is 1280 bytes [RFC2460]. The effective PMTU for a directly
| connected destination (with no routers on the path) is the | connected destination (with no routers on the path) is the
| configured interface MTU, which could be less than the maximum | configured interface MTU, which could be less than the maximum
| link payload size. Transmission of minimum-sized UDP datagrams is | link payload size. Transmission of minimum-sized UDP datagrams is
| inefficient over paths that support a larger PMTU, which is a | inefficient over paths that support a larger PMTU, which is a
| second reason to implement PMTU discovery. | second reason to implement PMTU discovery.
RFC 8085 assumes that for IPv4 an EMTU_S of 576 is sufficiently small RFC 8085 assumes that for IPv4 an EMTU_S of 576 is sufficiently small
to be supported by most current Internet paths, even though the IPv4 to be supported by most current Internet paths, even though the IPv4
minimum link MTU is 68 octets. minimum link MTU is 68 octets.
skipping to change at line 1055 skipping to change at line 1055
<https://www.rfc-editor.org/info/rfc8200>. <https://www.rfc-editor.org/info/rfc8200>.
[RFC8201] McCann, J., Deering, S., Mogul, J., and R. Hinden, Ed., [RFC8201] McCann, J., Deering, S., Mogul, J., and R. Hinden, Ed.,
"Path MTU Discovery for IP version 6", STD 87, RFC 8201, "Path MTU Discovery for IP version 6", STD 87, RFC 8201,
DOI 10.17487/RFC8201, July 2017, DOI 10.17487/RFC8201, July 2017,
<https://www.rfc-editor.org/info/rfc8201>. <https://www.rfc-editor.org/info/rfc8201>.
[RFC8899] Fairhurst, G., Jones, T., Tüxen, M., Rüngeler, I., and T. [RFC8899] Fairhurst, G., Jones, T., Tüxen, M., Rüngeler, I., and T.
Völker, "Packetization Layer Path MTU Discovery for Völker, "Packetization Layer Path MTU Discovery for
Datagram Transports", RFC 8899, DOI 10.17487/RFC8899, Datagram Transports", RFC 8899, DOI 10.17487/RFC8899,
August 2020, <https://www.rfc-editor.org/info/rfc8899>. September 2020, <https://www.rfc-editor.org/info/rfc8899>.
9.2. Informative References 9.2. Informative References
[Damas] Damas, J. and G. Huston, "Measuring ATR", April 2018, [Damas] Damas, J. and G. Huston, "Measuring ATR", April 2018,
<http://www.potaroo.net/ispcol/2018-04/atr.html>. <http://www.potaroo.net/ispcol/2018-04/atr.html>.
[Huston] Huston, G., "IPv6, Large UDP Packets and the DNS", August [Huston] Huston, G., "IPv6, Large UDP Packets and the DNS", August
2017, 2017,
<http://www.potaroo.net/ispcol/2017-08/xtn-hdrs.html>. <http://www.potaroo.net/ispcol/2017-08/xtn-hdrs.html>.
skipping to change at line 1093 skipping to change at line 1093
[RFC1812] Baker, F., Ed., "Requirements for IP Version 4 Routers", [RFC1812] Baker, F., Ed., "Requirements for IP Version 4 Routers",
RFC 1812, DOI 10.17487/RFC1812, June 1995, RFC 1812, DOI 10.17487/RFC1812, June 1995,
<https://www.rfc-editor.org/info/rfc1812>. <https://www.rfc-editor.org/info/rfc1812>.
[RFC1858] Ziemba, G., Reed, D., and P. Traina, "Security [RFC1858] Ziemba, G., Reed, D., and P. Traina, "Security
Considerations for IP Fragment Filtering", RFC 1858, Considerations for IP Fragment Filtering", RFC 1858,
DOI 10.17487/RFC1858, October 1995, DOI 10.17487/RFC1858, October 1995,
<https://www.rfc-editor.org/info/rfc1858>. <https://www.rfc-editor.org/info/rfc1858>.
[RFC1981] McCann, J., Deering, S., and J. Mogul, "Path MTU Discovery
for IP version 6", RFC 1981, DOI 10.17487/RFC1981, August
1996, <https://www.rfc-editor.org/info/rfc1981>.
[RFC2003] Perkins, C., "IP Encapsulation within IP", RFC 2003, [RFC2003] Perkins, C., "IP Encapsulation within IP", RFC 2003,
DOI 10.17487/RFC2003, October 1996, DOI 10.17487/RFC2003, October 1996,
<https://www.rfc-editor.org/info/rfc2003>. <https://www.rfc-editor.org/info/rfc2003>.
[RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328,
DOI 10.17487/RFC2328, April 1998, DOI 10.17487/RFC2328, April 1998,
<https://www.rfc-editor.org/info/rfc2328>. <https://www.rfc-editor.org/info/rfc2328>.
[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>.
[RFC2473] Conta, A. and S. Deering, "Generic Packet Tunneling in [RFC2473] Conta, A. and S. Deering, "Generic Packet Tunneling in
IPv6 Specification", RFC 2473, DOI 10.17487/RFC2473, IPv6 Specification", RFC 2473, DOI 10.17487/RFC2473,
December 1998, <https://www.rfc-editor.org/info/rfc2473>. December 1998, <https://www.rfc-editor.org/info/rfc2473>.
[RFC2784] Farinacci, D., Li, T., Hanks, S., Meyer, D., and P. [RFC2784] Farinacci, D., Li, T., Hanks, S., Meyer, D., and P.
Traina, "Generic Routing Encapsulation (GRE)", RFC 2784, Traina, "Generic Routing Encapsulation (GRE)", RFC 2784,
DOI 10.17487/RFC2784, March 2000, DOI 10.17487/RFC2784, March 2000,
<https://www.rfc-editor.org/info/rfc2784>. <https://www.rfc-editor.org/info/rfc2784>.
[RFC3128] Miller, I., "Protection Against a Variant of the Tiny [RFC3128] Miller, I., "Protection Against a Variant of the Tiny
skipping to change at line 1203 skipping to change at line 1211
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,
<https://www.rfc-editor.org/info/rfc7872>. <https://www.rfc-editor.org/info/rfc7872>.
[RFC8086] Yong, L., Ed., Crabbe, E., Xu, X., and T. Herbert, "GRE- [RFC8086] Yong, L., Ed., Crabbe, E., Xu, X., and T. Herbert, "GRE-
in-UDP Encapsulation", RFC 8086, DOI 10.17487/RFC8086, in-UDP Encapsulation", RFC 8086, DOI 10.17487/RFC8086,
March 2017, <https://www.rfc-editor.org/info/rfc8086>. March 2017, <https://www.rfc-editor.org/info/rfc8086>.
[TUNNELS] Touch, J. and M. Townsley, "IP Tunnels in the Internet [TUNNELS] Touch, J. and M. Townsley, "IP Tunnels in the Internet
Architecture", Work in Progress, Internet-Draft, draft- Architecture", Work in Progress, Internet-Draft, draft-
ietf-intarea-tunnels-10, 12 September 2019, ietf-intarea-tunnels-10, September 12, 2019,
<https://tools.ietf.org/html/draft-ietf-intarea-tunnels- <https://tools.ietf.org/html/draft-ietf-intarea-tunnels-
10>. 10>.
[UDP-OPTIONS] [UDP-OPTIONS]
Touch, J., "Transport Options for UDP", Work in Progress, Touch, J., "Transport Options for UDP", Work in Progress,
Internet-Draft, draft-ietf-tsvwg-udp-options-08, 12 Internet-Draft, draft-ietf-tsvwg-udp-options-08, September
September 2019, <https://tools.ietf.org/html/draft-ietf- 12, 2019, <https://tools.ietf.org/html/draft-ietf-tsvwg-
tsvwg-udp-options-08>. udp-options-08>.
Acknowledgements Acknowledgements
Thanks to Mikael Abrahamsson, Brian Carpenter, Silambu Chelvan, Thanks to Mikael Abrahamsson, Brian Carpenter, Silambu Chelvan,
Lorenzo Colitti, Gorry Fairhurst, Joel Halpern, Mike Heard, Tom Lorenzo Colitti, Gorry Fairhurst, Joel Halpern, Mike Heard, Tom
Herbert, Tatuya Jinmei, Suresh Krishnan, Jen Linkova, Paolo Lucente, Herbert, Tatuya Jinmei, Suresh Krishnan, Jen Linkova, Paolo Lucente,
Manoj Nayak, Eric Nygren, Fred Templin, and Joe Touch for their Manoj Nayak, Eric Nygren, Fred Templin, and Joe Touch for their
comments. comments.
Authors' Addresses Authors' Addresses
 End of changes. 10 change blocks. 
15 lines changed or deleted 23 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/