Penguin
Note: You are viewing an old revision of this page. View the current version.

Acronym for Maximum Transmittion Unit.

The largest packet that can be sent over a link. For ethernet and PPP this is usually 1500. The minimum MTU you should ever use is 576. The maximum MTU for IPv4 is 65536, although I know of no link that can handle packets this large.



If your MTU is very small, you'll be sending more packets than necessary. Since each packet needs a header containing addresses, port numbers, ttl, flags, etc, it's best to send larger packets.

OTOH if your MTU is very large and has to go through a link with a smaller MTU, it'll normally be broken into smaller packets (fragmented). For tunneling protocols such as PPTP (used by many ADSL modems) the MTU is slightly smaller than 1500 because the tunneling uses a few bytes for itself. If you're sending 1500-byte packets over a 1470-byte link, the second part of every packet is going to get broken into a tiny 30-byte fragment which is really inefficient.

Linux (and most other recent OS's) use a clever system called 'path-MTU-discovery'; Linux starts any new connection only sending very small packets and gradually makes them bigger. At the same time it sets the 'don't fragment' flag on all the packets. If a link somewhere is using a too-small MTU and wants to fragment them it's not allowed to, so it sends back an ICMP message 'Need to fragment, but don't fragment is set'. When we get this back, we know what's the largest packet we can use on that connection without it getting fragmented, which happens to be the most efficient size..

The reason I bothered to tell you all this is because some IDIOT admins (particularly BANKS!) ignorantly block all ICMP without fully understanding why ICMP is an important part of IP, and/or without thinking of the consequences. I just wanted to vent that, OK? :-) - zcat


Some common (and not so common) MTU sizes