IPv6 MTU size debuging

The process by which endpoints and intermediate routers decide on the IPv6 MTU is not understood or not agreed by all the devices. Usually the MTU is not set to the same number of Bytes along a path and many times "Packet too big" - resize messages are ignored by one or more devices in the path.

If you want to save yourself some trouble just set the MTU to the minimum in all of your devices( 1280 B ).
n:~#ifconfig ipv6-iface mtu 1280


If you want to use the maximum MTU possible or figure out who broke IPv6 when you find it broken you could send ICMP echo requests of the most commonly used MTU sizes to each of the intermediate routers until you find which MTU do not make it through which router.

The most common MTU sizes are 1280 B and 1480 B. However, there are devices that are set to use 1472 B, 1460 B or 1452 B and the most default interface configurations use an MTU of 1500 B.

When debugging MTU sizes it helps to remember that an IPv6 header is 40 Bytes and that ICMPv6 headers are 8 Bytes long. Therefore, if you want to figure out if an MTU of 1280 Bytes will work across a path ( This should work always ) try ICMP echo requests
with a payload of 1280 B - 40 B - 8 B = 1232 B.

ares:~#ping6 -s 1232 ipduh.com -c1
PING ipduh.com(hermes.ipduh.com) 1232 data bytes
1240 bytes from hermes.ipduh.com: icmp_seq=1 ttl=46 time=83.6 ms

--- ipduh.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 83.627/83.627/83.627/0.000 ms


Don't forget that traceroute6 is your friend.
I also find http://ipduh.com/ipv6/traceroute helpful.



IPv6 MTU size debugging