[ovs-dev] [PATCH] ofproto: Do not override internal port MTU.

Jesse Gross jesse at kernel.org
Thu Sep 1 18:07:41 UTC 2016


On Thu, Sep 1, 2016 at 10:17 AM, Daniele Di Proietto
<diproiettod at vmware.com> wrote:
> Let me try to sum up the problem further
>
> 1) Behavior on master, before commit 47bf118665a3("ofproto: Always set MTU for new internal ports."):
>
>     a) When an internal interface is added, or its MTU has changed we only change its MTU if it is bigger than the bridge minimum
>     b) When a non internal, non tunnel port is added, we reconfigure every internal interface to match exactly the bridge minimum, no matter what
>     c) If the bridge doesn't have physical ports (only tunnels and internals), we consider the minimum mtu to be invalid and we don't change the internal interfaces mtu
>
> I felt that there was an inconsistency between 1a and 1b.  I thought 1c was not very clean, because the current configuration depends on the previous state (if there were physical ports at some point, we would lower the internal interfaces mtu, but we couldn't restore it when they were removed)
>
> 2) Behavior on master after commit 47bf118665a3("ofproto: Always set MTU for new internal ports."):
>
>     a) When an internal interface is added, or its MTU has changed we overwrite its MTU with the bridge minimum.
>     b) When a non internal, non tunnel port is added, we reconfigure every internal interface to match exactly the bridge minimum, no matter what
>     c) If the bridge doesn't have physical ports (only tunnels and internals), we consider the minimum mtu to be 1500.  We therefore force every internal interface to be 1500.
>
> Behavior b is the same.  Behavior a is changed to match more closely behavior b.  Behavior c is changed completely.  Now the current configuration doesn't depend on the previous state.
> When I made the change I didn't think that there were valid use cases for allowing the user to configure internal interfaces MTU.  The test suite obviously proved me wrong.

This is not the first time that this has come up, for example, a
couple months back:
http://openvswitch.org/pipermail/dev/2016-June/073190.html

The existing behavior is a legacy of trying to behave more similarly
to the Linux bridge a long time ago when users were trying to easily
swap between it and OVS. However, in practice the two aren't that
similar since OVS allows arbitrary partitioning of bridges through
flows in ways that could effectively make the pieces into separate
networks with different MTUs, imposing tags, etc. At the time, the
bridge didn't even have native support for VLANs, so none of this
could have been an issue.

If we could go back, I wish that we hadn't carried this behavior into
OVS. For people adjusting MTUs, it probably wouldn't have been a big
deal to adjust the OVS bridge MTU as well - the same as what is
necessary for VMs. However, I think that simply removing it at this
point will break some existing setups that I'm pretty sure exist in
the real world. If you have just a simple setup with an OVS bridge and
a physical Ethernet device with a non-default MTU, you are probably
relying on this automatic MTU adjustment.

So overall, I would be happy to move to the new model but I think this
patch is probably too aggressive in switching for the time being. I
think we need to keep the existing behavior as the default with a
switch and then maybe add some big deprecation warnings so we can
eventually change the default.



More information about the dev mailing list