SPICE and desktop virtualization Gerd Hoffmann - - PowerPoint PPT Presentation

spice and desktop virtualization
SMART_READER_LITE
LIVE PREVIEW

SPICE and desktop virtualization Gerd Hoffmann - - PowerPoint PPT Presentation

SPICE and desktop virtualization Gerd Hoffmann <kraxel@redhat.com> Red Hat LinuxTag, May 11th 1 SPICE and desktop virtualization | Gerd Hoffmann What is SPICE S imple P rotocol for I ndependent C omputing E nvironments Virtual


slide-1
SLIDE 1

SPICE and desktop virtualization | Gerd Hoffmann 1

SPICE and desktop virtualization

Gerd Hoffmann <kraxel@redhat.com> Red Hat LinuxTag, May 11th

slide-2
SLIDE 2

SPICE and desktop virtualization | Gerd Hoffmann 2

What is SPICE

  • Simple Protocol for Independent Computing

Environments

  • Virtual desktop infrastructure
  • SPICE network protocol.
  • Virtual hardware (QXL).
  • Server and client implementations.
slide-3
SLIDE 3

SPICE and desktop virtualization | Gerd Hoffmann 3

SPICE history

  • Created by Qumranet.
  • Startup company which created KVM.
  • Acquired by Red Hat.
  • freedesktop.org project since January 2010.
  • SPICE support merged into qemu during 0.14

development cycle.

slide-4
SLIDE 4

SPICE and desktop virtualization | Gerd Hoffmann 4

Server and desktop virtualization

  • Server virtualization is commonplace these days, every

hoster has offers.

  • Virtual machine.
  • CPU & memory.
  • Storage.
  • Network.
  • Administrator access.
  • Text mode (ssh, serial line).
  • Low end graphics (vnc).
  • For desktop virtualization you need more ...
slide-5
SLIDE 5

SPICE and desktop virtualization | Gerd Hoffmann 5

Wanted: better graphics

  • Powerful graphics
  • ideally 3D which is good enough for desktop effects.
  • gnome shell
  • windows aero
  • Multihead support.
slide-6
SLIDE 6

SPICE and desktop virtualization | Gerd Hoffmann 6

SPICE: QXL graphics adapter

  • Virtual PCI Device.
  • Two variants, with and

without VGA compatibility, for multihead.

  • 3D support not yet

available.

VGA framebuffer (8M) cmd rings, control fields (8k) bar 0 ram rendering commands, command data bar 1 vram surfaces:

  • ffscreen pixmaps

(textures) bar 2 rom qxl device info (8k) bar 3 io initialization + reset

slide-7
SLIDE 7

SPICE and desktop virtualization | Gerd Hoffmann 7

SPICE: QXL rendering

QEMU VM Guest spice client QXL spice server display cursor lfb

renderer renderer

vnc / sdl

slide-8
SLIDE 8

SPICE and desktop virtualization | Gerd Hoffmann 8

Wanted: multimedia

slide-9
SLIDE 9

SPICE and desktop virtualization | Gerd Hoffmann 9

SPICE: sound + video

  • Sound forwarding.
  • Video stream support.
  • Recognized by screen update patterns.
  • Time stamps for synchronization.
slide-10
SLIDE 10

SPICE and desktop virtualization | Gerd Hoffmann 10

QEMU: audio devices

  • Intel HDA support (merged in 0.14).
  • Fix Win7 64bit sound issue.
  • Experimental USB audio bits (not merged).
slide-11
SLIDE 11

SPICE and desktop virtualization | Gerd Hoffmann 11

Wanted: Desktop Integration.

  • Resize guest display.
  • Cut+paste.
  • Needs guest cooperation.
slide-12
SLIDE 12

SPICE and desktop virtualization | Gerd Hoffmann 12

SPICE: vm channel & guest agent

  • Channel between guest and spice client.
  • Nowdays a virtio-serial port.
  • Used to be a PCI device.
  • Provides additional features when the agent is installed

and active in the guest.

  • Guest Display configuration (including multihead).
  • Cut+paste support.
  • Absolute mouse events without USB tablet.
slide-13
SLIDE 13

SPICE and desktop virtualization | Gerd Hoffmann 13

Wanted: USB support

slide-14
SLIDE 14

SPICE and desktop virtualization | Gerd Hoffmann 14

SPICE: USB forwarding

  • Remote USB protocol (currently in development).
  • Will also be usable without SPICE.
slide-15
SLIDE 15

SPICE and desktop virtualization | Gerd Hoffmann 15

QEMU: USB needs some love

  • Add physical port handling (started in 0.14).
  • savevm / migration support (started in 0.14).
  • Remote wake-up support (merged in 0.14).
  • Fix CPU burning.
  • Needs guest help.
  • Get ready for USB 2.0 and 3.0 (started in 0.14).
  • Fix, improve and cleanup the USB subsystem.
  • Finally merge EHCI support.
  • Improve isochronous xfers support (started in master).
slide-16
SLIDE 16

SPICE and desktop virtualization | Gerd Hoffmann 16

Wanted: printing

  • Print to the printer next to you, not the one in the

server room or data center.

slide-17
SLIDE 17

SPICE and desktop virtualization | Gerd Hoffmann 17

SPICE: network tunneling

  • Allow guests to access network ressources (i.e.

printers) in the client network.

  • Experimental, off by default.
  • Configuration & Security issues.
  • Need to check out other options.
  • USB Printer?
  • Cloud printing?
slide-18
SLIDE 18

SPICE and desktop virtualization | Gerd Hoffmann 18

Big picture: Network protocol & Guest devices

QEMU VM spice client QXL (cirrus) virtio-serial ES1370 AC97 HDA Keyboard Mouse Tablet USB Devices vmc Guest vdagent qxl driver standard guest drivers user's machine display cursor inputs record playback smartcard usb forward spice server main

slide-19
SLIDE 19

SPICE and desktop virtualization | Gerd Hoffmann 19

Integrate SPICE

  • New spice-gtk client project.
  • libraries with glib objects and gtk widgets.
  • gtk-based client application “spicy”.
  • virt-manager supports spice (0.8.7+).
  • vinagre supports spice (3.0).
slide-20
SLIDE 20

SPICE and desktop virtualization | Gerd Hoffmann 20

Getting started

  • Easy way: Fedora 15 & virt-manager.
  • Starting qemu + client manually:
  • qemu command line:

qemu -vga qxl -usbdevice tablet \

  • spice port=1234,disable-ticketing
  • classic spice client command line:

spicec -h localhost -p 1234

  • spicy: Just start it, comes up with a dialog.

Command line options work too.

slide-21
SLIDE 21

SPICE and desktop virtualization | Gerd Hoffmann 21

Enable TLS, server side

  • qemu -readconfig spice.cfg

[spice] port = "5920" # disable-ticketing = "on" password = "secret" tls-port = "5921" x509-cacert-file = "/home/kraxel/mini-ca/data/ca.crt" x509-cert-file = "/home/kraxel/mini-ca/rincewind.crt" x509-key-file = "/home/kraxel/mini-ca/rincewind.key" tls-channel = "main" tls-channel = "inputs" plaintext-channel = "display"

slide-22
SLIDE 22

SPICE and desktop virtualization | Gerd Hoffmann 22

Enable TLS, client side

  • spicy -h rincewind.home.kraxel.org \
  • p 5920 -s 5921 -w secret \
  • -ca-file /home/kraxel/mini-ca/data/ca.crt
  • CA certificate can also be copyed / symlinked to

$HOME/.spicec/spice_truststore.pem

slide-23
SLIDE 23

SPICE and desktop virtualization | Gerd Hoffmann 23

Enable agent, qemu config

  • qemu -readconfig vmchannel.cfg

[chardev "vmchannel"] backend = "spicevmc" name = "vdagent" [device] driver = "virtio-serial" [device] driver = "virtserialport" name = "com.redhat.spice.0" chardev = "vmchannel"

slide-24
SLIDE 24

SPICE and desktop virtualization | Gerd Hoffmann 24

Enable agent, guest setup

  • Windows
  • Fetch vdagent.zip from spice-space.org, unpack

somewhere.

  • Run vdservice install
  • Fedora 14+15, RHEL 6.1
  • yum install spice-vdagent
  • Other Linux guests:
  • Get the bits from

http://cgit.freedesktop.org/spice/linux/vd_agent/

slide-25
SLIDE 25

SPICE and desktop virtualization | Gerd Hoffmann 25

Ressources

  • http://www.kraxel.org/slides/2011-linuxtag-spice.pdf
  • www.spice-space.org
  • Wiki, docs, downloads.
  • spice-devel@lists.freedesktop.org
  • cgit.freedesktop.org
  • Most git repositories are in the spice section.
  • The X11 qxl driver is in the x.org drivers section.
  • http://gitorious.org/spice-gtk