In
computing
Computing is any goal-oriented activity requiring, benefiting from, or creating computer, computing machinery. It includes the study and experimentation of algorithmic processes, and the development of both computer hardware, hardware and softw ...
, SPICE (the Simple Protocol for Independent Computing Environments) is a remote-
display system built for
virtual environments which allows users to view a computing
"desktop" environment – not only on its computer-server machine, but also from anywhere on the
Internet
The Internet (or internet) is the Global network, global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices. It is a internetworking, network of networks ...
– using a wide variety of
machine architectures.
Qumranet originally developed SPICE using a
closed-source codebase
In software development, a codebase (or code base) is a collection of source code used to build a particular software system, application, or software component. Typically, a codebase includes only human-written source code system files; thu ...
in 2007.
Red Hat, Inc acquired Qumranet in 2008, and in December 2009 released the code under an
open-source license
Open-source licenses are software licenses that allow content to be used, modified, and shared. They facilitate free and open-source software (FOSS) development. Intellectual property (IP) laws restrict the modification and sharing of creative ...
and made the protocol an open standard.
Security
A SPICE client connection to a remote desktop server consists of multiple
data channels, each of which is run over a separate
TCP or
UNIX
Unix (, ; trademarked as UNIX) is a family of multitasking, multi-user computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
socket connection. A data channel can be designated to operate in either clear-text, or
TLS modes, allowing the administrator to trade off the security level vs performance. The TLS mode provides
strong encryption of 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 an
RSA public/private
keypair and send its
public key to 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 the
SASL authentication protocol, thus enabling support for a wide range of admin configurable authentication mechanisms, in particular
Kerberos.
Implementations
While 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 defines the SPICE wire protocol formats. This is made available under the BSD license, and is portable across the
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
and
Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
platforms.
; spice
: The spice module provides the reference implementation for the server side of the SPICE protocol. The server is provided as a
dynamic library which can be linked to any application wishing to expose a SPICE server. ,
QEMU uses this to provide a SPICE interface for
virtual machine
In computing, a virtual machine (VM) is the virtualization or emulator, emulation of a computer system. Virtual machines are based on computer architectures and provide the functionality of a physical computer. Their implementations may involve ...
s. The spice codebase is available under the
LGPL
The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
v2+ license.
: A client part of the spice codebase named spicec was removed in December 2014.
; spice-gtk
: The spice-gtk module implements a SPICE client using the
GObject
The GLib Object System, or GObject, is a free software, free software library providing a portable object system and transparent cross-language interoperability. GObject is designed for use both directly in C (programming language), C programs ...
type system and the
GTK
GTK (formerly GIMP ToolKit and GTK+) is a free software cross-platform widget toolkit for creating graphical user interfaces (GUIs). It is licensed under the terms of the GNU Lesser General Public License, allowing both Free software, free and ...
widget toolkit. This comprises a low-level
library
A library is a collection of Book, books, and possibly other Document, materials and Media (communication), media, that is accessible for use by its members and members of allied institutions. Libraries provide physical (hard copies) or electron ...
, spice-client-glib, which implements the client protocol code, and a high-level set of
widgets which provide a graphical client capability using GTK. This is made available under the
LGPLv2+ license, and is portable across the Linux,
OS X and Windows platforms.
; spice-html5
: The spice-html5 module implements a SPICE client that uses
JavaScript
JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior.
Web browsers have ...
and is intended to run inside a web browser supporting
HTML5
HTML5 (Hypertext Markup Language 5) is a markup language used for structuring and presenting hypertext documents on the World Wide Web. It was the fifth and final major HTML version that is now a retired World Wide Web Consortium (W3C) recommend ...
. While it implements the SPICE protocol, it cannot talk directly to a regular SPICE server. It must connect to the server indirectly via
WebSocket proxy. This is made available under a combination of the
GPLv3+ and LGPLv3+ licenses.
Applications
The SPICE protocol originated to provide improved
remote desktop capabilities in a
fork of 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 regular
VGA card, albeit with degraded performance as compared to QXL.
; Xspice
: The
X.Org Server driver for the QXL
framebuffer device includes a
wrapper script,
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 for
VNC.
; oVirt
: SPICE is integrated into
oVirt private cloud management software, allowing users to connect to virtual machines through SPICE.
See also
*
Red Hat Virtualization
*
HP Remote Graphics Software
References
External links
*
SPICE protocol
{{DEFAULTSORT:Spice (Protocol)
Application layer protocols
Red Hat software
Remote desktop
Remote desktop protocols
Thin clients
Virtualization software for Linux