劉子杰, 文成玉, 薛 霽
(成都信息工程大學 通信工程學院,成都 610225)
隨著計算機技術的飛速發(fā)展,傳統(tǒng)的PC桌面面臨著諸多急需解決的問題. 比如,計算機的升級換代和管理維護方面,都需要投入大量的資金; 普通辦公人員只是日常業(yè)務辦公,會導致計算機CPU資源浪費嚴重;由于系統(tǒng)安全性較差,還存在容易受到網絡或其他潛在的病毒攻擊的風險. 因此,在步入云時代的今天,桌面虛擬化[1]通過將虛擬化技術和云計算技術相結合,以及將用戶的終端設備與桌面環(huán)境解耦合,所有用戶的桌面環(huán)境均存放在服務器端,進行統(tǒng)一管理. 用戶使用終端設備時,通過輸入用戶名和密碼等登錄信息實現隨時隨地的接入到虛擬主機上的個人桌面[2]. 虛擬桌面很大程度上降低了運維和管理成本,系統(tǒng)的集中化管理,有效的提高了數據安全性和資源利用率.
桌面?zhèn)鬏攨f(xié)議用于服務器和用戶終端之間進行通信連接,主要完成從服務器到用戶終端的圖像、音頻、視頻的傳輸以及從用戶終端到服務器輸入信息的傳輸,包括鼠標、鍵盤、外設等輸入信息[3]. 旨在為用戶提供一個與本地辦公無差異的桌面辦公環(huán)境. 桌面?zhèn)鬏攨f(xié)議原理如圖1所示.

圖1 桌面?zhèn)鬏攨f(xié)議原理
桌面虛擬化技術的核心是桌面?zhèn)鬏攨f(xié)議[4],當前主流的虛擬桌面廠商已經有了各自的桌面?zhèn)鬏攨f(xié)議,主要包括Citrix公司的 ICA 協(xié)議、VMware 公司的 PCoIP協(xié)議、Microsoft 公司的 RDP 協(xié)議以及 Redhat 公司KVM 的開源 SPICE 協(xié)議,各主流傳輸協(xié)議的對比分析結果如表1所示.

表1 主流虛擬桌面?zhèn)鬏攨f(xié)議比較
從表中可以看出,這些傳輸協(xié)議都存在一定的不足,不能完全適用于所有的場景. 傳輸帶寬要求的高低直接影響了遠程服務訪問的流暢性.
ICA采用具有極高處理性能和數據壓縮比的壓縮算法,降低了對網絡帶寬的需求[5],但是它在圖像和視頻的畫質方面仍不是很流暢. PCoIP 協(xié)議采用的是分層漸進的方式在用戶終端顯示桌面內容,首先傳送給用戶一個完整但是比較模糊的圖像,在此基礎上逐步精化,提升用戶的視覺體驗,但是PCoIP 對于用戶語音上傳的支持以及視頻播放尚存缺陷. RDP協(xié)議缺乏跨平臺性,綜合體驗效果不如另外三個. SPICE協(xié)議對帶寬的要求適中,是所有協(xié)議中綜合體驗效果做好的.
SPICE協(xié)議能夠直接與服務器上的虛擬機進行通信,是一項高性能、動態(tài)的自適應遠程網絡協(xié)議,能夠自適應地感知用戶端設備的處理能力,然后在用戶的終端上進行圖像渲染操作,為終端用戶帶來接近于本地桌面的體驗.
在虛擬桌面?zhèn)鬏攬D片中,圖形數據的處理是至關重要的,是影響用戶體驗的關鍵因素. 用戶終端需要從服務器獲得大量的數據,所以需要較大的帶寬,特別是傳輸視頻的時候,盡管目前的桌面?zhèn)鬏攨f(xié)議都采用了各種壓縮技術,但是減少的數據量是有限的. 另外,圖形處理本身就消耗大量計算資源,當多個桌面同時在服務端進行圖形渲染時,服務器將會有非常大的負擔.
傳輸協(xié)議對圖形數據的處理方式主要有兩種:一個是基于矢量數據的傳輸,另一個是基于位圖數據的傳輸[6]. 采用不同的數據格式,對協(xié)議的實現和性能有多方面影響. 采用基于矢量數據的處理方式,所需傳輸的數據量較少,相應的所需帶寬也就低一些,而且服務器沒有處理圖形的負擔,但是客戶端需要有強大的處理能力; 采用基于位圖數據的處理方式則需要較大的帶寬,服務器要處理圖形數據有很大的運行負擔,但是對于客戶端沒有要求.
ICA 協(xié)議采用的是基于矢量數據的處理方式,將數據傳到客戶端后進行渲染顯示,RDP 協(xié)議和 PCoIP協(xié)議則采用了基于位圖的處理方式,在服務器端對圖形數據進行渲染,生成位圖數據后再進行壓縮和編碼處理,最終傳輸到客戶端的是可以直接顯示的位圖數據. SPICE協(xié)議則是同時采用了以上兩種圖形處理方式,并能夠根據終端的處理能力選擇其中任意一種方式.
壓縮技術的好壞直接影響了終端用戶的使用體驗,緩存技術能夠有效地減少對冗余圖像數據的傳輸量.SPICE桌面虛擬化框架采用以服務器端為主導的客戶端圖像緩存技術,對多種數據進行緩存,比如像素數據、調色板和光標數據. 用戶終端緩存保存經常使用的顯示元素,如果當前需要顯示的元素在緩存中就可以直接從緩存中獲得,而不必重復向服務器端發(fā)送請求.
SPICE運用的兩個專有圖像壓縮算法分別是Quic和GLZ,不同的圖像數據使用不同的壓縮算法,人工拍攝的圖像使用Quic算法; 操作系統(tǒng)合成的圖像使用GLZ算法. 對于圖像壓縮算法的選擇,可以在服務端初始化時進行選擇,或者在運行時進行調整.SPICE根據圖像數據的特性,在Quic算法和GLZ 算法之間進行選擇.
SPICE協(xié)議[7]是一種自適應的虛擬桌面?zhèn)鬏攨f(xié)議,具有與其他遠程顯示協(xié)議與眾不同的設計架構. 圖2是SICE桌面虛擬化架構,主要由SPICE客戶端、SPICE服務端以及相應的QXL設備、Guest端QXL驅動等構成[8,9].

圖2 SPICE桌面虛擬化框架
SPICE客戶端是部署于終端設備上的組件,負責顯示每個虛擬桌面,終端可以是瘦客戶機或專用的PC;SPICE服務端以動態(tài)連接庫的形式與KVM虛擬機整合,通過SPICE協(xié)議與客戶端進行通信; QXL驅動部署在服務器側,提供虛擬桌面服務的虛擬機中,用于接收操作系統(tǒng)和應用程序的圖形命令,并將其轉換為KVM的QXL圖形設備命令; QXL設備部署在KVM服務器虛擬化的Hypervisor中,用于處理各虛擬機發(fā)來的圖形圖像操作.
SPICE協(xié)議通過各種不同的channel實現客戶端和服務端之間的通信[10],利用不同的通道傳輸不同的內容,每一種通道用來專門負責一種類型的數據傳輸與通信,每個通道中的內容都可以通過相應的圖形命令數據流或代理命令數據流傳輸. SPICE協(xié)議提供了和真實PC相同的用戶體驗,通過SPICE可以直接在虛擬機里播放視頻和音頻等.
為了實現桌面虛擬化,首先需要搭建一個可靠的云平臺,當前主流的云計算平臺主要有Eucalyptus、OpenNebula、Openstack和Cloudstack等. 這些產品各有各的優(yōu)勢,通過對它們性能和應用范圍的分析,選用綜合性能良好的Openstack為虛擬桌面的服務器端提供基礎服務.
Openstack平臺能夠統(tǒng)一管理與整合虛擬機的相關資源. Openstack平臺主要由Nova、Swift、Glance、Keystone、Horizon 5個組件構成[10],各個組件間的調用關系如圖3,其中Compute對應Nova,Object對應Swift,Image對應Glance,Idenity對應Kestone,Dashboard對應Horizon.

圖3 Openstack組件間關系
整個Openstack平臺架構主要由控制節(jié)點、計算節(jié)點和網絡節(jié)點組成. 控制節(jié)點負責對其余節(jié)點的控制,包含虛擬機建立,遷移,網絡控制、調度管理、API服務、存儲管理、數據庫管理、身份管理和鏡像管理等; 計算節(jié)點負責虛擬機運行; 網絡節(jié)點負責網絡之間的通信.
虛擬桌面平臺的整個系統(tǒng)采用Openstack、KVM和SPICE協(xié)議相結合來實現. 企業(yè)中的Openstack平臺一般是以一臺主機作為控制節(jié)點,其余的全部作為計算節(jié)點,在計算節(jié)點上配置出若干個虛擬機,以滿足整個企業(yè)的需求.
為了避免數據交換過程中造成擁塞,保證傳輸過程的流暢性,所有的服務器都采用三網卡機型. 以1個控制節(jié)點和1個計算節(jié)點為例,3個網卡之間的網絡分為內網和外網(公共網絡)兩部分,其中內網又分為管理網絡和用于存儲的網絡,所以就是1個網絡1個網卡,分為3個網段. 外網網段指的是能直接訪問到互聯(lián)網的網段,這里的外網指的是Openstack網絡系統(tǒng)之外的網絡,它的網段是192.168.2.0/24; 內網網段指的是Openstack系統(tǒng)內各服務器之間互聯(lián)的頂層交換機所劃的網段,此網段無需出口,管理網絡用于Openstack內部各個組件之間的通信,比如API之間、Keystone認證、監(jiān)控等,其網段設置為192.168.1.0/24;存儲網絡顧名思義就是專門給存儲用的私網,這個網絡的流量是很大的,給它設置的網段是192.168.0.0/24.
采用腳本安裝部署的方式安裝云平臺,首先在所有節(jié)點上安裝Openstack包,在控制節(jié)點上安裝SQL數據庫、消息隊列、Memcached,認證服務、鏡像服務、計算服務、網絡服務和Dashboard參照官網依次安裝. 在計算節(jié)點上安裝計算服務和網絡服務.Opensatck平臺搭建成功.
Openstack平臺中默認的是VNC議,替換成本文要使用的SPICE協(xié)議. 首先安裝SPICE,然后在計算節(jié)點和控制節(jié)點上修改配置文件:/etc/nova/nova.conf,注釋掉localrc文件里默認的VNC協(xié)議的配置,最后重啟服務. 確保在Control node上看到6082端口在監(jiān)聽,虛擬機重啟才能使用SPICE協(xié)議. SPICE Driver存在于Openstack系統(tǒng)的控制節(jié)點中,SPICE Device存在于計算節(jié)點中.
為了對SPICE有一個全面的了解,對SPICE的性能進行了測試. 對虛擬桌面性能影響最大的是網絡負載,不同的負載對網絡傳輸有不同的影響. 本測試對音頻場景和視頻場景的帶寬進行了實時監(jiān)控.

圖4 音頻帶寬圖

圖5 視頻帶寬圖
圖4和圖5記錄了一分鐘內音頻和視頻兩種場景下的帶寬占用情況,當帶寬受到限制時,音頻和視頻播放可能會出現丟幀,播放不流暢等現象; 當帶寬嚴重不足時,用戶甚至無法擁有正常體驗. 但是基本的桌面辦公不會受到影響.
上圖反映出當前現有環(huán)境搭建的一臺虛擬機實現的虛擬桌面的效果,如果想要大規(guī)模的應用,可以短時間內在服務器端配置出更多的虛擬機,實現更多的虛擬桌面. 臨汾氣象局機房搭建的虛擬桌面平臺配置了大量的虛擬機,個人能在客戶端隨時隨地的登錄虛擬桌面,讓企業(yè)能夠集中化管理操作系統(tǒng),出現問題時管理員也能在后臺統(tǒng)一進行處理. 很大程度上降低了企業(yè)的運營成本.
本文首先介紹了桌面?zhèn)鬏攨f(xié)議以及影響虛擬桌面性能的因素,然后分析了虛擬桌面中應用到的Openstack平臺和SPICE框架,最后通過測試結果證明虛擬桌面在音頻和視頻方面較傳統(tǒng)PC桌面有了很大的性能提升. 因此,越來越多的企業(yè)選擇使用虛擬桌面,不僅能夠提高公司在管理和維護方面的效率,減少機房維護人員的工作量,而且能夠很大程度上降低企業(yè)的成本. 本次測試證明此方案切實可行,并且已投入正式使用中.
1 Wikipedia. Desktop virtualization. http://en.wikipedia.org/wiki/Desktop_virtualization. [2012-03-26].
2 楊彩亮. 基于Spice桌面虛擬化框架的移動云桌面研究與實現[碩士學位論文]. 廣州:華南理工大學,2015.
3 徐浩,蘭雨晴. 基于SPICE協(xié)議的桌面虛擬化技術研究與改進方案. 計算機工程與科學,2013,35(12):20-25.
4 王寧,王浩杰,屈喜龍. 基于SPICE協(xié)議的Android云桌面客戶端研究. 湖南工程學院學報,2016,26(2):33-36,61.
5 李博. 基于SPICE協(xié)議的桌面虛擬化客戶端的設計與實現[碩士學位論文]. 廣州:華南理工大學,2012.
6 賴孫榮. 虛擬桌面框架Spice剖析及其客戶端的設計與實現[碩士學位論文]. 廣州:華南理工大學,2012.
7 Red Hat. Spice for newbies:Draft 2. http://spice-space.org/docs/spice_for_newbies.pdf. 2009.
8 洪文圳,周勁樺,梁慧娜. 開源虛擬化桌面在實驗環(huán)境部署中的應用. 計算機教育,2015,(2):94-98.
9 楊飛,朱志祥,梁小江. 基于SPICE協(xié)議的云實驗室設計與實現. 現代電子技術,2016,39(1):13-15.
10 張毅. 基于OpenStack的虛擬桌面云系統(tǒng)服務端設計與實現[碩士學位論文]. 廣州:華南理工大學,2013.