介紹
SPICE (Simple Protocol for Independent Computing Environment) 是Red Hat收購Qumranet後獲得
虛擬技術。SPICE能用於在伺服器和遠程計算機如桌面和
瘦客戶端設備上部署
虛擬桌面。它類似於其它用於
遠程桌面管理的渲染協定,如微軟的Remote Desktop Protocol或Citrix的Independent Computing Architecture。它支持Windows XP、Windows 7和Red Hat Enterprise Linux等
虛擬機實例。大部分SPICE代碼是採用GNU GPLv2許可證發布,部分代碼是採用LGPL許可證。
發展歷史
SPICE是在1975年由
加利福尼亞大學伯克萊分校的Donald Pederson在電子研究實驗室首先建立的。第一版和第二版都是用
Fortran語言編寫的,但是從第三版開始用
C語言編寫。以一"Computer Analysis of Nonlinear Circuits, Excluding Radiation"名為“CANCER”的電路仿真程式為藍本,發展出幾乎被全世界公認為電路仿真標準的SPICE原始雛型程式。
SPICE有好幾種版本,成功的商業版本主要有
SPECTRE(由最初的SPICE作者之一Ken Kundert和Jacob White開始最初的框架)和
HSPICE(最初由Meta-Software開發,現屬於
Synopsys)、Eldo(最初由Anacad公司開發,現屬於
Mentor Graphics)等。其後由於電路設計規模的級數級增長,舊版本的SPICE的仿真速度遠遠不能滿足需要,並且對電路規模大小也有限制,業界發展了快速SPICE。
Silvaco公司的提供的Smartspice, SmartSpice提供最高的性能和精度,用於設計複雜的高精度模擬電路、模擬混合信號電路、分析關鍵網路,特性表征單元庫等等。SmartSpice兼容於流行的模擬設計流程和foundry提供的器件模型。
在市面上所能看到的許多SPICE同類軟體:如OrCADPSpice(OrCAD)、HSPICE(Meta-Software;現屬於Synopsys)、IS-SPICE(intusoft)、IG-SPICE(A. B.Associates)、I-SPICE(NCSS timesharing)…等,均是以SPICE2系列為基礎再加改進而成的商業化產品。
成功的快速SPICE商業版本主要有HSIM(最初由NASSADA公司開發,NASSDA公司被SYNOPSYS公司購入), NANOSIM(SYNOPSYS,但有電路規模大小的限制,對敏感的模擬電路也有精度的缺陷,在數字電路仿真方面很成功)和ADiT(Evercad,2006年1月被Mentor Graphics併購)、ULTRASIM(CADENCE公司的快速SPICE工具,屬於最新的第三代電路仿真工具)等。這些快速SPICE的主要特點是以犧牲準確性換取速度的大幅提高,因此他們的共同問題是如何在快速的同時保持準確性。
其中最廣為各級學校電子電機相關科系所使用的,就非OrCAD PSpice莫屬了。
安全
與遠程桌面伺服器的SPICE客戶端連線由多個數據通道組成,每個通道都通過單獨的TCP或UNIX套接字連線運行。可以指定數據通道以明文或TLS模式運行,允許管理員權衡安全級別與性能。 TLS模式為數據信道上傳輸的所有流量提供強加密。
除加密外,SPICE協定還允許選擇身份驗證方案。原始SPICE協定使用共享密鑰定義了基於票證的身份驗證方案。伺服器將生成RSA公鑰/私鑰對並將其公鑰傳送給客戶端。客戶端將使用公鑰加密票證(密碼)並將結果傳送回伺服器,伺服器將解密並驗證票證。當前的SPICE協定還允許使用SASL身份驗證協定,從而支持各種管理員可配置的身份驗證機制,特別是Kerberos。
實現
雖然只存在一個伺服器實現,但自SPICE開源以來,已有多個程式設計師開發了SPICE客戶端的新實現。
spice協定
spice-protocol模組定義了SPICE有線協定格式。這是在BSD許可下提供的,可以在Linux和Windows平台上移植。
spice
spice模組為SPICE協定的伺服器端提供參考實現。伺服器作為動態庫提供,可以連結到任何希望公開SPICE伺服器的應用程式。截至2013年,QEMU使用它為虛擬機提供SPICE接口。 spice代碼庫在LGPL v2 +許可下可用。
2014年12月刪除了名為spicec的spice代碼庫的客戶端部分。
spiceGTK
spice-gtk模組使用GObject類型系統和GTK小部件工具包實現SPICE客戶端。這包括一個低級庫,spice-client-glib,它實現了客戶端協定代碼,以及一組高級小部件,它們使用GTK提供圖形客戶端功能。這是在LGPLv2 +許可下提供的,可以在Linux,OS X和Windows平台上移植。
spiceHTML5
spice-html5模組實現了一個使用JavaScript的SPICE客戶端,旨在在支持HTML5的Web瀏覽器中運行。雖然它實現了SPICE協定,但它無法直接與常規SPICE伺服器通信。它必須通過WebSocket代理間接連線到伺服器。這是在GPLv3 +和LGPLv3 +許可證的組合下提供的。
套用
SPICE協定的起源是在KVM代碼庫的分支中提供改進的遠程桌面功能。
QEMU / KVM
QEMU維護人員在2010年3月合併了對所有QEMU虛擬機提供SPICE遠程桌面功能的支持.QEMU二進制檔案連結到spice-server庫以提供此功能並實現QXL半虛擬化幀緩衝設備以使客戶作業系統能夠利用SPICE協定提供的性能優勢。客戶作業系統也可以使用普通的VGA卡,雖然與QXL相比性能會下降。
XSPICE
QXL幀緩衝設備的X.Org Server驅動程式包含一個包裝腳本[11],可以啟動Xorg伺服器,其顯示通過SPICE協定導出。這樣可以在遠程桌面環境中使用SPICE,而無需QEMU / KVM虛擬化。
VIRT-viewe
virt-viewer程式使用spice-gtk客戶端庫使用SPICE連線到虛擬機,作為其先前對VNC的支持的替代方案。
oVirt
SPICE集成到oVirt私有雲管理軟體中,允許用戶通過SPICE連線到虛擬機。