To troubleshoot Data Plane Development Kit (DPDK) vRouter issues, it is necessary to get the QEMU version that is installed on the customer node as baseline information.
This article describes the method to check the QEMU version on a compute node and also lists the differences between each Juniper-modified QEMU package.
Note: QEMU 2.3 is EOL and therefore, is no longer supported by Canonical.
The following two commands can be used on a kernel or a DPDK compute node to acquire detailed information about the QEMU packages installed: dpkg -l |grep qemu-system and apt-cache policy qemu-system . However, the result differs between a kernel compute and a DPDK compute even for the same Contrail version.
dpkg -l |grep qemu-system
apt-cache policy qemu-system
The following examples are taken from the Contrail 3.2.8.0-66 cluster. The first one is from a kernel compute and the second is from a DPDK compute. The obvious differences are that the kernel compute uses QEMU 2.2, whereas the DPDK compute uses QEMU 2.3 with the Juniper-modified change, contrail1.
We will discuss what contrail1 means and also what contrail2 means, which could be seen in a later release such as Contrail 3.2.13.0.
Kernel
root@bcomp79:~# dpkg -l | grep qemu-system ii qemu-system 1:2.2+dfsg-5expubuntu9.7~cloud7 amd64 QEMU full system emulation binaries ii qemu-system-arm 1:2.2+dfsg-5expubuntu9.7~cloud7 amd64 QEMU full system emulation binaries (arm) ii qemu-system-common 1:2.2+dfsg-5expubuntu9.7~cloud7 amd64 QEMU full system emulation binaries (common files) ii qemu-system-mips 1:2.2+dfsg-5expubuntu9.7~cloud7 amd64 QEMU full system emulation binaries (mips) ii qemu-system-misc 1:2.2+dfsg-5expubuntu9.7~cloud7 amd64 QEMU full system emulation binaries (miscellaneous) ii qemu-system-ppc 1:2.2+dfsg-5expubuntu9.7~cloud7 amd64 QEMU full system emulation binaries (ppc) ii qemu-system-sparc 1:2.2+dfsg-5expubuntu9.7~cloud7 amd64 QEMU full system emulation binaries (sparc) ii qemu-system-x86 1:2.2+dfsg-5expubuntu9.7~cloud7 amd64 QEMU full system emulation binaries (x86) root@bcomp79:~# apt-cache policy qemu-system qemu-system: Installed: 1:2.2+dfsg-5expubuntu9.7~cloud7 Candidate: 1:2.2+dfsg-5expubuntu9.7~cloud7 Version table: *** 1:2.2+dfsg-5expubuntu9.7~cloud7 0 999 file:/opt/contrail/contrail_install_repo/ ./ Packages 100 /var/lib/dpkg/status 2.0.0+dfsg-2ubuntu1.45 0 500 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages 2.0.0~rc1+dfsg-0ubuntu3 0 500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
DPDK
root@bcomp80:~# dpkg -l | grep qemu-system ii qemu-block-extra:amd64 2:2.3+dfsg-5ubuntu9.4~cloud0+contrail1 amd64 extra block backend modules for qemu-system and qemu-utils ii qemu-system 2:2.3+dfsg-5ubuntu9.4~cloud0+contrail1 amd64 QEMU full system emulation binaries ii qemu-system-arm 2:2.3+dfsg-5ubuntu9.4~cloud0+contrail1 amd64 QEMU full system emulation binaries (arm) ii qemu-system-common 2:2.3+dfsg-5ubuntu9.4~cloud0+contrail1 amd64 QEMU full system emulation binaries (common files) ii qemu-system-mips 2:2.3+dfsg-5ubuntu9.4~cloud0+contrail1 amd64 QEMU full system emulation binaries (mips) ii qemu-system-misc 2:2.3+dfsg-5ubuntu9.4~cloud0+contrail1 amd64 QEMU full system emulation binaries (miscelaneous) ii qemu-system-ppc 2:2.3+dfsg-5ubuntu9.4~cloud0+contrail1 amd64 QEMU full system emulation binaries (ppc) ii qemu-system-sparc 2:2.3+dfsg-5ubuntu9.4~cloud0+contrail1 amd64 QEMU full system emulation binaries (sparc) ii qemu-system-x86 2:2.3+dfsg-5ubuntu9.4~cloud0+contrail1 amd64 QEMU full system emulation binaries (x86) root@bcomp80:~# apt-cache policy qemu-system qemu-system: Installed: 2:2.3+dfsg-5ubuntu9.4~cloud0+contrail1 Candidate: 2:2.3+dfsg-5ubuntu9.4~cloud0+contrail1 Version table: *** 2:2.3+dfsg-5ubuntu9.4~cloud0+contrail1 0 999 file:/opt/contrail/contrail_install_repo_dpdk/ ./ Packages 100 /var/lib/dpkg/status 1:2.2+dfsg-5expubuntu9.7~cloud7 0 999 file:/opt/contrail/contrail_install_repo/ ./ Packages 2.0.0+dfsg-2ubuntu1.42 0 500 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages 2.0.0~rc1+dfsg-0ubuntu3 0 500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
As you can see, the current version of QEMU installed on this compute node is QEMU 2.3 with the Juniper modification, that is, contrail1. The differences between contrail1 and contrail2, which could be seen in a later Contrail release, are as follows:
contrail1 version was provided to support the QEMU reconnect capability after a vRouter restarts so that a nova stop and nova start for a VM are not necessary after vRouter restarts.
nova stop
nova start
contrail2 version was provided to fix a bug ( Bug 1746578 ), which was seen when we added mergeable buffer support in Contrail 3.2.8.0, Contrail 4.0, and Contrail 4.1. Some of the customized VNFs in these versions did not have mergeable buffer support built in, which was causing loss of network communication after a vRouter was restarted. However, if a customer disables the mergeable buffer feature from the DPDK command line, the contrail2 version is not needed. Otherwise a later version of Contrail, such as Contrail 3.2.10.0, is recommended.