Desktop Virtualization with SPICE Gerd Hoffmann - - PowerPoint PPT Presentation

desktop virtualization with spice
SMART_READER_LITE
LIVE PREVIEW

Desktop Virtualization with SPICE Gerd Hoffmann - - PowerPoint PPT Presentation

Desktop Virtualization with SPICE Gerd Hoffmann <kraxel@redhat.com> Linux Kongress, Sep 23 th 2010 1 SPICE | Gerd Hoffmann What is SPICE Virtual Desktop Infrastructure. S imple P rotocol for I ndependent C omputing E nvironments.


slide-1
SLIDE 1

SPICE | Gerd Hoffmann 1

Desktop Virtualization with SPICE

Gerd Hoffmann <kraxel@redhat.com> Linux Kongress, Sep 23th 2010

slide-2
SLIDE 2

SPICE | Gerd Hoffmann 2

What is SPICE

  • Virtual Desktop Infrastructure.
  • Simple Protocol for Independent Computing

Environments.

  • Created by Qumranet.
  • freedesktop.org project since January '10.
slide-3
SLIDE 3

SPICE | Gerd Hoffmann 3

Network Protocol & Guest Devices

QEMU VM spice client QXL (cirrus) virtio-serial AC97 ES1370 Keyboard Mouse Tablet (nic) vmc Guest vdagent qxl driver standard guest drivers (printer) user's machine display cursor inputs record playback (tunnel) spice server main

slide-4
SLIDE 4

SPICE | Gerd Hoffmann 4

VM channel device

  • Communication between guest and spice client.
  • Mouse events.
  • Display information.
  • (Cut+Paste).
  • Uses virtio-serial port now days
  • Used to be a PCI device.
slide-5
SLIDE 5

SPICE | Gerd Hoffmann 5

QXL Device

  • Paravirtual graphics

device.

  • Two QXL device

revisions

  • Rev 1 – spice 0.4
  • Rev 2 – spice 0.6

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-6
SLIDE 6

SPICE | Gerd Hoffmann 6

QXL Rendering

QEMU VM Guest spice client QXL spice server display cursor lfb

renderer renderer

vnc / sdl

slide-7
SLIDE 7

SPICE | Gerd Hoffmann 7

Migration

Source Host QEMU VM Guest QXL spice server Target Host QEMU VM Guest QXL spice server VM migration spice client client migration

slide-8
SLIDE 8

SPICE | Gerd Hoffmann 8

Recent Changes (0.4 -> 0.6)

  • Simplify build.
  • Merge pixman changes upstream.
  • Ditch dependency on patched cairo.
  • Ditch dependency on ffmpeg.
  • New libspice-server API.
  • Fixup data structures (next slide).
  • QXL/Display: Surfaces, WAN compression.
  • Network protocol optimizations.
slide-9
SLIDE 9

SPICE | Gerd Hoffmann 9

Data structure fixups

Guest: QXLRect qxl parser spice server: SpiceRect network marshaller wire: (unnamed) network demarshaller spice client: SpiceRect Guest: Rect spice server: Rect wire: Rect spice client: Rect spice 0.4.x spice 0.6.x code generated with python. Sanity checks are done here

slide-10
SLIDE 10

SPICE | Gerd Hoffmann 10

TODO List

  • Merge into upstream qemu.
  • plan: early in 0.14 devel cycle.
  • Create libspice-client, gtk widget.
  • at alpha stage now.
  • Portability fixes.
  • More cleanups.
  • Tunnel & Printing.
  • USB forwarding.
slide-11
SLIDE 11

SPICE | Gerd Hoffmann 11

Using spice: getting started

  • qemu -spice port=1234,disable-ticketing -vga qxl
  • usbdevice tablet
  • spicec -host localhost -p 1234
  • linux guest:
  • yum install xorg-x11-drv-qxl
  • http://cgit.freedesktop.org/xorg/driver/xf86-video-qxl
  • windows guest:
  • spice-space.org has qxl drivers
slide-12
SLIDE 12

SPICE | Gerd Hoffmann 12

Using spice: with guest agent

  • qemu:
  • add “-device virtio-serial -device spicevmc”
  • remove “-usbdevice tablet”.
  • linux guest:
  • http://cgit.freedesktop.org/~jwrdegoede/vdagent-linux/
  • windows guest:
  • install virtio-serial driver from spice-space.org.
  • fetch+unpack vdagent zip, run “vdservice.exe install”.
slide-13
SLIDE 13

SPICE | Gerd Hoffmann 13

Ressources

  • www.spice-space.org
  • Wiki, docs & downloads
  • cgit.freedesktop.org
  • spice git repositories.
  • also qemu with spice patches (branches spice.v$nr).
  • spice-devel@lists.freedesktop.org
  • developer mailing list
  • Packages: Fedora 14.