The last few weeks I spend a lot of time upgrading Ubuntu 9.10 systems to 10.04, these systems are SuperMicro blade systems with 2 NIC’s per blade.
By using bonding (active-backup) we combine eth0 and eth1 to bond0. On top of the bond we use 8021q VLAN’s, so we have devices like bond0.100, bond0.303, etc, etc.
Those devices then are used to create bridges like vlanbr100 and vlanbr303 to give our KVM Virtual Machines access to our network.
This would result in a setup like:
eth0 -> | | -> bond0 -> bond0.100 -> vlanbr100 eth1 -> | -> bond0.303 -> vlanbr303
Under Ubuntu 9.10 and before this setup worked fine, but under Ubuntu 10.04 we noticed that the network inside the virtual machine wouldn’t work that well. The ARP reply (is-at) would be dropped at the bridge and didn’t get transferred to the Virtual Machine.
If I’d set the arp manually inside the VM, everything started to work, but ofcourse, that was not the way it was meant to be.
After hours of searching I found a Debian bugreport, that was exactly my problem!
It seems that Ubuntu’s ifenslave-2.6 package (1.10-14) under 10.04 has exactly the same bug. Backporting the ifenslave package from 10.10 (1.10-15) fixed everything for me, my virtual machines would start to work again.
I created a bug report for this at Ubuntu, hopefully they will fix it in 10.04 rather quickly.
For now, if you have the same problem, just backport the ifenslave package from 10.10 to 10.04