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/ |