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
| ... | ... |
@@ -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 |