** Description changed: + [Impact] + L2 broadcasts are sent out in order to update MAC tables of the switches in the same broadcast domain. If this is not done after live migration there may be a temporary downtime period for clients trying to connect to services residing on a migrated VM due to the fact that switches will still forward frames to the old destination. It will also lead to varying behaviors depending on the operating system or software installed in the guest OS with regards to network activity: there may be cases when VM's network activity will force the MAC table update across the L2 network but this is not guaranteed. + + [Test case] + Steps are provided in the bug description. + + [Regression Potential] + Small: the change is trivial and is present both in the upstream QEMU and the newer ubuntu releases. This is also not a heavily changing code path in the upstream. + + -- + In short: 1) Get two Xenial hosts (instead, could be two lxd containers with QEMU inside or two VMs with nested virtualization enabled - doesn't matter); 1) Create a libvirt domain that uses QEMU (can be a bare instance, even without a disk, with a NIC without an IP address since we are testing L2 broadcasts); 2) Launch an instance; 3) Start listening for RARP packets on the destination host's bridge (QEMU uses a RARP L3 header and a broadcast L2 header which is easy to filter as no other software sends RARPs nowadays); 3) Do virsh migrate --live domain desturi; 4) Observe that no RARP packets are sent. The expected result (QEMU actually sends 5 of those, grep for SELF_ANNOUNCE_ROUNDS == 5 in the sources): sudo tcpdump -e -i br0 rarp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on br0, link-type EN10MB (Ethernet), capture size 262144 bytes 18:19:32.460765 52:54:00:25:49:b7 (oui Unknown) > Broadcast, ethertype Reverse ARP (0x8035), length 60: Reverse Request who-is 52:54:00:25:49:b7 (oui Unknown) tell 52:54:00:25:49:b7 (oui Unknown), length 46 18:19:32.504609 52:54:00:25:49:b7 (oui Unknown) > Broadcast, ethertype Reverse ARP (0x8035), length 60: Reverse Request who-is 52:54:00:25:49:b7 (oui Unknown) tell 52:54:00:25:49:b7 (oui Unknown), length --- lsb_release -r Release: 16.04 dpkg --status qemu-kvm | grep Version Version: 1:2.5+dfsg-5ubuntu10.6 -- Fortunately, there is already a fix for this: https://lists.gnu.org/archive/html/qemu-devel/2016-07/msg04645.html http://git.qemu.org/?p=qemu.git;a=commitdiff;h=ca1ee3d6b546e841a1b9db413eb8fa09f13a061b;hp=14e60aaece20a1cfc059a69f6491b0899f9257a8 The issue was introduced in fefe2a78abde932e0f340b21bded2c86def1d242: http://git.qemu.org/?p=qemu.git;a=commitdiff;h=fefe2a78abde932e0f340b21bded2c86def1d242 $ apt-get source qemu # we are looking at qemu_2.5+dfsg debian branch $ ls qemu*dsc qemu_2.5+dfsg-5ubuntu10.6.dsc $ git remote show origin | grep Fetch Fetch URL: git://anonscm.debian.org/pkg-qemu/qemu.git $ git checkout debian/qemu_2.5+dfsg-5 HEAD is now at aa4dbf2... Uploading version 2.5+dfsg-5 to unstable The commit that introduced the issue is present in qemu_2.5+dfsg-5. $ git merge-base --is-ancestor fefe2a78abde932e0f340b21bded2c86def1d242 HEAD ; echo $? 0 There are no patches for it: grep -RiP 'QEMU_NET_PACKET_FLAG_RAW' qemu-2.5+dfsg/debian/patches/ ; echo $? 1
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1656480 Title: QEMU Does not Send L2 Broadcasts After Live Migration To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/qemu/+bug/1656480/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs