On Wed, Feb 10, 2016 at 12:59 PM, Jesse Gross <je...@kernel.org> wrote: > On Wed, Feb 10, 2016 at 12:41 PM, David Wragg <david@weave.works> wrote: >> Tom Herbert <t...@herbertland.com> writes: >>> The correct thing to do is determine the maximum amount of >>> encapsulation overhead that can ever be set in a packet and use for >>> setting the MTU. For instance, when RCO is enable in GUE, the size of >>> the option is included in tunnel->encap_hlen even though it will not >>> be used in all packets (via ip_tunnel_change_mtu). If there is no way >>> to determine a maximum overhead a priori from configuration, then >>> maximum overhead could be assumed to be maximum possible encapsulation >>> header size which for Geneve is 132 bytes IIRC. >> >> Ok, I'll come up with a patch to address this. > > I don't think that this really applies in this situation. The concerns > here relate to what the MTU is actually set to but this patch affects > the range of MTUs allowed to be set by the user. I don't see a reason > to disallow the user from setting a precise value if they know what it > should be. > Right, but if the user sets a bad value and packets are silently dropped on the floor then that seems like a bad result that could have easily been prevented.
> In any case, I don't think it is likely to have much impact. By > default with tunnels the output device is not fixed and therefore the > base MTU that is used is IP_MAX_MTU. Subtracting some tunnel overhead > amount from this is still likely quite a bit higher than any physical > MTU. > > If you really want, I would subtract the base Geneve header size from > IP_MAX_MTU to get the true max but it's probably not a big deal in any > case.