[Bug 1288196] Re: MAC address of bonding interface is randomly picked

Stéphane Graber stgraber at stgraber.org
Wed Mar 5 15:21:34 UTC 2014


Yeah, this is one of the unfortunate side effects of having event based
network bring up in Ubuntu. As devices are added to the bond in the
order in which they're initialized by the kernel and as that
initialization happens in parallel, the final order tends to be pretty
random...

Setting hwaddr is the obvious workaround, however as you said, that's
problematic on deployments where you'd like to have an identical
interfaces file on all machines...

I'm really not sure of what to do about this... I've been thinking about a few possibilities but they each come with serious problems:
 - Add a new field which lets you specify what interface to pick the mac address from. The problem is that this won't work until the interface actually exists. If we only switch the MAC once the interface exists, then that won't solve your IPv6 case as the link-local and eui64 addresses don't update on mac address change.
 - Reuse the bond-master field and have all bond actions held until the bond-master appears (with a 5min timeout), thereby guaranteeing it'll always be joined first. The obvious problem there is that if the bond-master doesn't appear, your boot will hang for 5 minutes and you'll still get the wrong MAC (and therefore the wrong IP).

I think the bond-master idea is the least wrong of the two but I'd need
to get back into the code quite a bit to figure out how that'd work
exactly and decide if we should reuse the name or find a new one for
this.

** Changed in: ifenslave-2.6 (Ubuntu)
       Status: New => Triaged

** Changed in: ifenslave-2.6 (Ubuntu)
   Importance: Undecided => Medium

** Changed in: ifenslave-2.6 (Ubuntu)
     Assignee: (unassigned) => Stéphane Graber (stgraber)

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to ifenslave-2.6 in Ubuntu.
https://bugs.launchpad.net/bugs/1288196

Title:
  MAC address of bonding interface is randomly picked

Status in “ifenslave-2.6” package in Ubuntu:
  Triaged

Bug description:
  The new style of bonding configuration (using "iface bond0 [...] \
  bond_slaves none" for the master interface plus "iface ethX inet
  manual \ bond_master bond0" for each slave interface) results in the
  MAC address of the bond0 interface being randomly picked from one of
  the slaves.

  This causes problems for auto-configuration methods such as IPv4 DHCP
  and IPv6 SLAAC, as DHCPv4 leases and IPv6 Interface Identifiers are
  directly based on the interface's MAC address. This means that if the
  MAC address changes unexpectedly, so may the IP address(es) as well,
  which might be big problem if the machine in question is some sort of
  server or similar that have just rebooted.

  Unexpected MAC address changes may also cause problems for statically
  configured addresses, as the upstream router will likely have cached
  the IPv4 ARP and/or the IPv6 Neighbour entry pointing to the old MAC
  address. This results in the server not having any network
  connectivity until the upstream router have timed out its cache entry
  and probes anew. These timeouts may well be up to 20 minutes.

  The old configuration style ("iface bond0 [...] \ bond_slaves eth0
  eth1 [...]") did not have this problem, as the MAC address used for
  bond0 would always be the first listed interface (eth0). While I have
  no particular objection to the syntax change in itself, the choice of
  MAC address should be deterministic. It is probably possible to
  manually set the MAC address with the "hwaddr" option, but this is not
  ideal because it by necessity means every node must have a unique
  configuration file, which is problematic for large automated server
  deployments for example.

  Tore

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ifenslave-2.6/+bug/1288196/+subscriptions



More information about the foundations-bugs mailing list