[libvirt] Paused networking on VM up/down with NAT fwd

Laine Stump laine at laine.org
Mon Apr 11 07:10:08 UTC 2011


On 04/10/2011 06:32 PM, Serge Hallyn wrote:
> Hi all,
>
> some time ago bug
> https://bugs.launchpad.net/ubuntu/maverick/+source/qemu-kvm/+bug/584048
> was fixed in libvirt.  It's the one where when a VM is started or stopped
> which has a lower macaddr than what the bridge currently has, the bridge
> changes macaddr and networking pauses.  The fix was to make sure that a
> macaddr assigned by libvirt will start with 'fe:' making it higher than
> the physical interface.
>
> But this doesn't help when virbr0 isn't associated with any physical
> nic, as in the common NAT case!
>
> Is there anything we can do to help that case?

Yes, it's already been addressed, The following commit was included in 
0.9.0:

commit 5754dbd56d4738112a86776c09e810e32f7c3224
Author: Laine Stump <laine at laine.org>
Date:   Wed Feb 9 03:28:12 2011 -0500

     Give each virtual network bridge its own fixed MAC address

     This fixes https://bugzilla.redhat.com/show_bug.cgi?id=609463

     The problem was that, since a bridge always acquires the MAC address
     of the connected interface with the numerically lowest MAC, as guests
     are started and stopped, it was possible for the MAC address to change
     over time, and this change in the network was being detected by
     Windows 7 (it sees the MAC of the default route change), so on each
     reboot it would bring up a dialog box asking about this "new network".

     The solution is to create a dummy tap interface with a MAC guaranteed
     to be lower than any guest interface's MAC, and attach that tap to the
     bridge as soon as it's created. Since all guest MAC addresses start
     with 0xFE, we can just generate a MAC with the standard "0x52, 0x54,
     0" prefix, and it's guaranteed to always win (physical interfaces are
     never connected to these bridges, so we don't need to worry about
     competing numerically with them).





More information about the libvir-list mailing list