侯文慧
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)
隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,計(jì)算機(jī)系統(tǒng)和應(yīng)用越來(lái)越復(fù)雜,有效地管理各種資源變得越來(lái)越困難,虛擬化技術(shù)為此提供了有效的解決方案。虛擬化技術(shù)將各種計(jì)算機(jī)資源進(jìn)行抽象和轉(zhuǎn)換,以更加高效的方式應(yīng)用這些資源,同時(shí)脫離現(xiàn)有資源的架設(shè)限制,以實(shí)現(xiàn)資源的靈活高效的使用。其中桌面虛擬化技術(shù)是虛擬化的一項(xiàng)關(guān)鍵技術(shù)。用戶可使用任何設(shè)備、在任何地點(diǎn)、任何時(shí)間通過(guò)云桌面協(xié)議,訪問(wèn)服務(wù)器端存放的完整的個(gè)人桌面環(huán)境,從而獲得與操作本地操作系統(tǒng)類似的PC使用體驗(yàn)[1]。其中,云桌面協(xié)議將極大的影響虛擬桌面用戶體驗(yàn)。
目前主流的有云桌面協(xié)議有RDP、ICA、PCoIP以及SPICE這四種。其中,RDP是有微軟開(kāi)發(fā)的多通道協(xié)議,支持不同類型的網(wǎng)絡(luò)拓?fù)?,與其兼容的客戶端可在多種操作系統(tǒng)上運(yùn)行;ICA是由Citrix自己獨(dú)立研發(fā)的,致力于云計(jì)算虛擬化、虛擬桌面和遠(yuǎn)程接入技術(shù),具有很好的穩(wěn)定性;PCoIP是由VMware與Teradici共同開(kāi)發(fā),將用戶的回話以圖像的方式壓縮傳輸,只傳輸有變化部分,保障了低帶寬條件下的高效使用。SPICE是Redhat公司開(kāi)發(fā)的完全開(kāi)源的云桌面協(xié)議,它吸收很多傳統(tǒng)解決方案的優(yōu)點(diǎn),采用多層架構(gòu)方式,提供圖像、視頻、音頻等多種的多媒體體驗(yàn),在廣域網(wǎng)和局域網(wǎng)內(nèi)均可很好的使用,具有很大的市場(chǎng)潛力[2]。
獨(dú)立計(jì)算環(huán)境的簡(jiǎn)單協(xié)議(Simple Protocol for In?dependent Computing Environment,SPICE)是由紅帽公司開(kāi)發(fā)的專門為桌面虛擬化解決方案而設(shè)計(jì)的遠(yuǎn)程顯示傳輸協(xié)議。用戶可不受時(shí)間、地點(diǎn)的限制,通過(guò)客戶端來(lái)訪問(wèn)遠(yuǎn)程桌面系統(tǒng),從而獲得與本地機(jī)器交互類似的用戶體驗(yàn),而把一些CPU、GPU密集的工作移交給遠(yuǎn)程高性能的處理機(jī)器。SPICE主要包括三個(gè)構(gòu)件,SPICE服務(wù)端、SPICE協(xié)議、SPICE客戶端,除此之外,還有些相關(guān)組件,如QXL設(shè)備與驅(qū)動(dòng)、Agent代理等[3]。虛擬機(jī)運(yùn)行在虛擬平臺(tái)QEMU-KVM上,QEMU獲取虛擬機(jī)的信息,并把信息傳遞給SPICE服務(wù)端,服務(wù)端把信息處理后,使用SPICE協(xié)議將信息封裝后傳遞給SPICE客戶端,客戶端收到信息后,發(fā)送反饋報(bào)文給SPICE服務(wù)端。SPICE基本架構(gòu)如圖1所示。
圖1 SPICE框架結(jié)構(gòu)圖
QUME獲取虛擬機(jī)的顯示畫(huà)面后,將其中圖像幀信息傳遞給SPICE服務(wù)端,SPICE虛擬機(jī)的圖像信息構(gòu)建渲染樹(shù),渲染樹(shù)記錄著圖像幀的區(qū)域、大小、幀率等信息,同時(shí)SPICE維持著流鏈表記錄著SPICE中的視頻流信息,視頻流指一個(gè)穩(wěn)定的、連續(xù)的視頻數(shù)據(jù)傳輸?shù)牧鳌H羰菆D像塊的幀率達(dá)到了20幀每秒,則識(shí)別該區(qū)域的為視頻區(qū)域并將其加入流鏈表,該幀為視頻幀。若幀所在的區(qū)域已經(jīng)存在于流鏈表之中,則判斷當(dāng)前幀與前一幀是否小于閾值。若是,則該幀為視頻幀;若否,則將所在區(qū)域從流鏈表中移除。若識(shí)別幀為視頻幀,則使用MJPEG壓縮算法壓縮視頻幀;否則該幀為圖像幀,使用圖像算法壓縮圖像幀,SPICE主要提供了三種圖像壓縮算法——Quic、LZ、GLZ(Global LZ)。SPICE協(xié)議將壓縮后的幀傳輸?shù)娇蛻舳?,使用相?yīng)的算法對(duì)其解壓,并顯示到客戶端屏幕上。
MJPEG(運(yùn)動(dòng)靜止圖像壓縮技術(shù))最初是為多媒體PC應(yīng)用而開(kāi)發(fā)的,現(xiàn)在被諸如數(shù)碼相機(jī)、IP攝像機(jī)、網(wǎng)絡(luò)攝像機(jī)等視頻捕捉設(shè)備以及非線性視頻編輯系統(tǒng)所使用。MJPEG將連續(xù)的視頻幀序列作為一幀一幀的連續(xù)的靜止圖像幀來(lái)進(jìn)行處理,每一幀使用JPEG壓縮算法進(jìn)行壓縮處理。其優(yōu)點(diǎn)在于可得到比較好的壓縮質(zhì)量,能夠容忍視頻流中快速變化的運(yùn)動(dòng),對(duì)硬件要求較低,同時(shí)有廣泛的客戶端支持[4]。但MJPEG的缺點(diǎn)也很明顯,它未考慮視頻流中幀與幀之間的關(guān)聯(lián)性,缺乏幀間預(yù)測(cè),幀彼此獨(dú)立壓縮,壓縮后的相鄰幀之間的有大量重復(fù)的冗余信息,壓縮效率非常低,極大消耗了SPICE的存儲(chǔ)和傳輸資源,不大適合視頻資源的網(wǎng)絡(luò)傳輸。
SPICE原開(kāi)發(fā)團(tuán)隊(duì)選擇MJPEG作為視頻壓縮算法的原因在于MJPEG比較簡(jiǎn)單,對(duì)CPU消耗少,對(duì)瘦客戶端的處理能力要求較低。但由于沒(méi)有幀間編碼,MJPEG壓縮效率十分有限,對(duì)帶寬要求非常高,即使在局域網(wǎng)范圍內(nèi),要播放高清視頻也需要提供優(yōu)良網(wǎng)絡(luò)條件。于此,本文使用MPEG4視頻壓縮算法替換原有的MJPEG算法壓縮視頻幀,SPICE協(xié)議將壓縮后的視頻幀信息傳遞到客戶端,并在客戶端使用MPEG4解壓算法解壓視頻幀。
MPEG4是一種定義音頻和視頻數(shù)字?jǐn)?shù)據(jù)壓縮方法,是國(guó)際標(biāo)準(zhǔn)化組織(ISO)成立的專責(zé)制定有關(guān)運(yùn)動(dòng)圖像壓縮編碼標(biāo)準(zhǔn)的工作組所制定的國(guó)際通用標(biāo)準(zhǔn)。MPEG-4仍然是一個(gè)不斷發(fā)展的標(biāo)準(zhǔn),分為若干部分,主要包括:系統(tǒng)層、視頻、音頻、DMIF、一致性測(cè)試和參考軟件等。MPEG-4主要針對(duì)低比特率的視頻通信,能夠編碼混合媒體數(shù)據(jù)(視頻、音頻、語(yǔ)音),支持健壯傳輸?shù)腻e(cuò)誤恢復(fù),可利用很窄的帶寬獲得優(yōu)質(zhì)的畫(huà)面質(zhì)量[5]。
MPEG4視頻壓縮算法的主要特征是提供基于內(nèi)容的編碼,實(shí)現(xiàn)高效的壓縮。以前的壓縮算法只是去掉幀內(nèi)和幀間的冗余,MPEG-4則要求對(duì)圖像和視頻作更多的分析。MPEG4視頻壓縮算法不再將視頻數(shù)據(jù)只是單純地看出一幀幀的圖像,基于像素進(jìn)行編碼,而是將一幅景物分成若干在時(shí)間和空間上相互聯(lián)系的視頻音頻對(duì)象,例如一幀圖像中的一個(gè)人、一個(gè)物體或是背景、音樂(lè)等看成一個(gè)對(duì)象,對(duì)每個(gè)對(duì)象靈活分配碼率,并為每個(gè)對(duì)象的編碼形成一個(gè)對(duì)象碼流層,包含對(duì)象的形狀、位置、紋理等屬性[6]。
MPEG4的主要步驟為:(1)在視頻對(duì)象進(jìn)行分割,從原始視頻流中,采用全自動(dòng)、半自動(dòng)等方式分割得到視頻對(duì)象;(2)對(duì)不同的視頻對(duì)象進(jìn)行獨(dú)立編碼,對(duì)于各個(gè)對(duì)象的運(yùn)動(dòng)、形狀和紋理進(jìn)行編碼,分配不同的碼字;(3)復(fù)合各個(gè)對(duì)象的碼流為MPEG4位流。
(1)MPEG4提供幀內(nèi)和幀間壓縮,去除了幀間冗余,具有更高的壓縮效率;
(2)MPEG4采用基于內(nèi)容的編碼,從紋理和輪廓出發(fā),大大增加了交互性;
(3)MJPEG壓縮比為20:1-50:1,MPEG-4最高達(dá)200:1,比MJPEG算法提供更好壓縮比;
(4)MPEG4在提供高壓縮比的同時(shí)保證較小的數(shù)據(jù)損失;
(5)具有很好的兼容性,提供了易出錯(cuò)環(huán)境的魯棒性。
SPICE通過(guò)幀率判定為圖像塊為視頻幀后,需在發(fā)送給客戶端前需進(jìn)行壓縮以減小傳輸量,本文使用MPEG4壓縮視頻幀。MPEG4編碼主要通過(guò)調(diào)用XviD的庫(kù)函數(shù)實(shí)現(xiàn)。XviD是一個(gè)開(kāi)放源代碼的MPEG-4視頻編解碼器,它是基于OpenDivX而編寫的。XviD視頻編解碼器作為第二代MPEG4編碼具有多方面的優(yōu)點(diǎn):(1)支持多種編碼模式;(2)除了提供了標(biāo)準(zhǔn)MPEG量化方式,提供了更適合低碼流壓縮的h。263量化方式;(3)提供了多極運(yùn)動(dòng)偵測(cè)精度;(4)提供如心理視覺(jué)亮度修正等不少附加功能;(5)畫(huà)面優(yōu)化譯碼。鑒于XviD以上種種優(yōu)點(diǎn),我們采用XVID實(shí)現(xiàn)視頻的編解碼。其中在SPICE服務(wù)端、協(xié)議、客戶端的編解碼視頻幀步驟為:
SPICE服務(wù)端:(1)若圖像塊區(qū)域被識(shí)別為新的視頻區(qū)域加入了流鏈表,則為該流初始化一個(gè)XviD編碼器。編碼器獲取視頻幀的高寬以設(shè)定編碼器大小,以及當(dāng)前網(wǎng)絡(luò)狀況以設(shè)定初始碼率,同時(shí)設(shè)定其他參數(shù);(2)對(duì)于編碼器第一幀,直接使用當(dāng)前編碼器對(duì)幀進(jìn)行壓縮。其后到達(dá)的幀若與當(dāng)前編碼器的高寬,則使用當(dāng)前編碼器進(jìn)行編碼。若否,則銷毀當(dāng)前編碼器并為創(chuàng)建一個(gè)新的編碼器,再進(jìn)行編碼壓縮。
SPICE協(xié)議:SPICE協(xié)議將壓縮后的視頻信息發(fā)送至SPICE客戶端。
SPICE客戶端:(1)SPICE客戶端接收到流的第一幀信息后,為流初始化XviD解碼器,并設(shè)定編碼器大?。唬?)對(duì)于解碼器的第一幀使用當(dāng)前解碼器,對(duì)于對(duì)幀進(jìn)行解壓。其后到達(dá)的幀若與當(dāng)前解碼器的高寬,則使用當(dāng)前解碼器進(jìn)行解壓。若否,則銷毀當(dāng)前解碼器并為創(chuàng)建一個(gè)新的解碼器,再進(jìn)行視頻幀解壓;(3)將視頻幀顯示到屏幕。
實(shí)驗(yàn)環(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。本文實(shí)驗(yàn)在服務(wù)器端和客戶端電腦上之間組建獨(dú)立的局域網(wǎng),并使用流量控制工具tc調(diào)節(jié)局域網(wǎng)帶寬。
實(shí)驗(yàn)?zāi)康模簩?duì)比改進(jìn)后的協(xié)議和未改進(jìn)的協(xié)議在不同帶寬條件下的流量,以驗(yàn)證改進(jìn)后協(xié)議的網(wǎng)絡(luò)帶寬占用方面的優(yōu)良性能。
圖 2 是在 50ms時(shí)延、10-6丟包率和 2Mb/s、5Mb/s、10Mb/s、20Mb/s、50Mb/s及無(wú)帶寬限制條件下的帶寬占用的測(cè)試結(jié)果。從圖2中可以看出,在各個(gè)帶寬條件下,改進(jìn)后的SPICE比改進(jìn)前協(xié)議的性能有著明顯的提升。在低帶寬條件下,改進(jìn)后的SPICE占用帶寬與原SPICE相比減小30-40%,其帶寬變化更穩(wěn)定。隨著可用帶寬的不斷增加,改進(jìn)后的協(xié)議比原SPICE的帶寬占用差距愈加增大,在不限帶寬的網(wǎng)絡(luò)條件下,改進(jìn)后協(xié)議的帶寬占用比改進(jìn)前協(xié)議減少了50%以上。
本文針對(duì)云桌面協(xié)議SPICE存在的問(wèn)題——視頻播放時(shí)帶寬占用率高,提出了使用MPEG4視頻壓縮算法替換SPICE原有的壓縮效率不高的MJPEG算法的改進(jìn)方案,并在不同帶寬條件下對(duì)改進(jìn)后的算法的性能進(jìn)行了測(cè)試,實(shí)驗(yàn)表明改進(jìn)后的SPICE協(xié)議在進(jìn)行視頻傳輸極大降低了傳輸帶寬,從而提高了SPICE的性能。
圖2 改進(jìn)前與改進(jìn)后協(xié)議在不同帶寬下流量結(jié)果對(duì)比
參考文獻(xiàn):
[1]張建勛,古志民,鄭超.云計(jì)算研究進(jìn)展綜述[J].
[2]徐浩,蘭雨晴.基于SPICE協(xié)議的桌面虛擬化技術(shù)研究與改進(jìn)方案[J].計(jì)算機(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è)計(jì)[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].中國(guó)科技論文在線,[2006-06-06].