彭高賢
(湖南工程學(xué)院 湖南省湘潭市 411101)
云桌面也稱(chēng)桌面虛擬化,它是一種將訪問(wèn)桌面系統(tǒng)的物理客戶(hù)端與桌面環(huán)境和相關(guān)的應(yīng)用軟件相分離的軟件技術(shù)。云桌面是一系列技術(shù)的集合,其架構(gòu)是Client/Server 結(jié)構(gòu)。云端服務(wù)器通過(guò)虛擬化技術(shù)生成一定數(shù)量的獨(dú)立桌面操作系統(tǒng)(虛擬桌面),然后通過(guò)遠(yuǎn)程桌面協(xié)議將虛擬的面操作系統(tǒng)發(fā)送給終端,用戶(hù)在終端上通過(guò)網(wǎng)絡(luò)訪問(wèn)自己的桌面系統(tǒng)。在云桌面系統(tǒng)中,應(yīng)用程序和相關(guān)數(shù)據(jù)信息全部保存在云端服務(wù)器中,應(yīng)用程序在云端服務(wù)器上執(zhí)行,執(zhí)行結(jié)果通過(guò)遠(yuǎn)程桌面協(xié)議發(fā)送到終端,終端僅用于顯示桌面圖像,并接收鍵盤(pán)、鼠標(biāo)等外設(shè)的輸入,這些輸入通過(guò)遠(yuǎn)程桌面協(xié)議回傳到遠(yuǎn)端服務(wù)器進(jìn)行處理。
云桌面是一項(xiàng)涉及虛擬化技術(shù)、存儲(chǔ)技術(shù)、網(wǎng)絡(luò)技術(shù)、音視頻處理技術(shù)等多種技術(shù)的信息系統(tǒng)解決方案。云桌面和個(gè)人PC 對(duì)比有以下幾個(gè)優(yōu)點(diǎn):
(1)成本低。云桌面終端只需要一般配置便可使用云桌面系統(tǒng)提供的計(jì)算資源。
(2)資源利用率高??梢詫⒍嗯_(tái)服務(wù)器資源虛擬成資源池分配給用戶(hù)按需取用。
(3)使用方便。云桌面的操作系統(tǒng)由管理員統(tǒng)一管理,將安裝好的系統(tǒng)發(fā)布成系統(tǒng)模板,用戶(hù)只需選用這個(gè)模板就能使用標(biāo)準(zhǔn)化的系統(tǒng)和軟件。
(4)便于管理。管理員可以在管理系統(tǒng)中監(jiān)控各臺(tái)終端的在線狀態(tài),可以通過(guò)負(fù)載均衡添加或替換硬件資源,再池化分享[1]。
云桌面在CPU、內(nèi)存、網(wǎng)卡等資源的虛擬化做得相當(dāng)穩(wěn)定,但是在顯卡虛擬化方面卻顯得技術(shù)不夠完善,從而導(dǎo)致云桌面播放3D 視頻效果不佳。因此云桌面僅限于瀏覽網(wǎng)頁(yè)和編輯文檔等對(duì)顯卡需求不高的任務(wù),如果有3D 視頻需求的用戶(hù),云桌面顯然不是最好的選擇。
VDI 架構(gòu)是基于Linux 底層采用KVM 虛擬化技術(shù),通過(guò)在服務(wù)器上運(yùn)行操作系統(tǒng),根據(jù)不同用戶(hù)需求對(duì)桌面進(jìn)行虛擬化配置,是目前主流的云桌面虛擬化架構(gòu)。所有用戶(hù)的桌面數(shù)據(jù)都存儲(chǔ)在服務(wù)器上,具有“集中計(jì)算,集中管理”的特點(diǎn)。云桌面VDI 架構(gòu)如圖1所示。
服務(wù)器端是多臺(tái)服務(wù)器組成集群,具有強(qiáng)擴(kuò)展性,通過(guò)虛擬化技術(shù)將服務(wù)器的各種物理資源,如處理器、內(nèi)存、顯卡、存儲(chǔ)等虛擬化成各種虛擬的物理資源池,實(shí)現(xiàn)按需取用,通過(guò)網(wǎng)絡(luò)映射到終端設(shè)備,供終端設(shè)備使用[2]。終端可以是筆記本、PC 機(jī)、手機(jī)等,安裝好客戶(hù)端軟件,遠(yuǎn)程連接到服務(wù)器,即可運(yùn)行自己的邏輯計(jì)算機(jī),所有資源和數(shù)據(jù)都由服務(wù)器提供,移動(dòng)性強(qiáng)。
基于VDI 架構(gòu),實(shí)現(xiàn)3D 視頻播放的原理很容易理解,系統(tǒng)將播放3D 視頻需要的硬件設(shè)備虛擬化后,由終端控制播放3D 視頻,服務(wù)器將3D 視頻資源解碼后的數(shù)據(jù)傳輸?shù)浇K端設(shè)備,終端接收到數(shù)據(jù)之后即可直接播放。由于3D 視頻資源解碼后數(shù)據(jù)量非常大,常常受限于網(wǎng)絡(luò),導(dǎo)致3D 視頻播放卡頓。
圖1:VDI 架構(gòu)
IDV 架構(gòu)是強(qiáng)調(diào)充分利用云終端的資源來(lái)進(jìn)行計(jì)算和存儲(chǔ),各桌面運(yùn)行系統(tǒng)分布在各個(gè)云終端,服務(wù)器只是對(duì)各個(gè)桌面進(jìn)行托管來(lái)加強(qiáng)管理,服務(wù)器只管理IDV 的云桌面的模式,而存儲(chǔ)和運(yùn)行則在云終端進(jìn)行,具有“分布式計(jì)算,集中管理”的特點(diǎn)[3]。采取分布式計(jì)算,并集中和簡(jiǎn)化管理、部署功能。虛擬桌面充分利用終端的硬件資源,每個(gè)終端都是虛擬桌面節(jié)點(diǎn),云桌面在斷網(wǎng)時(shí)也可運(yùn)行,重新連上服務(wù)器后會(huì)同步管理數(shù)據(jù)到服務(wù)器。相對(duì)于VDI架構(gòu)而言,體驗(yàn)更佳,更接近真實(shí)物理設(shè)備,IDV 架構(gòu)是目前實(shí)現(xiàn)3D 視頻功能的主流云桌面架構(gòu)。
由于IDV 架構(gòu)的云桌面是分布式計(jì)算,所以終端如果要播放3D 視頻,終端必須具有支持3D 視頻播放的硬件設(shè)備。其播放原理與一臺(tái)普通的計(jì)算機(jī)無(wú)異,由終端設(shè)備本地對(duì)3D 視頻資源進(jìn)行解碼播放。
由于VDI 架構(gòu)對(duì)3D 視頻播放效果不佳,根據(jù)企業(yè)對(duì)VDI 架構(gòu)云桌面的實(shí)際應(yīng)用需求,提出基于VDI 架構(gòu)的3D 視頻處理的優(yōu)化方案。企業(yè)在使用云桌面的過(guò)程中,考慮設(shè)備成本的同時(shí),也有部分對(duì)用戶(hù)體驗(yàn)要求高的需求。為此,針對(duì)用戶(hù)體驗(yàn)要求不高的,可以采用瘦客戶(hù)機(jī)節(jié)約成本;針對(duì)用戶(hù)體驗(yàn)要求高的,可以采用胖客戶(hù)機(jī)來(lái)提升性能。胖客戶(hù)機(jī)本地自帶顯卡可以對(duì)3D 視頻進(jìn)行計(jì)算解碼,而瘦客戶(hù)機(jī)本地沒(méi)有顯卡,不具備對(duì)3D 視頻進(jìn)行本地解碼的功能。
基于SPICE 協(xié)議的視頻重定向是一個(gè)建立在云桌面技術(shù)基礎(chǔ)上的一個(gè)高清視頻播放方案[4]。在實(shí)現(xiàn)的過(guò)程中需要針對(duì)SPICE 協(xié)議代碼做相應(yīng)的改進(jìn),加入相應(yīng)的功能模塊:視頻劫持模塊(FFMPEG HOOK)、文件傳送模塊(FILE Share)、視頻播放模塊(FFMPEG Player),此三個(gè)模塊分別在基于SPICE 協(xié)議的Guest OS、Client OS、QEMU 模塊下實(shí)現(xiàn)。如圖2所示。
圖2:SPICE 協(xié)議的視頻重定向架構(gòu)
圖3:視頻播放流程
從圖2 可以看出Guest OS 的File Share 模塊和Client OS 的FFMPEG Player 模塊之間增加文件傳輸通道,虛擬機(jī)的視頻文件可以繞過(guò)QEMU 進(jìn)行數(shù)據(jù)傳送,直接把視頻數(shù)據(jù)傳送給Client 端[5]。標(biāo)準(zhǔn)SPICE 協(xié)議在進(jìn)行視頻傳輸時(shí)主要通過(guò)QEMU 的QXL 虛擬設(shè)備來(lái)進(jìn)行視頻的解碼,然后把解碼后的數(shù)據(jù)傳送到Client 端進(jìn)行視頻播放。經(jīng)過(guò)視頻重定向的SPICE 協(xié)議減少了在QEMU 端的視頻解碼,減輕服務(wù)器的運(yùn)行,把視頻解碼放在了客戶(hù)端上完成。
服務(wù)器端和客戶(hù)端分別實(shí)現(xiàn)一個(gè)播放器,在服務(wù)器端分析視頻文件的組織方式,分析視頻播放區(qū)域,截獲未解碼的視頻流。服務(wù)器端捕獲播放器播放的3D 視頻編碼流,直接將視頻編碼流發(fā)送到客戶(hù)端進(jìn)行解碼播放顯示,使用客戶(hù)端的CPU/GPU 進(jìn)行解碼,實(shí)現(xiàn)視頻文件的高清、高性能播放。這樣就解決了服務(wù)器端視頻播放耗費(fèi)的服務(wù)器性能、同時(shí)解決了網(wǎng)絡(luò)流量大導(dǎo)致視頻播放不流暢的問(wèn)題。視頻播放流程如圖3所示。
在客戶(hù)端打開(kāi)視頻文件,播放視頻文件時(shí)會(huì)調(diào)用相應(yīng)的FFMPEG 庫(kù)函數(shù),F(xiàn)FMPEG 庫(kù)函數(shù)中可以實(shí)現(xiàn)劫持播放器,分析本地視頻類(lèi)型和判斷客戶(hù)端類(lèi)型的功能,重新編譯成新的動(dòng)態(tài)庫(kù)替換原有的FFMPEG 動(dòng)態(tài)庫(kù)[6]。FFMPEG 相應(yīng)庫(kù)函數(shù)中增加判斷視頻類(lèi)型和判斷客戶(hù)端類(lèi)型的功能代碼,如果視頻類(lèi)型為3D 視頻,客戶(hù)端是瘦客戶(hù)機(jī),則按照原有的傳輸路徑把視頻數(shù)據(jù)和視頻控制信息通過(guò)SPICE 協(xié)議的QXL 設(shè)備,解碼后傳送到客戶(hù)端。如果視頻類(lèi)型為3D 視頻,且客戶(hù)端是胖客戶(hù)機(jī),則把視頻數(shù)據(jù)和視頻控制信息轉(zhuǎn)給FFMPEG 底層庫(kù),底層庫(kù)會(huì)通知文件傳送模塊把視頻文件加入到文件共享池,等待客戶(hù)端對(duì)此視頻文件的數(shù)據(jù)請(qǐng)求。播放模塊隨時(shí)準(zhǔn)備響應(yīng)客戶(hù)端的視頻請(qǐng)求,一旦接收到客戶(hù)端的播放請(qǐng)求信息后,會(huì)和文件傳送模塊通信請(qǐng)求視頻文件,然后通過(guò)視頻流的方式將視頻傳送給客戶(hù)端,由客戶(hù)端上的設(shè)備進(jìn)行解碼播放。
由于現(xiàn)在顯卡虛擬化技術(shù)還不夠完善,虛擬顯卡對(duì)3D 視頻的處理往往不如物理顯卡性能好,且受限于網(wǎng)絡(luò)帶寬,導(dǎo)致VDI 架構(gòu)的客戶(hù)端3D 視頻播放體驗(yàn)不佳。通過(guò)視頻重定向的方案能解決企業(yè)使用云桌面的大部分難題,相比傳統(tǒng)3D 視頻解決方案的IDV架構(gòu)而言,既可以降低設(shè)備成本提高資源利用率,也能根據(jù)特定需求實(shí)現(xiàn)3D 視頻播放的良好用戶(hù)體驗(yàn)。