Comment 0 for bug 1224007

Chris J Arges (arges) wrote :

* Description

When configuring a network with bonding+vlan and setting the MTU,
occasionally the MTU doesn't get set properly on the vlan interface.

In addition if one checks /var/log/upstart/networking.log whenever there is a failure the following message is printed:
SIOCSIFMTU: Numerical result out of range

I've tested the latest ifupdown package (0.7.44) and the problem still exists.
Multi/single CPU settings both exhibit the issue.

* Versions
This affects latest ifupdown and ubuntu p/q/r/s.

* Test Case

# Create a p/q/r/s server vm with two network interfaces
# This is reproducible on real hardware as well

# Install the following
sudo apt-get install vlan ifenslave-2.6 bridge-utils
sudo modprobe bonding 8021q

# Edit the interfaces file

auto bond0
iface bond0 inet manual
  bond-mode 802.3ad
  bond-miimon 100
  bond-lacp-rate 1
  bond-slaves eth0 eth1
  post-up ifconfig bond0 mtu 9000

auto eth0
iface eth0 inet manual
  bond-master bond0
  post-up ifconfig eth0 mtu 9000

auto eth1
iface eth1 inet manual
  bond-master bond0
  post-up ifconfig eth1 mtu 9000

auto bond0.123
iface bond0.123 inet static
  post-up ifconfig bond0.123 mtu 9000

# edit rc.local (or another startup script) so we reboot until we hit the error

DEVS="eth0 eth1 bond0 bond0.123"
for d in $DEVS; do
        mtu=$(cat /sys/class/net/$d/mtu)
        if [ $mtu != 9000 ]; then
                echo "FAIL"
                exit 1

exit 0

# Now reboot the machine, within 10m or so you should be at the login prompt
# if you ifconfig | grep MTU you will see some of our interfaces did not get
# the MTU properly set and the test failed.
# Essentially we want to ensure that all MTU's (except lo) were set to 9000

* Workaround

Change the bond0.123 post-up command to:
  post-up sleep 2 && ifconfig bond0.123 mtu 9000

Now when rebooting the interfaces will all be brought up with the proper MTU.