Bug 1255540 - [RFE] Director Requires a Setting for VM default MTU to Enable Jumbo Frames
[RFE] Director Requires a Setting for VM default MTU to Enable Jumbo Frames
Status: CLOSED CURRENTRELEASE
Product: Red Hat OpenStack
Classification: Red Hat
Component: openstack-tripleo-heat-templates (Show other bugs)
7.0 (Kilo)
Unspecified Unspecified
urgent Severity low
: ga
: 8.0 (Liberty)
Assigned To: Dan Sneddon
Marius Cornea
: FutureFeature, TestOnly, ZStream
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2015-08-20 16:55 EDT by Dan Sneddon
Modified: 2016-09-14 07:37 EDT (History)
12 users (show)

See Also:
Fixed In Version: openstack-tripleo-heat-templates-0.8.9-1.el7ost
Doc Type: Enhancement
Doc Text:
You can now set a default MTU for Tenant networks in the network environment file prior to Overcloud deployment. To use this feature, set NeutronTenantMtu to a value other than 1400 (the default) in the "parameter_defaults:" section of the network environment file. Using jumbo frames (MTU larger than 1500) requires enabling a larger MTU on the Ethernet switches, and can increase the network performance for VMs. The performance increase is greatest with VXLAN, and can result in 3-5x throughput performance. Setting the default Neutron tenant MTU at deployment time saves having to make manual changes to the Neutron and Nova configuration files. If using VXLAN or GRE, the NeutronTenantMtu should be at least 50 bytes smaller than the MTU on the physical network. Now when NeutronTenantMtu is set, then Neutron will use this value to set the MTU on virtual network interfaces for instances.
Story Points: ---
Clone Of:
Environment:
Last Closed: 2016-04-20 07:22:20 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)


External Trackers
Tracker ID Priority Status Summary Last Updated
Red Hat Knowledge Base (Solution) 2521041 None None None 2016-09-14 07:37 EDT
OpenStack gerrit 280852 None None None 2016-02-25 06:45 EST

  None (edit)
Description Dan Sneddon 2015-08-20 16:55:54 EDT
Description of problem:
VM performance is increased greatly by enabling jumbo frames, especially when using tunneling. In order to enable jumbo frames, several settings need to be changed, and we don't provide a way to set all of these options at deployment time.

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

How reproducible:
100%

Steps to Reproduce:
1. Enable jumbo frames on switches
2. Configure NIC templates to set jumbo MTU on physical interfaces
3. Deploy OSP 7

Actual results:
VMs are still set to use a default MTU of 1400, no matter what the actual capacity of the physical connections.

Expected results:
Since the performance is greatly enhanced when using jumbo frames, we should enable a way to set this by default for VMs that doesn't involve editing configuration files and restarting Neutron DHCP agents.

Additional info:
Here are all the things that need to be set:

overcloud-without-mergepy.yaml has:

parameters:
  NeutronDnsmasqOptions:
    default: 'dhcp-option-force=26,1400'
    description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.


So we need to override the default parameter in the Heat stack:

parameter_defaults:
    NeutronDnsmasqOptions: 'dhcp-option-force=26,<MTU>'

That setting gets written to /etc/neutron/dnsmasq-neutron.conf on the controllers.

Then, every compute and controller node has to have these settings:

/etc/nova/nova.conf:

network_device_mtu=<MTU>

/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini:

veth_mtu = <MTU>

(where <MTU> is the physical MTU - 50 bytes, so if the physical interfaces are set to 9000, this should be set to 8950)

If we had a single command-line parameter, say --default-vm-mtu, then we could set this at deployment time. Alternatively, we could set a Heat parameter for this value, and then use that to create the proper configuration in those three places. Another approach would be to leave the current NeutronDnsmasqOptions parameter as-is, but then add a parameter that sets network_device_mtu and veth_mtu, but then we will need to set both parameters at deployment time.
Comment 25 Marius Cornea 2016-04-19 12:12:38 EDT
Passing the following environment file:

parameter_defaults:
  NeutronTenantMtu: 1500

resulted in the follwing MTU on the instance:

stack@instack:~>>> ssh fedora@172.29.2.103 '/usr/sbin/ip l show dev eth0'
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether fa:16:3e:62:a0:2e brd ff:ff:ff:ff:ff:ff

On compute:

[root@overcloud-compute-0 heat-admin]# grep network_device_mtu /etc/neutron/neutron.conf 
network_device_mtu=1500
[root@overcloud-compute-0 heat-admin]# grep mtu /etc/nova/nova.conf 
#network_device_mtu=<None>
network_device_mtu=1500

On controller:
[root@overcloud-controller-0 heat-admin]# grep network_device_mtu /etc/neutron/neutron.conf 
network_device_mtu=1500
[root@overcloud-controller-0 heat-admin]# grep mtu /etc/nova/nova.conf 
#network_device_mtu=<None>


One note, as mentioned in the commit message: when using tunnelling it is important that the physical interface mtu allows the tunnel overhead.

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