獨立計算環境簡單協定

電腦科學中獨立計算環境簡單協定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). 

外部連結