neutron: remove tenant MTU configuration options
authorIhar Hrachyshka <ihrachys@redhat.com>
Mon, 6 Jun 2016 13:36:54 +0000 (15:36 +0200)
committerBrent Eagles <beagles@redhat.com>
Tue, 5 Jul 2016 13:05:22 +0000 (10:35 -0230)
Since Mitaka, Neutron and Nova do the right thing for MTU, correctly
calculating and applying MTU per network, considering its network type
and underlying physical network MTU (1500 by default). Neutron now also
correctly advertise proper MTU to instances through DHCP and RA
mechanisms. With that, there is no reason to have those MTU hacks in
deployment tools. Actually, they not only do no good, but break some
setups (Jumbo frame aware infrastructure), or at least make them
non-optimal (lowering instance MTU to 1400 when it's not needed, or when
tunnel overhead does not require 100 bytes).

Note that Neutron still has a set of configuration options to allow for
custom physical network MTUs (global_physnet_mtu, path_mtu,
physical_network_mtus). Those options define underlying infrastructure
though, not tenant MTUs. To support Jumbo frames, TripleO should allow
to set those options. That said, it's not the immediate goal of the
patch, and hence such an effort would require a separate patch.

Mitaka+ documentation on MTU configuration for Neutron:
http://docs.openstack.org/mitaka/networking-guide/adv-config-mtu.html

Change-Id: I540ba5dc69d0506f71b59746efcce94c73f9317f

overcloud.yaml
puppet/compute.yaml
puppet/controller.yaml
puppet/services/neutron-dhcp.yaml

index d453f19..32d513b 100644 (file)
@@ -134,15 +134,6 @@ parameters:
     description: Shared secret to prevent spoofing
     type: string
     hidden: true
-  NeutronTenantMtu:
-    description: >
-      The default MTU for tenant networks. For VXLAN/GRE tunneling, this should
-      be at least 50 bytes smaller than the MTU on the physical network. This
-      value will be used to set the MTU on the virtual Ethernet device.
-      This value will be used to construct the NeutronDnsmasqOptions, since that
-      will determine the MTU that is assigned to the VM host through DHCP.
-    default: "1400"
-    type: string
   NeutronTunnelTypes:
     default: 'vxlan'
     description: |
@@ -820,7 +811,6 @@ resources:
           MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
           MysqlMaxConnections: {get_param: MysqlMaxConnections}
           MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
-          NeutronTenantMtu: {get_param: NeutronTenantMtu}
           NeutronPublicInterface: {get_param: NeutronPublicInterface}
           NeutronPassword: {get_param: NeutronPassword}
           NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
@@ -886,7 +876,6 @@ resources:
           KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
           KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
           NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
-          NeutronTenantMtu: {get_param: NeutronTenantMtu}
           NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
           NeutronEnableL2Pop : {get_param: NeutronEnableL2Pop}
           NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
index db2d746..820a2ac 100644 (file)
@@ -118,15 +118,6 @@ parameters:
     default: nic1
     description: A port to add to the NeutronPhysicalBridge.
     type: string
-  NeutronTenantMtu:
-    description: >
-      The default MTU for tenant networks. For VXLAN/GRE tunneling, this should
-      be at least 50 bytes smaller than the MTU on the physical network. This
-      value will be used to set the MTU on the virtual Ethernet device.
-      This number is related to the value of NeutronDnsmasqOptions, since that
-      will determine the MTU that is assigned to the VM host through DHCP.
-    default: 1400
-    type: number
   NeutronTunnelTypes:
     type: comma_delimited_list
     description: |
@@ -517,7 +508,6 @@ resources:
                 nova::migration::live_migration_tunnelled: {get_input: nova_enable_rbd_backend}
                 rbd_persistent_storage: {get_input: cinder_enable_rbd_backend}
                 nova_password: {get_input: nova_password}
-                nova::compute::network_device_mtu: {get_input: neutron_tenant_mtu}
                 nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
                 nova::vncproxy::common::vncproxy_protocol: {get_input: nova_vncproxy_protocol}
                 nova::vncproxy::common::vncproxy_host: {get_input: nova_vncproxy_host}
@@ -543,7 +533,6 @@ resources:
                 neutron_host: {get_input: neutron_host}
                 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
 
-                neutron::network_device_mtu: {get_input: neutron_tenant_mtu}
                 neutron::plugins::ml2::tenant_network_types: {get_input: neutron_tenant_network_types}
                 neutron::agents::ml2::ovs::tunnel_types: {get_input: neutron_tunnel_types}
                 neutron::agents::ml2::ovs::extensions: {get_input: neutron_agent_extensions}
@@ -643,7 +632,6 @@ resources:
             template: MAPPINGS
             params:
               MAPPINGS: {get_param: NeutronBridgeMappings}
-        neutron_tenant_mtu: {get_param: NeutronTenantMtu}
         neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
         neutron_enable_l2pop: {get_param: NeutronEnableL2Pop}
         neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
index 101d971..86e7a4b 100644 (file)
@@ -236,15 +236,6 @@ parameters:
     default: nic1
     description: What interface to bridge onto br-ex for network nodes.
     type: string
-  NeutronTenantMtu:
-    description: >
-      The default MTU for tenant networks. For VXLAN/GRE tunneling, this should
-      be at least 50 bytes smaller than the MTU on the physical network. This
-      value will be used to set the MTU on the virtual Ethernet device.
-      This number is related to the value of NeutronDnsmasqOptions, since that
-      will determine the MTU that is assigned to the VM host through DHCP.
-    default: 1400
-    type: number
   NovaEnableDBPurge:
     default: true
     description: |
@@ -584,7 +575,6 @@ resources:
               CLUSTER: {get_param: MysqlClusterUniquePart}
         neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
         neutron_password: {get_param: NeutronPassword}
-        neutron_tenant_mtu: {get_param: NeutronTenantMtu}
         neutron_internal_url: { get_param: [ EndpointMap, NeutronInternal, uri ] }
         neutron_public_url: { get_param: [ EndpointMap, NeutronPublic, uri ] }
         neutron_admin_url: { get_param: [ EndpointMap, NeutronAdmin, uri ] }
@@ -856,7 +846,6 @@ resources:
 
                 # Neutron
                 neutron::bind_host: {get_input: neutron_api_network}
-                neutron::network_device_mtu: {get_input: neutron_tenant_mtu}
                 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
                 neutron::agents::metadata::metadata_ip: {get_input: neutron_api_network}
                 neutron::keystone::auth::public_url: {get_input: neutron_public_url }
@@ -950,7 +939,6 @@ resources:
                 nova::api::api_bind_address: {get_input: nova_api_network}
                 nova::api::metadata_listen: {get_input: nova_metadata_network}
                 nova::api::admin_password: {get_input: nova_password}
-                nova::compute::network_device_mtu: {get_input: neutron_tenant_mtu}
                 nova::database_connection: {get_input: nova_dsn}
                 nova::api_database_connection: {get_input: nova_api_dsn}
                 nova::glance_api_servers: {get_input: glance_api_servers}
index 80ccf1c..5d02bc9 100644 (file)
@@ -13,22 +13,6 @@ parameters:
     default: 'False'
     description: If True, DHCP provide metadata route to VM.
     type: string
-  NeutronDnsmasqOptions:
-    default: 'dhcp-option-force=26,%MTU%'
-    description: >
-      Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU
-      to be set to the value of NeutronTenantMtu, which should be set to account
-      for tunnel overhead.
-    type: string
-  NeutronTenantMtu:
-    description: >
-      The default MTU for tenant networks. For VXLAN/GRE tunneling, this should
-      be at least 50 bytes smaller than the MTU on the physical network. This
-      value will be used to set the MTU on the virtual Ethernet device.
-      This value will be used to construct the NeutronDnsmasqOptions, since that
-      will determine the MTU that is assigned to the VM host through DHCP.
-    default: "1400"
-    type: string
 
 resources:
 
@@ -42,12 +26,6 @@ outputs:
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
-          - neutron::agents::dhcp::dnsmasq_config_file: /etc/neutron/dnsmasq-neutron.conf
-            tripleo::profile::base::neutron::dhcp:
-              str_replace:
-                template: {get_param: NeutronDnsmasqOptions}
-                params:
-                  '%MTU%': {get_param: NeutronTenantMtu}
-            neutron::agents::dhcp::enable_isolated_metadata: {get_param: NeutronEnableIsolatedMetadata}
+          - neutron::agents::dhcp::enable_isolated_metadata: {get_param: NeutronEnableIsolatedMetadata}
       step_config: |
         include tripleo::profile::base::neutron::dhcp