That’s true, but getting the right knowledge about L2-MTU, MPLS-MTU and IP-MTU is a good start as soon as you get problems, so that you know where you need to look for and so that you can design simple tests to diagnose.
For example i did start this basic MTU study because of a problem with a static VPLS tunnel going to a Mikrotik wifi client in station mode. Strangely i have an MTU problem when the control word is enabled. I solved it disabling the control word and rising the L2-MTU on the path, but it’s always interesting to know the root cause of such a problem. In this case it is important to have an exact knowledge of the involved Ethernet frames size, and how they fit in the hardware on the path, so that you can diagnose more easily where the problem is located.
So in the end encapsulating, tunneling or labeling is always a source of MTU problems when the environment is not fully prepared for it.
HP Procurve for example do take into account the FCS CRC Ethernet trailer (4 bytes) into the L2-MTU calculation for there switch. This mean that their advertised hardware MTU of 1522 is in fact equivalent to a Mikrotik L2-MTU of 1504, quite a small value…
A non educated client could think he could do MPLS over such a 1522 hardware MTU, but it is not the case, because it is in fact a 1504 L2-MTU, just enough for a single VLAN tag.
More, there is often no possibility to rise this 1522 limit ( = 1504 limit in Mikrotik L2-MTU terminology) to something bigger - at least for 100 Mbps ports switches. Jumbo framing is most of the time supported only on 1000 Mbps switches.
As soon as you start to use MPLS, VPLS tunnels, VPLS + VLAN or even QinQ or Mac in Mac, you will go well over this limit.
So choosing some hardware for example, it is important to have a good understanding of L2-MTU and hardware MTU, because each manufacturer can have a different way of calculating it. Even worse, Juniper for example do have two different ways of calculating the level2 MTU according to the product line. See my previous post. This add to the confusion.
Then according to what we see in the market, we could differentiate approximately between two way of calculating the low level MTU :
-
Hardware MTU (do take into account the 14 bytes Mac header, and sometimes the 4 bytes CRC trailer)
(even this hardware MTU is not the true real hardware MTU on the wire (it miss the Ethernet sync preambule for example).
-
L2-MTU (do not take the Mac header neither the CRC trailer into account)
L2-MTU seems simpler to understand for the end user.
Finally, it’s perhaps not a good idea to put the L2-MTU to a bigger value than what is really needed, it could be an entry point for attacks specially for newer not widely tested protocols. For example :
CVE-2007-4567: The ipv6_hop_jumbo function in net/ipv6/exthdrs.c in the Linux kernel before 2.6.22 does not properly validate the hop-by-hop IPv6 extended header, which allows remote attackers to cause a denial of service (NULL pointer dereference and kernel panic) via a crafted IPv6 packet.
CVE-2008-0352: The Linux kernel 2.6.20 through 2.6.21.1 allows remote attackers to cause a denial of service (panic) via a certain IPv6 packet, possibly involving the Jumbo Payload hop-by-hop option (jumbogram).
CVE-2010-0006: The ipv6_hop_jumbo function in net/ipv6/exthdrs.c in the Linux kernel before 2.6.32.4, when network namespaces are enabled, allows remote attackers to cause a denial of service (NULL pointer dereference) via an invalid IPv6 jumbogram, a related issue to CVE-2007-4567.