On 01/09/2016 11:07, "Jesse Gross" <je...@kernel.org> wrote:

>On Thu, Sep 1, 2016 at 10:17 AM, Daniele Di Proietto
><diproiet...@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.

Thanks for the detailed explanation Jesse, it makes more sense now.

>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.

You're right, it's probably not a good idea to change this behavior now.
Darrell suggested another approach, which at this point I think it's the
best way to go.  We keep the old behavior, even if it was a little
inconsistent, for backwards compatibility.  Since in this release we
also introduced 'mtu_request', we use that to override the old behavior
for internal ports.  Users that are really interested in configuring
their internal port MTU can use that instead.

I don't like that mtu_request behaves differently than standard linux
tools, but I think this is a good balance between compatibility and
flexibility.

I've sent a series here:

http://openvswitch.org/pipermail/dev/2016-September/079078.html
http://openvswitch.org/pipermail/dev/2016-September/079079.html

Thanks,

Daniele
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to