Subject: gretap default MTU question

From: Jonathan Thibault <[email-masked]>
Date: Wed, 9 Mar 2016 12:25:35 -0500

Hello good people of netdev,

When setting up gretap devices like so:

ip link add mydev type gretap remote 1.1.1.1 local 2.2.2.2 nopmtudisc

I'm observing two different behavior:

- On system A, the MTU of 'mydev' is set to the MTU of the 'parent'
interface (currently 1600) minus 38. All other interfaces on that system
have a default MTU of 1500, only the parent was forced to 1600 to avoid
fragmentation.  So 'mydev' accurately figures out that its MTU is 1562.

- On system B, with the 'parent' interface MTU set to 1600 and all other
defaulting to 1500 (same situation as A), the MTU of 'mydev' gets set to
1462.

I'm trying to figure out which behavior is normal and what mechanism (if
any) causes the MTU to be set differently.  In both cases the 'parent'
device has an MTU of 1600.  The code in ip_gre.c does this:

dev->mtu = ETH_DATA_LEN - t_hlen - 4;

In this case, system B would have the expected behavior and I need some
way to explain what goes on with system A.

Of course I can force the MTU on system B but I was rather pleased with
the 'magic' on system A.

If anyone here familiar with this code can offer an explanation, it
would greatly ease my curiosity.

Jonathan