ethernet -> bond -> 802.1q vlan -> dhcp causes race condition, hangs on boot

Bug #1636678 reported by Chris Pitchford
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ifenslave (Ubuntu)
New
Undecided
Unassigned

Bug Description

I have two ethernet interfaces (eno1, eno2) bonded to form a bond0 interface
I then split this interface into 802.1q vlan interfaces bond0.2 and bond0.5

bond0.2 receives a static IP
bond0.5 receives its IP via DHCP

During boot up, it seems that bond0 starts and bond0.2 and bond0.5 start. bond0.5 starts dhclient as expected.

However, this all happens whilst eno1 and eno2 are starting and the ifenslave scripts believe bond0 is blocked so they hang.

The net result is dhclient starts before eno1,eno2 are attached to the bond0 interface, therefore dhclient can't talk to the network, so it never finishes, so eno1,eno2 are never unblocked and never added.

Here's my basic config from /etc/network/interfaces:

auto lo eno1 eno2 bond0 bond0.2 bond0.5

iface eno1 inet manual
        bond-master bond0

iface eno2 inet manual
        bond-master bond0

iface bond0 inet manual
        bond-slaves eno1 eno2
        bond-mode 4
        bond-lacp-rate 1
        bond-miimon 100
        bond-updelay 200
        bond-downdelay 200

iface bond0.2 inet manual
        vlan-raw-device bond0
        address 192.168.5.1
        netmask 255.255.255.0

iface bond0.5 inet dhcp
        vlan-raw-device bond0

On boot, I can see ifup is called for all interfaces but soon after, the system hangs and I'm presented with a 5minute 4 second timeout countdown.
After this, the network service has failed and I'm left with a partially configured network (the dhcp interface is never configured)

What should happen is ifup should start eno1, eno2 and bond0 THEN bond0.2 and bond0.5 should be started... or... eno1 and eno2 should not be blocked and added to bond0

ProblemType: Bug
DistroRelease: Ubuntu 16.04
Package: ifenslave 2.7ubuntu1
ProcVersionSignature: Ubuntu 4.4.0-45.66-generic 4.4.21
Uname: Linux 4.4.0-45-generic x86_64
ApportVersion: 2.20.1-0ubuntu2.1
Architecture: amd64
Date: Wed Oct 26 03:46:40 2016
InstallationDate: Installed on 2016-10-24 (1 days ago)
InstallationMedia: Ubuntu-Server 16.04.1 LTS "Xenial Xerus" - Release amd64 (20160719)
PackageArchitecture: all
SourcePackage: ifenslave
UpgradeStatus: No upgrade log present (probably fresh install)

Revision history for this message
Chris Pitchford (newsuk-platform) wrote :
Revision history for this message
Chris Pitchford (newsuk-platform) wrote :

I believe this is probably an issue with ifupdown and how it handles lock files. It appears to randomly allow a dependant interface (bond0.5) to start before its provider (bond0) which means eno1 would never receive the ifenslave.bond0 file and therefore no interfaces are ever attached to the bond.

I've submitted a new bug for that package, with a work around (if you're happy hacking systemd service files)

https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1636708

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.