Bug 1255540 - [RFE] Director Requires a Setting for VM default MTU to Enable Jumbo Frames
Summary: [RFE] Director Requires a Setting for VM default MTU to Enable Jumbo Frames
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat OpenStack
Classification: Red Hat
Component: openstack-tripleo-heat-templates
Version: 7.0 (Kilo)
Hardware: Unspecified
OS: Unspecified
urgent
low
Target Milestone: ga
: 8.0 (Liberty)
Assignee: Dan Sneddon
QA Contact: Marius Cornea
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2015-08-20 20:55 UTC by Dan Sneddon
Modified: 2022-08-10 09:48 UTC (History)
12 users (show)

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.
Clone Of:
Environment:
Last Closed: 2016-04-20 11:22:20 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
OpenStack gerrit 280852 0 None None None 2016-02-25 11:45:35 UTC
Red Hat Issue Tracker OSP-7791 0 None None None 2022-08-10 09:48:48 UTC
Red Hat Knowledge Base (Solution) 2521041 0 None None None 2016-09-14 11:37:42 UTC

Description Dan Sneddon 2015-08-20 20:55:54 UTC
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 16:12:38 UTC
Passing the following environment file:

parameter_defaults:
  NeutronTenantMtu: 1500

resulted in the follwing MTU on the instance:

stack@instack:~>>> ssh fedora.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.