Effective Virtual CPU Configuration with QEMU and Libvirt

Effective Virtual CPU Configuration with QEMU and Libvirt

Effective Virtual CPU Configuration with QEMU and libvirt

Kashyap Chamarthy <[email protected]>

Open Source Summit Edinburgh, 2018

1 / 38

Timeline of recent CPU flaws, 2018 (a)

Jan 03 • Spectre v1: Bounds Check Bypass Jan 03 • Spectre v2: Branch Target Injection Jan 03 • Meltdown: Rogue Data Cache Load May 21 • Spectre-NG: Speculative Store
Bypass

Jun 21 • TLBleed: Side-channel attack over shared TLBs

2 / 38

Timeline of recent CPU flaws, 2018 (b)

Jun 29 • NetSpectre: Side-channel attack over local network

Jul 10 • Spectre-NG: Bounds Check Bypass
Store

Aug 14 • L1TF: "L1 Terminal Fault"

. . . •

?

3 / 38

What this talk is not about

4 / 38

What this talk is not about

Out of scope:

Internals of various side-channel attacks How to exploit Meltdown & Spectre variants Details of performance implications

4 / 38

What this talk is not about

Out of scope:

Internals of various side-channel attacks How to exploit Meltdown & Spectre variants Details of performance implications

  Related talks in the ‘References’ section

4 / 38

KVM-based virtualization components

Linux with KVM

5 / 38

KVM-based virtualization components

QEMU

VM1

QEMU

VM2

  • Disk1
  • Disk2

ioctl()

Linux with KVM

5 / 38

KVM-based virtualization components

libvirtd
QEMU

VM1

QEMU

VM2

  • Disk1
  • Disk2

ioctl()

Linux with KVM

5 / 38

KVM-based virtualization components

OpenStack, et al.

Virt Driver

libvirtd
QEMU

VM1

QEMU

VM2

  • Disk1
  • Disk2

ioctl()

Linux with KVM

5 / 38

KVM-based virtualization components

OpenStack, et al.

libguestfs

Virt Driver

(guestfish) libvirtd

QEMU

VM1

QEMU

VM2

Custom Appliance

  • Disk1
  • Disk2

ioctl()

Linux with KVM

5 / 38

QEMU and KVM

QEMU

Guest RAM

  • e1000e
  • NVMe Virtio-SCSI

  • vCPU-2
  • vCPU-1

ioctl()→/dev/kvm

Host kernel

[kvm.ko; kvm-intel.ko] VMX modes: guest↔host

Emulation: CPUID, irqchip

VMLAUNCH, ...

Hardware: Intel VMX extensions

6 / 38

QEMU and KVM

QEMU

Guest RAM

  • e1000e
  • NVMe Virtio-SCSI

  • vCPU-2
  • vCPU-1

ioctl()→/dev/kvm

To inspect, use Linux tools:

Host kernel

[kvm.ko; kvm-intel.ko] VMX modes: guest↔host

Emulation: CPUID, irqchip

top, kill, ...

VMLAUNCH, ...

Hardware: Intel VMX extensions

6 / 38

Hardware-based virtualization with KVM

KVM prepares

VMENTER

to enter CPU Guest Mode

QEMU issues

ioctl(KVM_RUN)

Perform in-kernel emulation
Execute natively

in Guest Mode. (CPU with VMX)

VMEXIT

Yes No
QEMU emulates hardware
Emulate

in-kernel?

7 / 38

Part I

Interfaces to configure vCPUs

8 / 38

x86: QEMU’s default CPU models (a)

The default models (qemu32, qemu64) work on any host CPU

9 / 38

x86: QEMU’s default CPU models (a)

The default models (qemu32, qemu64) work on any host CPU

But they are dreadful choices!

9 / 38

x86: QEMU’s default CPU models (a)

The default models (qemu32, qemu64) work on any host CPU

But they are dreadful choices!

No AES / AES-NI: critical for TLS performance No RDRAND: important for entropy No PCID: performance- & security-critical (thanks, Meltdown)

9 / 38

x86: QEMU’s default CPU models (b)

$ cd /sys/devices/system/cpu/vulnerabilities/ $ grep . *

l1tf:Mitigation: PTE Inversion meltdown:Mitigation: PTI

spec_store_bypass:Vulnerable

spectre_v1:Mitigation: __user pointer sanitization spectre_v2:Mitigation: Full generic retpoline

10 / 38

x86: QEMU’s default CPU models (b)

$ cd /sys/devices/system/cpu/vulnerabilities/ $ grep . *

On a guest running with qemu64

l1tf:Mitigation: PTE Inversion meltdown:Mitigation: PTI

spec_store_bypass:Vulnerable

spectre_v1:Mitigation: __user pointer sanitization spectre_v2:Mitigation: Full generic retpoline

10 / 38

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    77 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us