侯文慧
(四川大學(xué)計算機學(xué)院,成都 610065)
隨著計算機技術(shù)的快速發(fā)展,計算機系統(tǒng)和應(yīng)用越來越復(fù)雜,有效地管理各種資源變得越來越困難,虛擬化技術(shù)為此提供了有效的解決方案。虛擬化技術(shù)將各種計算機資源進行抽象和轉(zhuǎn)換,以更加高效的方式應(yīng)用這些資源,同時脫離現(xiàn)有資源的架設(shè)限制,以實現(xiàn)資源的靈活高效的使用。其中桌面虛擬化技術(shù)是虛擬化的一項關(guān)鍵技術(shù)。用戶可使用任何設(shè)備、在任何地點、任何時間通過云桌面協(xié)議,訪問服務(wù)器端存放的完整的個人桌面環(huán)境,從而獲得與操作本地操作系統(tǒng)類似的PC使用體驗[1]。其中,云桌面協(xié)議將極大的影響虛擬桌面用戶體驗。
目前主流的有云桌面協(xié)議有RDP、ICA、PCoIP以及SPICE這四種。其中,RDP是有微軟開發(fā)的多通道協(xié)議,支持不同類型的網(wǎng)絡(luò)拓撲,與其兼容的客戶端可在多種操作系統(tǒng)上運行;ICA是由Citrix自己獨立研發(fā)的,致力于云計算虛擬化、虛擬桌面和遠程接入技術(shù),具有很好的穩(wěn)定性;PCoIP是由VMware與Teradici共同開發(fā),將用戶的回話以圖像的方式壓縮傳輸,只傳輸有變化部分,保障了低帶寬條件下的高效使用。SPICE是Redhat公司開發(fā)的完全開源的云桌面協(xié)議,它吸收很多傳統(tǒng)解決方案的優(yōu)點,采用多層架構(gòu)方式,提供圖像、視頻、音頻等多種的多媒體體驗,在廣域網(wǎng)和局域網(wǎng)內(nèi)均可很好的使用,具有很大的市場潛力[2]。
獨立計算環(huán)境的簡單協(xié)議(Simple Protocol for In?dependent Computing Environment,SPICE)是由紅帽公司開發(fā)的專門為桌面虛擬化解決方案而設(shè)計的遠程顯示傳輸協(xié)議。用戶可不受時間、地點的限制,通過客戶端來訪問遠程桌面系統(tǒng),從而獲得與本地機器交互類似的用戶體驗,而把一些CPU、GPU密集的工作移交給遠程高性能的處理機器。SPICE主要包括三個構(gòu)件,SPICE服務(wù)端、SPICE協(xié)議、SPICE客戶端,除此之外,還有些相關(guān)組件,如QXL設(shè)備與驅(qū)動、Agent代理等[3]。虛擬機運行在虛擬平臺QEMU-KVM上,QEMU獲取虛擬機的信息,并把信息傳遞給SPICE服務(wù)端,服務(wù)端把信息處理后,使用SPICE協(xié)議將信息封裝后傳遞給SPICE客戶端,客戶端收到信息后,發(fā)送反饋報文給SPICE服務(wù)端。SPICE基本架構(gòu)如圖1所示。

圖1 SPICE框架結(jié)構(gòu)圖
QUME獲取虛擬機的顯示畫面后,將其中圖像幀信息傳遞給SPICE服務(wù)端,SPICE虛擬機的圖像信息構(gòu)建渲染樹,渲染樹記錄著圖像幀的區(qū)域、大小、幀率等信息,同時SPICE維持著流鏈表記錄著SPICE中的視頻流信息,視頻流指一個穩(wěn)定的、連續(xù)的視頻數(shù)據(jù)傳輸?shù)牧?。若是圖像塊的幀率達到了20幀每秒,則識別該區(qū)域的為視頻區(qū)域并將其加入流鏈表,該幀為視頻幀。若幀所在的區(qū)域已經(jīng)存在于流鏈表之中,則判斷當(dāng)前幀與前一幀是否小于閾值。若是,則該幀為視頻幀;若否,則將所在區(qū)域從流鏈表中移除。若識別幀為視頻幀,則使用MJPEG壓縮算法壓縮視頻幀;否則該幀為圖像幀,使用圖像算法壓縮圖像幀,SPICE主要提供了三種圖像壓縮算法——Quic、LZ、GLZ(Global LZ)。SPICE協(xié)議將壓縮后的幀傳輸?shù)娇蛻舳?,使用相?yīng)的算法對其解壓,并顯示到客戶端屏幕上。
MJPEG(運動靜止圖像壓縮技術(shù))最初是為多媒體PC應(yīng)用而開發(fā)的,現(xiàn)在被諸如數(shù)碼相機、IP攝像機、網(wǎng)絡(luò)攝像機等視頻捕捉設(shè)備以及非線性視頻編輯系統(tǒng)所使用。MJPEG將連續(xù)的視頻幀序列作為一幀一幀的連續(xù)的靜止圖像幀來進行處理,每一幀使用JPEG壓縮算法進行壓縮處理。其優(yōu)點在于可得到比較好的壓縮質(zhì)量,能夠容忍視頻流中快速變化的運動,對硬件要求較低,同時有廣泛的客戶端支持[4]。但MJPEG的缺點也很明顯,它未考慮視頻流中幀與幀之間的關(guān)聯(lián)性,缺乏幀間預(yù)測,幀彼此獨立壓縮,壓縮后的相鄰幀之間的有大量重復(fù)的冗余信息,壓縮效率非常低,極大消耗了SPICE的存儲和傳輸資源,不大適合視頻資源的網(wǎng)絡(luò)傳輸。
SPICE原開發(fā)團隊選擇MJPEG作為視頻壓縮算法的原因在于MJPEG比較簡單,對CPU消耗少,對瘦客戶端的處理能力要求較低。但由于沒有幀間編碼,MJPEG壓縮效率十分有限,對帶寬要求非常高,即使在局域網(wǎng)范圍內(nèi),要播放高清視頻也需要提供優(yōu)良網(wǎng)絡(luò)條件。于此,本文使用MPEG4視頻壓縮算法替換原有的MJPEG算法壓縮視頻幀,SPICE協(xié)議將壓縮后的視頻幀信息傳遞到客戶端,并在客戶端使用MPEG4解壓算法解壓視頻幀。
MPEG4是一種定義音頻和視頻數(shù)字數(shù)據(jù)壓縮方法,是國際標(biāo)準(zhǔn)化組織(ISO)成立的專責(zé)制定有關(guān)運動圖像壓縮編碼標(biāo)準(zhǔn)的工作組所制定的國際通用標(biāo)準(zhǔn)。MPEG-4仍然是一個不斷發(fā)展的標(biāo)準(zhǔn),分為若干部分,主要包括:系統(tǒng)層、視頻、音頻、DMIF、一致性測試和參考軟件等。MPEG-4主要針對低比特率的視頻通信,能夠編碼混合媒體數(shù)據(jù)(視頻、音頻、語音),支持健壯傳輸?shù)腻e誤恢復(fù),可利用很窄的帶寬獲得優(yōu)質(zhì)的畫面質(zhì)量[5]。
MPEG4視頻壓縮算法的主要特征是提供基于內(nèi)容的編碼,實現(xiàn)高效的壓縮。以前的壓縮算法只是去掉幀內(nèi)和幀間的冗余,MPEG-4則要求對圖像和視頻作更多的分析。MPEG4視頻壓縮算法不再將視頻數(shù)據(jù)只是單純地看出一幀幀的圖像,基于像素進行編碼,而是將一幅景物分成若干在時間和空間上相互聯(lián)系的視頻音頻對象,例如一幀圖像中的一個人、一個物體或是背景、音樂等看成一個對象,對每個對象靈活分配碼率,并為每個對象的編碼形成一個對象碼流層,包含對象的形狀、位置、紋理等屬性[6]。
MPEG4的主要步驟為:(1)在視頻對象進行分割,從原始視頻流中,采用全自動、半自動等方式分割得到視頻對象;(2)對不同的視頻對象進行獨立編碼,對于各個對象的運動、形狀和紋理進行編碼,分配不同的碼字;(3)復(fù)合各個對象的碼流為MPEG4位流。
(1)MPEG4提供幀內(nèi)和幀間壓縮,去除了幀間冗余,具有更高的壓縮效率;
(2)MPEG4采用基于內(nèi)容的編碼,從紋理和輪廓出發(fā),大大增加了交互性;
(3)MJPEG壓縮比為20:1-50:1,MPEG-4最高達200:1,比MJPEG算法提供更好壓縮比;
(4)MPEG4在提供高壓縮比的同時保證較小的數(shù)據(jù)損失;
(5)具有很好的兼容性,提供了易出錯環(huán)境的魯棒性。
SPICE通過幀率判定為圖像塊為視頻幀后,需在發(fā)送給客戶端前需進行壓縮以減小傳輸量,本文使用MPEG4壓縮視頻幀。MPEG4編碼主要通過調(diào)用XviD的庫函數(shù)實現(xiàn)。XviD是一個開放源代碼的MPEG-4視頻編解碼器,它是基于OpenDivX而編寫的。XviD視頻編解碼器作為第二代MPEG4編碼具有多方面的優(yōu)點:(1)支持多種編碼模式;(2)除了提供了標(biāo)準(zhǔn)MPEG量化方式,提供了更適合低碼流壓縮的h。263量化方式;(3)提供了多極運動偵測精度;(4)提供如心理視覺亮度修正等不少附加功能;(5)畫面優(yōu)化譯碼。鑒于XviD以上種種優(yōu)點,我們采用XVID實現(xiàn)視頻的編解碼。其中在SPICE服務(wù)端、協(xié)議、客戶端的編解碼視頻幀步驟為:
SPICE服務(wù)端:(1)若圖像塊區(qū)域被識別為新的視頻區(qū)域加入了流鏈表,則為該流初始化一個XviD編碼器。編碼器獲取視頻幀的高寬以設(shè)定編碼器大小,以及當(dāng)前網(wǎng)絡(luò)狀況以設(shè)定初始碼率,同時設(shè)定其他參數(shù);(2)對于編碼器第一幀,直接使用當(dāng)前編碼器對幀進行壓縮。其后到達的幀若與當(dāng)前編碼器的高寬,則使用當(dāng)前編碼器進行編碼。若否,則銷毀當(dāng)前編碼器并為創(chuàng)建一個新的編碼器,再進行編碼壓縮。
SPICE協(xié)議:SPICE協(xié)議將壓縮后的視頻信息發(fā)送至SPICE客戶端。
SPICE客戶端:(1)SPICE客戶端接收到流的第一幀信息后,為流初始化XviD解碼器,并設(shè)定編碼器大小;(2)對于解碼器的第一幀使用當(dāng)前解碼器,對于對幀進行解壓。其后到達的幀若與當(dāng)前解碼器的高寬,則使用當(dāng)前解碼器進行解壓。若否,則銷毀當(dāng)前解碼器并為創(chuàng)建一個新的解碼器,再進行視頻幀解壓;(3)將視頻幀顯示到屏幕。
實驗環(huán)境為:SPICE服務(wù)端配置:Intel Pentium Du?al-Core CPU E6700@3.20GHz;內(nèi)存 6G;操作系統(tǒng)Centos 7;SPICE客戶端配置:Intel(R)Pentium(R)CPU B950@2.10GHz;內(nèi)存 6G;操作系統(tǒng):Ubuntu-4.4.0。本文實驗在服務(wù)器端和客戶端電腦上之間組建獨立的局域網(wǎng),并使用流量控制工具tc調(diào)節(jié)局域網(wǎng)帶寬。
實驗?zāi)康模簩Ρ雀倪M后的協(xié)議和未改進的協(xié)議在不同帶寬條件下的流量,以驗證改進后協(xié)議的網(wǎng)絡(luò)帶寬占用方面的優(yōu)良性能。
圖 2 是在 50ms時延、10-6丟包率和 2Mb/s、5Mb/s、10Mb/s、20Mb/s、50Mb/s及無帶寬限制條件下的帶寬占用的測試結(jié)果。從圖2中可以看出,在各個帶寬條件下,改進后的SPICE比改進前協(xié)議的性能有著明顯的提升。在低帶寬條件下,改進后的SPICE占用帶寬與原SPICE相比減小30-40%,其帶寬變化更穩(wěn)定。隨著可用帶寬的不斷增加,改進后的協(xié)議比原SPICE的帶寬占用差距愈加增大,在不限帶寬的網(wǎng)絡(luò)條件下,改進后協(xié)議的帶寬占用比改進前協(xié)議減少了50%以上。
本文針對云桌面協(xié)議SPICE存在的問題——視頻播放時帶寬占用率高,提出了使用MPEG4視頻壓縮算法替換SPICE原有的壓縮效率不高的MJPEG算法的改進方案,并在不同帶寬條件下對改進后的算法的性能進行了測試,實驗表明改進后的SPICE協(xié)議在進行視頻傳輸極大降低了傳輸帶寬,從而提高了SPICE的性能。

圖2 改進前與改進后協(xié)議在不同帶寬下流量結(jié)果對比
參考文獻:
[1]張建勛,古志民,鄭超.云計算研究進展綜述[J].
[2]徐浩,蘭雨晴.基于SPICE協(xié)議的桌面虛擬化技術(shù)研究與改進方案[J].計算機工程與科學(xué),2013,35(12):20-25.
[3]Red Hat,Inc.(2009).Spice for Newbies.[Accessed 2017-06-21].Available from http://spice-space.org/docs/spice_for_newbies.pdf.
[4]李鵬.MJPEG視頻編解碼的SOC設(shè)計[D].山東大學(xué),2007.LI P.SOC Design of MJPEG Video Codec[D].Shandong University,2007.
[5]T SIKORA,L CHIARIGLIONE.L.MPEG-4 video and Its Potential for Future Multimedia Services[D].IEEE International Symposium on Circuits&Systems,1997,2:1468-1471.
[6]鄭曉燕,董猛,郭健.MPEG-4視頻編碼及其關(guān)鍵算法[EB/OL].中國科技論文在線,[2006-06-06].