獨立計算環境簡單協議

計算機科學中獨立計算環境簡單協議Simple Protocol for Independent Computing Environments,簡稱SPICE)是一款為虛擬環境英語virtual environment打造的遠程顯示系統,支持諸多機器架構,旨在讓用戶查看計算虛擬環境的「桌面」環境——除了服務器實體機上查看外,還允許用戶從互聯網的每個角落進行連接。

SPICE
原作者Qumranet英語Qumranet
開發者Red Hat
當前版本
  • spice-protocol: 0.14.3 / 2020年10月1日,​4年前​(2020-10-01[1]
  • spice: 0.14.1 / 2018年8月22日,​6年前​(2018-08-22[2]
  • spice-gtk: 0.33 / 2017年7月31日,​7年前​(2017-07-31[3]
編程語言CC++
操作系統LinuxWindowsAndroid(客戶端)
類型服務端、客戶端
許可協議GPLLGPLBSD
網站spice-space.org

Qumranet英語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的線路協議英語Wire protocol格式。此模塊以BSD協議開源,可移植到Linux與Windows平台。
spice
spice模塊[7]提供了SPICE協議服務器端的參考實現。服務器端呈現為可鏈接至任意應用程序的動態鏈接庫形式向客戶端提供連接。截至2013年 (2013-Missing required parameter 1=month!)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英語oVirt私人雲端管理軟件,用戶可使用SPICE協議連接至虛擬機。

另請參閱

參考文獻

  1. ^ Lureau, Marc-André. ANNOUNCE spice-protocol 0.14.3 release. spice-devel (郵件列表). 2020-10-01 [2021-04-15]. (原始內容存檔於2021-04-17). 
  2. ^ Fergeau, Christophe. Announcing spice 0.14.1. spice-devel (郵件列表). 22 August 2018 [2019-02-15]. (原始內容存檔於2019-07-17). 
  3. ^ Lureau, Marc-André. ANNOUNCE: spice-gtk v0.34 released. spice-devel (郵件列表). 31 July 2017 [2019-02-15]. (原始內容存檔於2017-08-02). 
  4. ^ Red Hat open-sources SPICE. Redhat.com. [2013-10-25]. (原始內容存檔於2014-07-15). 
  5. ^ Project website. Spice-space.org. [2013-10-25]. (原始內容存檔於2021-02-25). 
  6. ^ spice-protocol GIT repository. Cgit.freedesktop.org. [2013-10-25]. (原始內容存檔於2013-10-29). 
  7. ^ http://cgit.freedesktop.org/spice/spice/頁面存檔備份,存於網際網路檔案館) spice GIT repository
  8. ^ spice-gtk GIT repository. Cgit.freedesktop.org. 2013-10-10 [2013-10-25]. (原始內容存檔於2019-10-31). 
  9. ^ spice-html5 GIT repository. Cgit.freedesktop.org. [2013-10-25]. (原始內容存檔於2015-08-05). 
  10. ^ https://github.com/kanaka/websockify頁面存檔備份,存於網際網路檔案館) WebSockify proxy server
  11. ^ XSpice README. Cgit.freedesktop.org. [2013-10-25]. (原始內容存檔於2019-09-28). 

外部連結