...
Traditional (RFC1191) Path MTU Discovery
rfc1191 RFC 1191 describes a method for a sender to detect the Path MTU to a given receiver. (rfc1981 RFC 1981 describes the equivalent for IPv6.) The method works as follows:
...
This method is widely implemented, but is not robust in today's Internet because it relies on ICMP packets sent by routers along the path. Such packets are often suppressed either at the router that should generate them (to protect its resources) or on the way back to the source, because of firewalls and other packet filters or rate limitations. These problems are described in rfc2923RFC 2923. When packets are lost due to MTU issues without any ICMP "Too Big" message, this is sometimes called a (MTU) black hole. Some operating systems have added heuristics to detect such black holes and work around them. Workarounds can include lowering the MTU estimate or disabling PMTUD for certain destinations.
Packetization Layer Path MTU Discovery (PLPMTUD, RFC 4821 and RFC 8899)
An IETF Working Group (pmtud
) was chartered to define a new mechanism for Path MTU Discovery to solve these issues. This process resulted in RFC 4821, Packetization Layer Path MTU Discovery ("PLPMTUD"), which was published in March 2007. This scheme requires cooperation from a network layer above IP, namely the layer that performs "packetization". This could be TCP, but could also be a layer above UDP, let's say an RPC or file transfer protocol. PLPMTUD does not require ICMP messages. The sending packetization layer starts with small packets, and probes progressively larger sizes. When there's an indication that a larger packet was successfully transmitted to the destination (presumably because some sort of ACK was received), the Path MTU estimate is raised accordingly.
...
A user-space implementation over UDP is included in the VFER bulk transfer tool.
RFC 8899, published in September 2020, updates RFC 4821 by extending its use to datagram-oriented transports.
Minimum Path MTU Hop-by-Hop Option
Recently, the IETF 6man Working Group has adopted an Internet-Draft (see reference below) proposing an IPv6 hop-by-hop option that would allow discovering the Path MTU with assistance from routers. Note that this still requires a mechanism to "echo" the discovered PMTU back to the sender. (Some people are skeptical about the chances that this option will see successful deployment, for example Geoff Huston in his August 2021 IETF 111 report.
References
- RFC 4821, Packetization Layer Path MTU Discovery, M. Mathis, J. Heffner, March 2007.
- RFC 8899, Packetization Layer Path MTU Discovery for Datagram Transports, Godred Fairhurst, Tom Jones, Michael Tuexen, Irene Ruengeler, Timo Voelker, September 2020
- RFC 1191, Path MTU discovery, Mogul, J. and S. Deering, November 1990.
- RFC 1981, Path MTU Discovery for IP version 6, McCann, J., Deering, S., and J. Mogul, August 1996.
- draft-ietf-6man-rfc1981bis-06, Path MTU Discovery for IP version 6, Jack McCann, Stephen E. Deering, Jeffrey Mogul, Robert M. Hinden, April 2017
- RFC 2923, TCP Problems with Path MTU Discovery, K. Lahey, September 2000
- RFC 3128, Protection Against a Variant of the Tiny Fragment Attack (RFC 1858), Miller, I., June 2001.
- RFC 4459, MTU and Fragmentation Issues with In-the-Network Tunneling, P. Savola, February 2006.
- draft-saumnvo3-nvo3mtu-pmtudpropagation-over-evpn-vxlanoverlays-05, PMTUD Over Vxlan01, MTU propagation over EVPN Overlays, Saumya Dikshit, Vinayak Joshi, A Sujeet Nayak, June 2017August 2021
- Measuring the Evolution of Transport Protocols in the Internet, A. Medina, M. Allman, and S. Floyd, April 2005.
- PMTU (Path MTU) Discovery - Some servers are unusable for many internet users, an article about problems with Path MTU Discovery and their effects.
- Practical hints from Cisco for working around PMTUD issues, for Windows, Solaris, and other systems
- IP Fragmentation and PMTUD, Cisco White Paper
- draft-ietffairhurst-tsvwg-datagramudp-options-plpmtuddplpmtud-05, Packetization Layer Path MTU Discovery for Datagram Transports00, Datagram PLPMTUD for UDP Options, Godred Fairhurst, Tom Jones, Michael Tuexen, Irene Ruengeler, October 2018March 2021
- draft-spiriyathietf-ipsecmebier-dynamicpath-ipsecmtu-pmtudiscovery-0110, Packetization Layer Path Maximum Transmission Unit Discovery (PLPMTUD)For IPsec Tunnels, Shibu Piriyath, Umesh Mangla, Nagavenkata Suresh Melam, Ron Bonica, February 2018(PMTUD) for Bit Index Explicit Replication (BIER) Layer, Greg Mirsky, Tony Przygienda, Andrew Dolganow, March 2021
- draft-ietf-tram-stun-pmtud-20, Path MTU Discovery Using Session Traversal Utilities for NAT (STUN), Marc Petit-Huguenin, Gonzalo Salgueiro, Felipe Garrido, March 2021
- draft-ietf-6man-mtu-option-08, IPv6 Minimum Path MTU Hop-by-Hop Option, Robert M. Hinden, Godred Fairhurst, September 2021draft-troan-6man-pmtu-solution-space-00, Path MTU discovery solution space, Ole Troan, September 2018
Implementations
- for Linux 2.6 - integrated in mainstream kernel as of 2.6.17. However, it is disabled by default (see net.ipv4.tcp_mtu_probing sysctl)
- for NetBSD
-- HankNussbacher - 2005-07-03
– SimonLeinen - 2006-07-19 - 20182021-1009-0504