独立计算环境简单协议
原作者 | Qumranet |
---|---|
开发者 | Red Hat |
当前版本 | |
编程语言 | C、C++ |
操作系统 | Linux、Windows、Android(客户端) |
类型 | 服务端、客户端 |
许可协议 | GPL、LGPL及BSD |
网站 | spice-space.org |
互联网协议套组 |
---|
应用层 |
传输层 |
网络层 |
链接层 |
在电脑科学中,独立计算环境简单协议(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年[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协议连接至虚拟机。
另请参阅
参考文献
- ^ Lureau, Marc-André. ANNOUNCE spice-protocol 0.14.3 release. spice-devel (邮件列表). 2020-10-01 [2021-04-15]. (原始内容存档于2021-04-17).
- ^ Fergeau, Christophe. Announcing spice 0.14.1. spice-devel (邮件列表). 22 August 2018 [2019-02-15]. (原始内容存档于2019-07-17).
- ^ Lureau, Marc-André. ANNOUNCE: spice-gtk v0.34 released. spice-devel (邮件列表). 31 July 2017 [2019-02-15]. (原始内容存档于2017-08-02).
- ^ Red Hat open-sources SPICE. Redhat.com. [2013-10-25]. (原始内容存档于2014-07-15).
- ^ Project website. Spice-space.org. [2013-10-25]. (原始内容存档于2021-02-25).
- ^ spice-protocol GIT repository. Cgit.freedesktop.org. [2013-10-25]. (原始内容存档于2013-10-29).
- ^ http://cgit.freedesktop.org/spice/spice/ (页面存档备份,存于互联网档案馆) spice GIT repository
- ^ spice-gtk GIT repository. Cgit.freedesktop.org. 2013-10-10 [2013-10-25]. (原始内容存档于2019-10-31).
- ^ spice-html5 GIT repository. Cgit.freedesktop.org. [2013-10-25]. (原始内容存档于2015-08-05).
- ^ https://github.com/kanaka/websockify (页面存档备份,存于互联网档案馆) WebSockify proxy server
- ^ XSpice README. Cgit.freedesktop.org. [2013-10-25]. (原始内容存档于2019-09-28).
外部链接
- 官方网站
- 独立计算环境简单协议 (页面存档备份,存于互联网档案馆)