此條目介紹的是Linux下的开源虚拟远程桌面传送协议。关于集成电路通用模拟程序,请见「
集成电路通用模拟程序」。
在计算机科学中,独立计算环境简单协议(Simple Protocol for Independent Computing Environments,简称SPICE)是一款为虚拟环境打造的远程显示系统,支持诸多机器架构,旨在让用户查看计算虚拟环境的“桌面”环境——除了服务器实体机上查看外,还允许用户从互联网的每个角落进行连接。
Qumranet起初于2007年使用闭源代码库开发。在2008年紅帽公司收购Qumranet之后,红帽公司在2009年12月以開源授權公布了SPICE的源代码,使得此协议成为一项开放标准。[4][5]
SPICE客户端与远程桌面服务器的连接含有多个数据通道,每个均运行在不同的TCP/UNIX套接字连接上。协议的数据通道既可以是明文,也可以是TLS模式,因此管理员可以在安全性与性能之间做出其自己的判断。TLS模式对所有在信道上传递的流量进行了强度较高的加密。
除了加密之外,SPICE协议还支持多种认证方案。原先的SPICE提供了基于凭证的共享密钥认证方案。在此过程中,服务器将生成RSA公钥/密钥对并发送其公钥至客户端。客户端将使用公钥加密凭证(即密码)并发送结果回服务器以待解密与验证凭证。现在的SPICE协议还支持使用SASL认证协议,支持多个可配置的认证方案,特别是Kerberos。
虽然SPICE的服务端仅有一种实现,但开发者在SPICE开源之初即研发了多种全新的客户端实现方式。
- spice-protocol
- spice-protocol模块[6]定义了SPICE的线路协议格式。此模块以BSD协议开源,可移植到Linux与Windows平台。
- spice
- spice模块[7]提供了SPICE协议服务器端的参考实现。服务器端呈现为可链接至任意应用程序的动态链接库形式向客户端提供连接。截至2013年 (2013-Missing required parameter 1=month!)[update],QEMU使用此模块来提供虚拟机的SPICE接口。spice代码库以LGPL第二版及更高版本协议开源。
- 客户端侧的spice代码库(即spicec)于2014年12月移除。
- spice-gtk
- spice-gtk模块[8]使用GObject类型系统及GTK部件工具箱实现了SPICE客户端。其包含低级函数库、实现客户端协议代码的spice-client-glib和使用GTK以提供图形客户端能力的高级别挂件。此模块以GNU宽通用公共许可证第二版及更高版本协议开源,且可移植至Linux、MacOS和Windows平台。
- spice-html5
- spice-html5模块[9]使用JavaScript实现了SPICE客户端,运行于HTML5的网页浏览器中。虽然此模块实现了SPICE协议,但其却无法与普通的SPICE服务器直接沟通。其必须先通过WebSocket代理间接连接至服务器。[10]此软件的部分以GNU通用公共许可协议第三版及更高版本与GNU宽通用公共许可证第三版及更高版本协议开源。
SPICE起初以KVM代码库的派生(Fork)为用户提供更加完善的远程桌面能力。
- QEMU/KVM
- QEMU维护者于2010年3月为所有QEMU虚拟机加入了SPICE远程桌面的代码。QEMU二进制文件链接到spice-server库来架设远程桌面并实现QXL超虚拟化帧缓冲器设备使客户机操作系统利用SPICE协议的性能优势。客户机操作系统也可使用VGA显卡,但相对QXL而言会造成性能降低。
- Xspice
- QXL帧缓冲器的X.Org Server驱动程序内置了可启动Xorg server的包装器脚本[11]并通过SPICE协议导出。这可在无需QEMU/KVM虚拟化的情况下在远程桌面环境中使用SPICE协议。
- virt-viewer
virt-viewer
程序使用spice-gtk客户端函数库基于SPICE协议连接至虚拟机,成为VNC的备选之一。
- oVirt
- SPICE已整合进oVirt私人雲端管理软件,用户可使用SPICE协议连接至虚拟机。