Browse code

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

Ihar Hrachyshka authored on 2016/01/14 23:31:31
Showing 1 changed files
... ...
@@ -40,6 +40,12 @@ Q_ML2_PLUGIN_EXT_DRIVERS=${Q_ML2_PLUGIN_EXT_DRIVERS-port_security}
40 40
 # L3 Plugin to load for ML2
41 41
 ML2_L3_PLUGIN=${ML2_L3_PLUGIN:-neutron.services.l3_router.l3_router_plugin.L3RouterPlugin}
42 42
 
43
+# Underlying path MTU for physical network managing br-tun; use '-' instead of
44
+# ':-' to allow people to explicitly override this to blank, to disable
45
+# automatic MTU calculation for tunnelled tenant networks
46
+Q_ML2_PLUGIN_PATH_MTU=${Q_ML2_PLUGIN_PATH_MTU-1500}
47
+
48
+
43 49
 function populate_ml2_config {
44 50
     CONF=$1
45 51
     SECTION=$2
... ...
@@ -77,6 +83,12 @@ function neutron_plugin_configure_service {
77 77
         echo "WARNING - The ml2 plugin is using local tenant networks, with no connectivity between hosts."
78 78
     fi
79 79
 
80
+    # Enable ml2 mtu calculation mechanism for networks by providing path mtu
81
+    # value for physical devices that are used for br-tun traffic
82
+    if [[ "$ENABLE_TENANT_TUNNELS" == "True" ]] && [[ "$Q_ML2_PLUGIN_PATH_MTU" != "" ]]; then
83
+        iniset /$Q_PLUGIN_CONF_FILE ml2 path_mtu "$Q_ML2_PLUGIN_PATH_MTU"
84
+    fi
85
+
80 86
     # Allow for overrding VLAN configuration (for example, to configure provider
81 87
     # VLANs) by first checking if Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS is set.
82 88
     if [ "$Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS" == "" ]; then