From 06cfce37560243d22cd05b2c620be6702528a0b1 Mon Sep 17 00:00:00 2001 From: Ihar Hrachyshka Date: Thu, 14 Jan 2016 15:31:31 +0100 Subject: [PATCH] neutron: enable ml2 mtu calculation mechanism Setting path_mtu to reflect mtu for physical devices that handle traffic issued from br-tun makes ml2 plugin to calculate mtu for tenant networks properly, considering encapsulation headers. After that, calculated mtu values can be propagated into instances (currently, only DHCP approach is implemented; RA support for IPv6 subnets is under review). This change allows to run tunnelled tenant networks in multinode when underlying physical devices don't support jumbo frames. Note: changing the default value in neutron would not be backwards compatible, since it could slow down east-west tunnelled traffic in clouds that run on jumbo-aware networks. Change-Id: I8287677c7ad0f13fa9f5cb194f9372d04b78cb61 Related-Bug: #1527675 --- lib/neutron_plugins/ml2 | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/neutron_plugins/ml2 b/lib/neutron_plugins/ml2 index 30e1b036f3..0483ef1fac 100644 --- a/lib/neutron_plugins/ml2 +++ b/lib/neutron_plugins/ml2 @@ -40,6 +40,12 @@ Q_ML2_PLUGIN_EXT_DRIVERS=${Q_ML2_PLUGIN_EXT_DRIVERS-port_security} # L3 Plugin to load for ML2 ML2_L3_PLUGIN=${ML2_L3_PLUGIN:-neutron.services.l3_router.l3_router_plugin.L3RouterPlugin} +# Underlying path MTU for physical network managing br-tun; use '-' instead of +# ':-' to allow people to explicitly override this to blank, to disable +# automatic MTU calculation for tunnelled tenant networks +Q_ML2_PLUGIN_PATH_MTU=${Q_ML2_PLUGIN_PATH_MTU-1500} + + function populate_ml2_config { CONF=$1 SECTION=$2 @@ -77,6 +83,12 @@ function neutron_plugin_configure_service { echo "WARNING - The ml2 plugin is using local tenant networks, with no connectivity between hosts." fi + # Enable ml2 mtu calculation mechanism for networks by providing path mtu + # value for physical devices that are used for br-tun traffic + if [[ "$ENABLE_TENANT_TUNNELS" == "True" ]] && [[ "$Q_ML2_PLUGIN_PATH_MTU" != "" ]]; then + iniset /$Q_PLUGIN_CONF_FILE ml2 path_mtu "$Q_ML2_PLUGIN_PATH_MTU" + fi + # Allow for overrding VLAN configuration (for example, to configure provider # VLANs) by first checking if Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS is set. if [ "$Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS" == "" ]; then