Simple Protocol for Independent Computing Environments
Incomputing,SPICE(theSimple Protocol for Independent Computing Environments) is a remote-displaysystem built forvirtual environmentswhich allows users to view a computing"desktop" environment– not only on its computer-server machine, but also from anywhere on theInternet– using a wide variety ofmachine architectures.
Original author(s) | Qumranet |
---|---|
Developer(s) | Red Hat |
Stable release | |
Written in | C,C++ |
Operating system | Linux,Windows,Android(Client) |
Type | Server, client |
License | GPL,LGPLandBSD |
Website | spice-space.org |
Qumranetoriginally developed SPICE using aclosed-sourcecodebasein 2007.Red Hat, Incacquired Qumranet in 2008, and in December 2009 released the code under anopen-source licenseand made the protocol an open standard.[4][5]
Security
editA SPICE client connection to a remote desktop server consists of multipledata channels,each of which is run over a separateTCPorUNIXsocket connection.A data channel can be designated to operate in either clear-text, orTLSmodes, allowing the administrator to trade off the security level vs performance. The TLS mode providesstrong encryptionof all traffic transmitted on the data channel.
In addition to encryption, the SPICE protocol allows for a choice of authentication schemes. The original SPICE protocol defined a ticket based authentication scheme using a shared secret. The server would generate anRSApublic/privatekeypairand send itspublic keyto the client. The client would encrypt the ticket (password) with the public key and send the result back to the server, which would decrypt and verify the ticket. The current SPICE protocol also allows for use of theSASLauthentication protocol, thus enabling support for a wide range of admin configurable authentication mechanisms, in particularKerberos.
Implementations
editWhile only one server implementation exists, several programmers have developed new implementations of the SPICE client-side since the open-sourcing of SPICE.
- spice-protocol
- The spice-protocol module[6]defines the SPICE wire protocol formats. This is made available under the BSD license, and is portable across theLinuxandWindowsplatforms.
- spice
- The spice module[7]provides the reference implementation for the server side of the SPICE protocol. The server is provided as adynamic librarywhich can be linked to any application wishing to expose a SPICE server. As of 2013[update],QEMUuses this to provide a SPICE interface forvirtual machines.The spice codebase is available under theLGPLv2+ license.
- A client part of the spice codebase named spicec was removed in December 2014.
- spice-gtk
- The spice-gtk module[8]implements a SPICE client using theGObjecttype system and theGTKwidget toolkit.This comprises a low-levellibrary,spice-client-glib, which implements the client protocol code, and a high-level set ofwidgetswhich provide a graphical client capability using GTK. This is made available under theLGPLv2+license, and is portable across the Linux,OS Xand Windows platforms.
- spice-html5
- The spice-html5 module[9]implements a SPICE client that usesJavaScriptand is intended to run inside a web browser supportingHTML5.While it implements the SPICE protocol, it cannot talk directly to a regular SPICE server. It must connect to the server indirectly viaWebSocketproxy.[10]This is made available under a combination of theGPLv3+and LGPLv3+ licenses.
Applications
editThe SPICE protocol originated to provide improvedremote desktopcapabilities in aforkof the KVM codebase.
- QEMU/KVM
- The QEMU maintainers merged support for providing SPICE remote desktop capabilities for all QEMU virtual machines in March 2010. The QEMU binary links to the spice-server library to provide this capability and implements the QXL paravirtualized framebuffer device to enable the guest OS to take advantage of the performance benefits the SPICE protocol offers. The guest OS may also use a regularVGA card,albeit with degraded performance as compared to QXL.[11]
- Xspice
- TheX.Org Serverdriver for the QXLframebufferdevice includes awrapperscript,[12]which makes it possible to launch a Xorg server whose display is exported via the SPICE protocol. This enables use of SPICE in a remote desktop environment, without requiring QEMU/KVM virtualization.
- virt-viewer
- The
virt-viewer
program uses the spice-gtk client library to connect to virtual machines using SPICE, as an alternative to its previous support forVNC. - oVirt
- SPICE is integrated intooVirtprivate cloudmanagement software, allowing users to connect to virtual machines through SPICE.
See also
editReferences
edit- ^"spice 0.14.4 release".gitlab.freedesktop.org.Retrieved2022-10-24.
- ^"spice 0.15.1 release".gitlab.freedesktop.org.Retrieved2022-10-24.
- ^"spice-gtk 0.41 release".gitlab.freedesktop.org.Retrieved2022-10-24.
- ^"Red Hat open-sources SPICE".Red Hat.9 December 2009.Retrieved2013-10-25.
- ^"Project website".spice-space.org.Retrieved2019-12-25.
- ^"spice-protocol GIT repository".cgit.freedesktop.org.Retrieved2013-10-25.
- ^"spice/spice".cgit.freedesktop.org.Retrieved2023-01-05.
- ^"spice-gtk GIT repository".cgit.freedesktop.org. 2013-10-10.Retrieved2013-10-25.
- ^"spice-html5 GIT repository".cgit.freedesktop.org.Retrieved2013-10-25.
- ^websockifyonGitHub
- ^"QEMU/KVM Virtual Machines".pve.proxmox.com.Retrieved2023-09-18.
- ^"XSpice README".cgit.freedesktop.org.Retrieved2013-10-25.