Some days ago I took part to an interesting discussion on linkedin, and now I want to publish something about this topic. It's a very simple article but it gives some interesting information.

So what are MTU, IPv4 and IPv6

From the wikipedia:

 

"MTU

In computer networking, the maximum transmission unit (MTU) of a communications protocol of a layer is the size (in bytes) of the largest protocol data unit that the layer can pass onwards. MTU parameters usually appear in association with a communications interface (NIC, serial port, etc.). Standards (Ethernet, for example) can fix the size of an MTU; or systems (such as point-to-point serial links) may decide MTU at connect time. A larger MTU brings greater efficiency because each packet carries more user data while protocol overheads, such as headers or underlying per-packet delays, remain fixed; the resulting higher efficiency means a slight improvement in bulk protocol throughput. A larger MTU also means processing of fewer packets for the same amount of data. In some systems, per-packet-processing can be a critical performance limitation.

 

IPv4

Internet Protocol version 4 (IPv4) is the fourth revision in the development of the Internet Protocol (IP) and the first version of the protocol to be widely deployed. 

…..

IPv4 is described in IETF publication RFC 791 (September 1981), replacing an earlier definition (RFC 760, January 1980). IPv4 is a connectionless protocol for use on packet-switched Link Layer networks (e.g., Ethernet). It operates on a best effort delivery model, in that it does not guarantee delivery, nor does it assure proper sequencing or avoidance of duplicate delivery. These aspects, including data integrity, are addressed by an upper layer transport protocol, such as the Transmission Control Protocol (TCP).


IPv6

IPv6 (Internet Protocol version 6) is a revision of the Internet Protocol (IP) developed by the Internet Engineering Task Force (IETF). IPv6 is intended to succeed IPv4, which is the dominant communications protocol for most Internet traffic as of 2012. IPv6 was developed to deal with the long-anticipated problem of IPv4 running out of addresses. IPv6 implements a new addressing system that allows for far more addresses to be assigned than with IPv4."


Well, MTU is really (usually) a measure of the physical layer properties. Generally speaking (but see exception below), MTU is set per interface, so it affects both IPv4 and IPv6. If you set an MTU lower than 1280 to an interface it will delete the IPv6 address and won't let you add IPv6 addresses on this interface. (Tested with kernel 2.6.38.8). 

 

You can set per route interface using iproute2 instead, so you can set a 1280 bytes MTU for the interface and then reduce it for all of the IPv4 routes using:

http://lartc.org/howto/lartc.cookbook.mtu-discovery.html

This way IPv6 will use the 1280 bytes MTU but all of the IPv4 routes will use a lower MTU.

This is of course cumbersome if you have many routes.

The alternative is to set the MTU to 1280 and relay on PMTU discovery to reduce the MTU for paths going through MTU lower than 1280 devices.

Just to complete the picture. VxWorks do nothing w/ IPv6 addresses when MTU gets decreased below 1280. You may create interface w/ IPv6 address w/ MTU > 1280 and than decrease to 100. Or immediatelly create it w/ MTU below 1280. VxWorks swallows all it. 





About the routers:
Unlike in IPv4, IPv6 routers never fragment IPv6 packets. Packets exceeding the size of the maximum transmission unit of the destination link are dropped and this condition is signaled by a Packet too Big ICMPv6 type 2 message to the originating node, similarly to the IPv4 method when the Don't Fragment bit set.
Any data link layer conveying IPv6 data must be capable of delivering an IP packet containing 1280 bytes without the need to invoke end-to-end fragmentation at the IP layer.

Do you have something to say?