Bug 1396533 - MTU configuration not working as expected
Summary: MTU configuration not working as expected
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat OpenStack
Classification: Red Hat
Component: openstack-neutron
Version: 9.0 (Mitaka)
Hardware: x86_64
OS: Linux
high
high
Target Milestone: async
: 9.0 (Mitaka)
Assignee: Ihar Hrachyshka
QA Contact: Eran Kuris
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2016-11-18 15:06 UTC by Pablo Iranzo Gómez
Modified: 2022-08-10 09:46 UTC (History)
12 users (show)

Fixed In Version: openstack-neutron-8.1.2-13.el7ost
Doc Type: Bug Fix
Doc Text:
Previously, the `physical_network_mtus` configuration option for the ML2 plugin was ignored. Consequently, there was no way to configure custom MTUs for physical networks. As a result of this fix, advanced MTU settings that use the `physical_network_mtus` option now honour the configured MTUs.
Clone Of:
Environment:
Last Closed: 2016-12-21 16:50:27 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker OSP-7805 0 None None None 2022-08-10 09:46:54 UTC
Red Hat Knowledge Base (Solution) 2772851 0 None None None 2016-11-18 15:25:39 UTC
Red Hat Product Errata RHBA-2016:2984 0 normal SHIPPED_LIVE openstack-neutron bug fix advisory 2016-12-21 21:35:36 UTC

Comment 3 Pablo Iranzo Gómez 2016-11-18 15:10:49 UTC
Description of problem:

With the target of configuring OSP for the following scenario:

- OSP9 controllers with OSP9 computes
- two different underlay physical networks
    - 1 Configured with MTU 1500 (vlan-network_admin)
    - 1 Configured with MTU 9000 with different services (vlan-network_prod in 1500 MTU mode) + VLXAN traffic from OSP
        - This network is capable of having 1550 MTU for VXLAN
        - Other networks here have diffeent mtu's like 1800 or 4000 depending on the use case (mobile core networks, etc)


The following configuration was applied as per upstream documentation:

Based on Case 2 from upstream doc at http://docs.openstack.org/mitaka/networking-guide/config-mtu.html:

# Advertise mtu to have instances picking it up automatically
crudini --set /etc/neutron/neutron.conf DEFAULT advertise_mtu true

# MAX MTU set to 9000 to cover the non assigned networks:
crudini --set /etc/neutron/neutron.conf DEFAULT global_physnet_mtu 9000

# Neutron uses above for all network, deducting from here the extra overhead for VXLAN and GRE unless we also use the `physical_network_mtus`


# MTU on vlan_network_prod and vlan_network _admin to 1500 (one on top of the 9000 one and the other one on top of the physical newrok
crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 physical_network_mtus vlan_network_prod:1500,vlan_network_admin:1500

# crudini --set /etc/neutron/plugins/ml2/openvswitch_agent.ini ovs bridge_mappings provider1:eth1,provider2:eth2,provider3:eth3

crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 path_mtu 1550



Version-Release number of selected component (if applicable):

openstack-neutron-8.1.2-5.el7ost.noarch
openstack-neutron-common-8.1.2-5.el7ost.noarch
openstack-neutron-ml2-8.1.2-5.el7ost.noarch
python-neutron-8.1.2-5.el7ost.noarch
python-neutron-lib-0.0.2-1.el7ost.noarch
python-neutronclient-4.1.1-2.el7ost.noarch


Actual results:

VLAN Network created has MTU of 9000, while VXLAN has the right one

[root@plo-controller-p01 neutron(keystone_admin)]$ neutron net-show vxlan-jax ==> OK
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| availability_zone_hints   |                                      |
| availability_zones        | test1                                |
|                           | test2                                |
| description               |                                      |
| id                        | 7462ea56-b278-40fb-9a20-7f8145f27022 |
| ipv4_address_scope        |                                      |
| ipv6_address_scope        |                                      |
| mtu                       | 1500                                 |
| name                      | vxlan-jax                            |
| port_security_enabled     | True                                 |
| provider:network_type     | vxlan                                |
| provider:physical_network |                                      |
| provider:segmentation_id  | 5001                                 |
| router:external           | False                                |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   | f0918514-7eeb-4282-ad4b-7c322b0eff53 |
| tags                      |                                      |
| tenant_id                 | 9e9127203fef452cb93863b211729ac6     |
+---------------------------+--------------------------------------+

[root@plo-controller-p01 neutron(keystone_admin)]$ neutron net-show vl1310-test-vlan-jax ==> KO MTU 9000 instead of 1500
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| availability_zone_hints   |                                      |
| availability_zones        | test1                                |
|                           | test2                                |
| created_at                | 2016-11-16T09:24:49                  |
| description               |                                      |
| id                        | 09782c21-767a-40a9-9633-8a763a56ed05 |
| ipv4_address_scope        |                                      |
| ipv6_address_scope        |                                      |
| mtu                       | 9000                                 |
| name                      | vl1310-test-vlan-jax                 |
| port_security_enabled     | True                                 |
| provider:network_type     | vlan                                 |
| provider:physical_network | vlan_network_admin                   |
| provider:segmentation_id  | 1310                                 |
| router:external           | False                                |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   | f03fa063-7596-44be-afb2-35bc68203401 |
| tags                      |                                      |
| tenant_id                 | 9e9127203fef452cb93863b211729ac6     |
| updated_at                | 2016-11-16T09:24:49                  |
+---------------------------+--------------------------------------+


it should be inheriting vlan_network_admin and have an MTU of 1500



Expected results:
VLAN network should have got 1500 (so instances would see 1500 MTU) as it's on top of vlan_network_admin defined as 1500

Comment 5 Ihar Hrachyshka 2016-11-21 12:14:40 UTC
I just tried the behaviour for RDO Delorean Mitaka:

Installed Packages
Name        : openstack-neutron
Arch        : noarch
Epoch       : 1
Version     : 8.3.1
Release     : 0.20161118124350.3510ceb.el7.centos
Size        : 74 k
Repo        : installed
From repo   : delorean
Summary     : OpenStack Networking Service
URL         : http://launchpad.net/neutron/
License     : ASL 2.0
Description : Neutron is a virtual network service for Openstack. Just like
            : OpenStack Nova provides an API to dynamically request and configure
            : virtual servers, Neutron provides an API to dynamically request and
            : configure virtual networks. These networks connect "interfaces" from
            : other OpenStack services (e.g., virtual NICs from Nova VMs). The
            : Neutron API supports extensions to provide advanced network
            : capabilities (e.g., QoS, ACLs, network monitoring, etc.)

What I did:

(configure neutron-server)
# crudini --set /etc/neutron/neutron.conf DEFAULT advertise_mtu true
# crudini --set /etc/neutron/neutron.conf DEFAULT global_physnet_mtu 9000
# crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 path_mtu 1550
# crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 physical_network_mtus physnet1:1500,physnet2:1500,physnet3:1500
# crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_vlan network_vlan_ranges = physnet1:1:1000,physnet2:1:1000,physnet3:1:1000
# crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers vxlan,flat,vlan

(restart neutron-server to apply changes)
# systemctl restart neutron-server

(create network)
# . keystonerc_admin 
# neutron net-create vlan-physnet1 --provider:network_type vlan --provider:physical_network physnet1
Created a new network:
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| availability_zone_hints   |                                      |
| availability_zones        |                                      |
| created_at                | 2016-11-21T12:08:37                  |
| description               |                                      |
| id                        | 8adc918b-2b50-4bc3-a169-f8c287fde234 |
| ipv4_address_scope        |                                      |
| ipv6_address_scope        |                                      |
| mtu                       | 1500                                 |
| name                      | vlan-physnet1                        |
| provider:network_type     | vlan                                 |
| provider:physical_network | physnet1                             |
| provider:segmentation_id  | 52                                   |
| router:external           | False                                |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tags                      |                                      |
| tenant_id                 | 2c9da0ebd4b84e3fbca074382c63f8d6     |
| updated_at                | 2016-11-21T12:08:37                  |
+---------------------------+--------------------------------------+

As you can see, correct value is used for the new VLAN tenant network.

A simple question: have you actually restarted neutron-server before creating the network? Note that config changes are not applied for networks created before config changes.

Comment 6 Pablo Iranzo Gómez 2016-11-22 08:58:23 UTC
Hi Ihar,
Yes, neutron-server was restarted after setting values with crudini and a new network was defined.

Comment 7 Ihar Hrachyshka 2016-11-22 13:08:34 UTC
I don't see sos reports (getting 404/No such file or directory). Could you please upload them?

Comment 8 Ihar Hrachyshka 2016-11-22 13:37:22 UTC
BTW I was wrong saying that existing network MTUs will not be recalculated after server restart. They will because we backported a patch to do just that in 8.1.2-3. So indeed comparing RDO Mitaka with OSP 9 is not correct. I will try to reproduce with the right package version.

Comment 9 Ihar Hrachyshka 2016-11-22 13:52:36 UTC
Nevermind, I see a bug in the code. Working on a fix.

Comment 17 Eran Kuris 2016-12-04 07:17:28 UTC
the issue still exist .
tested on virtual setup :
[root@controller-0 ~]# rpm -qa | grep openstack-neutron-
openstack-neutron-bigswitch-agent-2015.3.8-1.el7ost.noarch
openstack-neutron-common-8.1.2-13.el7ost.noarch
openstack-neutron-lbaas-8.0.0-1.el7ost.noarch
openstack-neutron-ml2-8.1.2-13.el7ost.noarch
openstack-neutron-openvswitch-8.1.2-13.el7ost.noarch
openstack-neutron-metering-agent-8.1.2-13.el7ost.noarch
openstack-neutron-bigswitch-lldp-2015.3.8-1.el7ost.noarch
openstack-neutron-8.1.2-13.el7ost.noarch


[root@controller-0 ~]# neutron net-create net2 --provider:network_type vlan
Created a new network:
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| availability_zone_hints   |                                      |
| availability_zones        |                                      |
| created_at                | 2016-12-04T07:15:51                  |
| description               |                                      |
| id                        | 65c4da1c-5b1d-4d87-89af-7d9bd5d7e600 |
| ipv4_address_scope        |                                      |
| ipv6_address_scope        |                                      |
| mtu                       | 9000                                 |
| name                      | net2                                 |
| port_security_enabled     | True                                 |
| provider:network_type     | vlan                                 |
| provider:physical_network | datacentre                           |
| provider:segmentation_id  | 87                                   |
| qos_policy_id             |                                      |
| router:external           | False                                |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tags                      |                                      |
| tenant_id                 | f9a41c07eb6444fc9736ee075cba867c     |
| updated_at                | 2016-12-04T07:15:51                  |
+---------------------------+--------------------------------------+
[root@controller-0 ~]# neutron net-create net1
Created a new network:
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| availability_zone_hints   |                                      |
| availability_zones        |                                      |
| created_at                | 2016-12-04T07:16:03                  |
| description               |                                      |
| id                        | df3d1c71-a0e1-493f-9ead-e6e7551a6120 |
| ipv4_address_scope        |                                      |
| ipv6_address_scope        |                                      |
| mtu                       | 1500                                 |
| name                      | net1                                 |
| port_security_enabled     | True                                 |
| provider:network_type     | vxlan                                |
| provider:physical_network |                                      |
| provider:segmentation_id  | 34                                   |
| qos_policy_id             |                                      |
| router:external           | False                                |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tags                      |                                      |
| tenant_id                 | f9a41c07eb6444fc9736ee075cba867c     |
| updated_at                | 2016-12-04T07:16:03                  |
+---------------------------+--------------------------------------+

Comment 21 Ihar Hrachyshka 2016-12-09 22:07:03 UTC
Eran, please show configuration steps you used. I don't see any issue in the output: your VXLAN network got 1500 (path_mtu = 1550 minus overhead of 50 bytes), and your 'datacentre' backed VLAN network got default global_physnet_mtu that is 9000, because apparently this network did not have a custom MTU set with physical_network_mtus option.

Please provide more info, we can't see from the comment you posted there is still an issue.

Comment 22 Eran Kuris 2016-12-12 09:15:26 UTC
Ihar I dont understand why vlan network didn't create with MTU value 1500 ? 
I used steps to reproduce and set same parameters and I got vlan network with 9000 MTU value. I expected to get 1500 value and I dont understand your comment : 
"because apparently this network did not have a custom MTU set with physical_network_mtus option."

I have the setup so you can see the configuration

Comment 23 Ihar Hrachyshka 2016-12-12 16:08:19 UTC
Eran, please show me configuration, don't block your setup for that. Meaning, attach logs for neutron-servers, attach their config files.

Comment 24 Eran Kuris 2016-12-13 07:38:06 UTC
please contact me when you in the office I will show you the setup it would be easier.

Comment 25 Eran Kuris 2016-12-14 12:45:39 UTC
verified 
[root@controller-0 ~]# rpm -qa |grep neutron 
openstack-neutron-bigswitch-agent-2015.3.8-1.el7ost.noarch
openstack-neutron-common-8.1.2-13.el7ost.noarch
openstack-neutron-lbaas-8.0.0-1.el7ost.noarch
python-neutron-lbaas-8.0.0-1.el7ost.noarch
openstack-neutron-ml2-8.1.2-13.el7ost.noarch
openstack-neutron-openvswitch-8.1.2-13.el7ost.noarch
openstack-neutron-metering-agent-8.1.2-13.el7ost.noarch
python-neutronclient-4.1.1-2.el7ost.noarch
python-neutron-lib-0.0.2-1.el7ost.noarch
openstack-neutron-bigswitch-lldp-2015.3.8-1.el7ost.noarch
python-neutron-8.1.2-13.el7ost.noarch
openstack-neutron-8.1.2-13.el7ost.noarch

Comment 26 Ihar Hrachyshka 2016-12-14 12:52:55 UTC
FYI the issue in Eran's setup was that the value of physical_network_mtus was set as 'datacentre:1500,datacentre:1500' which violates format of the option (it does not allow duplicates). There was an error in server log about parsing failure.

Comment 28 errata-xmlrpc 2016-12-21 16:50:27 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2016-2984.html


Note You need to log in before you can comment on or make changes to this bug.