Public bug reported:

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 'rarp' qemu-2.5+dfsg/debian/patches/ ; echo $?
1

** Affects: qemu (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: live-migration qemu

** Description changed:

  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 of those, grep for
+ 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 
+ 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
+   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 'rarp' 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
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to