MTU has always been a touchy subject in Neutron. Who manages it? Should instances have info about the underlying infrastructure? Should this all be on the operator to configure properly? Luckily these questions appear to have been answered for the most part in the Mitaka release of OpenStack. This bug for OpenVSwitch (and this one for linuxbridge) more or less solve this issue for us.
Now we can configure MTU in Neutron and Neutron will be intelligent about how to use it. My end goal is to have an infrastructure with 9000 mtu, while the instances themselves can live with the standard 1500 mtu. To achieve that I did have to pull in one patch early, though it looks like it will make it into Neutrons mitaka-rc2 release. The patch applies
global_physnet_mtu value to br-int and br-tun so the operator doesn’t have to. Beyond that, it was all just a matter of Neutron config options, which is fantastic!
Here are the changes I had to make to properly get Neutron using my larger 9000 MTU without my intervention.
# /etc/neutron/neutron.conf [DEFAULT] global_physnet_mtu = 9000
# /etc/neutron/plugins/ml2/ml2_conf.ini [ml2] physical_network_mtus = physnet1:9000 # The default value for path_mtu is 1500, if you want your instances to have # larger mtus you should adjust this to <= global_physnet_mtu path_mtu = 1500
That was it! My interfaces we’re properly configured.
160: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UNKNOWN group default link/ether a0:36:9f:67:32:c6 brd ff:ff:ff:ff:ff:ff inet6 fe80::a236:9fff:fe67:32c6/64 scope link tentative valid_lft forever preferred_lft forever 161: br-int: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UNKNOWN group default link/ether 66:fd:95:70:37:4a brd ff:ff:ff:ff:ff:ff inet6 fe80::64fd:95ff:fe70:374a/64 scope link tentative valid_lft forever preferred_lft forever 162: br-tun: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UNKNOWN group default link/ether 76:37:eb:d7:3b:48 brd ff:ff:ff:ff:ff:ff inet6 fe80::7437:ebff:fed7:3b48/64 scope link tentative valid_lft forever preferred_lft forever
A shoutout to Sean Collins (sc68cal) for fixing the br-int/br-tun issue and Armando Migliaccio (armax) for targeting the bug for inclusion in mitaka-rc2 if all goes well!