王 寧,王浩杰,屈喜龍
(湖南工程學院 計算機與通信學院,湘潭 411104)
?
基于SPICE協(xié)議的Android云桌面客戶端研究
王 寧,王浩杰,屈喜龍
(湖南工程學院 計算機與通信學院,湘潭 411104)
桌面虛擬化技術(shù)是提供云資源的一種重要途徑,將終端設備和用戶的桌面環(huán)境解耦合,結(jié)合應用虛擬化技術(shù),為用戶提供了隨時隨地的桌面辦公環(huán)境.桌面虛擬化技術(shù)的核心是桌面?zhèn)鬏攨f(xié)議.從虛擬化的基本知識出發(fā),介紹了主流的桌面?zhèn)鬏攨f(xié)議,并著重分析了SPICE協(xié)議,對其框架進行分析,在此基礎上介紹了SPICE 協(xié)議的Android客戶端,能夠通過客戶端訪問到云桌面.
SPICE協(xié)議;桌面虛擬化;Android終端;云桌面
隨著云計算的迅速發(fā)展,桌面虛擬化解決方案:桌面虛擬化架構(gòu)(Virtual Desktop Infrastructure,VDI)日益成熟.桌面虛擬化正逐漸成為重要的云計算應用之一,它能夠在云端為用戶提供遠程的計算機桌面服務.VDI架構(gòu)是目前主流的一種桌面云解決方案.桌面虛擬化是一種基于云計算的用戶桌面部署模式,虛擬桌面以虛擬機的形式運行在云端數(shù)據(jù)中心的服務器上,終端用戶通過桌面?zhèn)鬏攨f(xié)議訪問虛擬桌面,每一個用戶都享有一套獨立的桌面環(huán)境,其目標是能夠使用任何設備,在任何時間,任何地點通過網(wǎng)絡訪問個人的桌面系統(tǒng).
VDI解決方案的核心是虛擬桌面?zhèn)鬏攨f(xié)議(Remote Transfer Protocol),目前主流的桌面?zhèn)鬏攨f(xié)議有:紅帽(Red Hat)公司的簡單協(xié)議獨立計算環(huán)境SPICE協(xié)議(Simple Protocol for Independent Computing Environment)、思杰(Citrix)公司的獨立運算架構(gòu)ICA協(xié)議(Independent Computing Architecture)、微軟(Microsoft)公司的遠程桌面協(xié)議RDP(Remote Desktop Protocol)、威睿(VMware)公司的PCoIP(PC-over-IP)協(xié)議等[1].SPICE是一個開源的桌面?zhèn)鬏攨f(xié)議,也是一個具有良好遠程桌面體驗的桌面虛擬化框架.桌面?zhèn)鬏攨f(xié)議的性能是影響VDI效果的重要因素.
本文主要是對SPICE協(xié)議和其Android客戶端進行研究,并對此進行了相關(guān)的實驗.
1.1 桌面?zhèn)鬏攨f(xié)議原理
用戶終端和服務器之間的通信由桌面?zhèn)鬏攨f(xié)議控制連接,能夠?qū)⒎掌魃系膱D像、圖形、音頻等信息傳輸?shù)接脩艚K端,以及將用戶終端的輸入信息傳輸?shù)椒掌鞫?,包括鼠標,鍵盤,外設等的輸入信息[2].桌面?zhèn)鬏攨f(xié)議原理如圖1所示.
圖1 桌面?zhèn)鬏攨f(xié)議原理
1.2 桌面?zhèn)鬏攨f(xié)議的比較
當前主流的桌面?zhèn)鬏攨f(xié)議主要有:SPICE、ICA、RDP、PCoIP等協(xié)議,各主流協(xié)議的分析比較[3]如表1所示.
表1 主流虛擬桌面?zhèn)鬏攨f(xié)議的比較
虛擬桌面是否流暢受到傳輸帶寬的制約.從上表可以看出,ICA協(xié)議對傳輸帶寬的需求是最低的,ICA是一個非開源的協(xié)議,它采用了處理性能強、效率高的數(shù)據(jù)壓縮算法,降低了對網(wǎng)絡帶寬的要求,但是它的圖像視覺體驗并不是很好,傳輸?shù)漠嬅嫘Ч菀资д?;虛擬桌面圖像數(shù)據(jù)的組織形式以及數(shù)據(jù)傳輸順序制約了圖像的顯示體驗.PCoIP協(xié)議是非開源的基于UDP的協(xié)議,它采用的是分層漸進的方式顯示桌面內(nèi)容,但是為了得到最佳效果,需要添加額外的硬件支持;RDP協(xié)議是微軟公司的專有協(xié)議,在windows平臺下的支持度比較高,缺乏跨平臺性,對windows平臺下的技術(shù)有較強的依賴性.
SPICE協(xié)議是一個開源的協(xié)議,對傳輸帶寬的需求適中,但是在所有協(xié)議中它的綜合播放體驗是最好的,它具有廣泛的社區(qū)支持,穩(wěn)定性和安全性非常高,支持多種終端設備.對音視頻帶寬控制、多媒體應用、單畫面顯示、多畫面顯示、以及GPU加速都有非常好的支持;它可以自適應的感知用戶端設備的處理能力,然后在用戶的終端上進行圖像渲染操作,同時采用緩存技術(shù)和壓縮技術(shù),并對傳輸數(shù)據(jù)進行優(yōu)化,減少網(wǎng)絡帶寬占用[4].
2.1 SPICE協(xié)議的特點
SPICE協(xié)議主要被用于Red Hat桌面虛擬化解決方案中,是由Qumranet公司開發(fā)的專門針對遠程桌面?zhèn)鬏數(shù)膮f(xié)議,它作為一個開源協(xié)議,吸收了眾多同類協(xié)議的優(yōu)點,發(fā)展較為迅速,具有良好的性能,在社區(qū)的推動下日益成熟.
SPICE協(xié)議能夠根據(jù)桌面?zhèn)鬏數(shù)膬?nèi)容來進行數(shù)據(jù)傳輸,通過不同的“通道”(Channel)對圖像、視頻、音頻播放和用戶輸入等數(shù)據(jù)進行傳輸,使得SPICE協(xié)議能夠根據(jù)網(wǎng)絡條件對傳輸?shù)臄?shù)據(jù)進行控制,提供QoS(Quality of Service)控制;SPICE協(xié)議直接運行在虛擬機服務器中,這使得SPICE可以直接使用服務器端的硬件資源,它通過虛擬設備接口VDI直接與服務端設備進行交互;同時也使得SPICE協(xié)議和客戶虛擬機操作系統(tǒng)(Guest OS)相互獨立[5].
SPICE協(xié)議在多媒體數(shù)據(jù)的傳輸上具有良好的性能,能夠自動判斷并且可以調(diào)整圖像處理的位置,假如用戶的終端設備具有處理復雜圖像操作的能力,就盡量在用戶的終端進行圖像操作的處理,傳輸圖像處理命令到終端,而不是直接傳輸渲染后的圖像,這樣能夠有效的減少網(wǎng)絡上傳輸?shù)臄?shù)據(jù)量.
2.2 SPICE協(xié)議的消息格式
SPICE協(xié)議定義了一組協(xié)議消息與遠程虛擬設備進行交互,其中包括控制遠程設備、網(wǎng)絡訪問、從遠程設備上獲取輸入設備的輸入信息,以及相應的輸入數(shù)據(jù).除此之外,還定義了一組用于支持遠程服務器遷移的消息.SPICE通信會話根據(jù)傳輸和執(zhí)行的消息類型分多個虛擬通道,主要有以下六個通道:主通道作為主要的SPICE會話通道,顯示通道接收遠程顯示更新,輸入通道發(fā)送鼠標和鍵盤事件,光標通道接收指針形狀和位置,播放通道接收音頻流,錄音通道發(fā)送客戶端音頻輸入.
SPICE協(xié)議以RedDateHeader開始并指明消息類型,消息類型由type指明,當sub_list的值不為0時,表示該消息后帶有子消息,當消息中包含有子消息時,子消息會在主消息被處理之前按照順序先被處理.消息體在RedDateHeader后面,表示主消息所包含的數(shù)據(jù),用size表示它的大小.RedSubMessageList主要包含子消息數(shù)量和子消息數(shù)組,其中type 表示子消息的類型.
表2 SPICE協(xié)議的消息格式
RedDateHeader RedSubMessagesList RedSubMessage
SPICE協(xié)議中的RedDateHeader結(jié)構(gòu)體定義如下:
typedef structSPICE_ATTR_PACKED SpiceDataHeader {
uint64_t serial; //消息的序列號.從1開始,后續(xù)逐漸增加
uint16_t type; //消息類型
uint32_t size; //消息體的大小,不是0,就是sub_list的實際大小
uint32_t sub_list;//后續(xù)數(shù)據(jù)的大小
}SpiceDataHeader.
2.3 協(xié)議連接的建立
SPICE協(xié)議是由客戶端發(fā)起通信連接會話.其過程如圖2所示.SPICE協(xié)議中由主通道負責連接會話,客戶端首先向服務器發(fā)送RedLinkMess消息,服務器收到RedLinkMess消息后,會向客戶端回應RedLinkReply消息,并生成RSA密鑰對,同時將公鑰發(fā)送給客戶端.客戶端檢查連接的結(jié)果,如果結(jié)果正常,建立一個有效的連接,使用公鑰將用戶密碼進行加密之后發(fā)送到服務端,在服務器端完成解密,連接完成之后將連接的結(jié)果發(fā)送到客戶端.
圖2 SPICE協(xié)議連接建立
RedLinkMess的定義如下:
typedef structSPICE_ATTR_PACKED SpiceLinkHeader {
uint32_tmagic;//必須為RED_MAGIC協(xié)議標識
uint32_tmajor_version; //協(xié)議的主版本號
uint32_tminor_version;//協(xié)議的次版本號
uint32_t size;//后續(xù)數(shù)據(jù)的大小
}SpiceLinkHeader;
typedef structSPICE_ATTR_PACKED SpiceLinkMess {
uint32_t connection_id; //連接會話ID,針對一個新的會話,客戶端將此區(qū)域設置為0,創(chuàng)建其他通道連接時,使用分配的會話ID
uint8_t channel_type; //通道的類型
uint8_t channel_id; //要連接的通道ID,同一個ID可能會有多個通道.
uint32_t num_common_caps;//客戶端支持的普通協(xié)議功能的數(shù)量
uint32_t num_channel_caps; //客戶端支持的特殊協(xié)議功能的數(shù)量
uint32_t caps_offset; //這個結(jié)構(gòu)體的大小.相當于size域的偏移量
} SpiceLinkMess;
RedLinkReply的定義:
typedef structSPICE_ATTR_PACKED SpiceLinkHeader {
uint32_tmagic; //必須為RED_MAGIC協(xié)議標識
uint32_tmajor_version; //服務器端的主版本號
uint32_tminor_version;//服務器端的次版本號
uint32_t size; //后續(xù)數(shù)據(jù)的大小
}SpiceLinkHeader;
typedef structSPICE_ATTR_PACKED SpiceLinkReply {
uint32_t error; //版本號協(xié)商結(jié)果,錯誤碼
uint8_t pub_key[SPICE_TICKET_PUBKEY_BYTES]; //存放公鑰
uint32_t num_common_caps;//普通服務器通道功能詞數(shù)量
uint32_t num_channel_caps; //普通服務器通道功能詞數(shù)量
uint32_t caps_offset; //偏移量
}SpiceLinkReply;
2.4 SPICE框架的研究分析
SPICE協(xié)議提供了一個良好的遠程桌面體驗的桌面虛擬化框架,如圖3所示,主要由客戶端(Guest)、服務端(Host)以及相關(guān)組件如QXL設備、運行在Guest操作系統(tǒng)上的服務、Agent代理和QXL顯示驅(qū)動組成,旨在提供高質(zhì)量的遠程虛擬桌面訪問;SPICE協(xié)議依賴于KVM(Kernel-based Virtualmachine),并與KVM緊密聯(lián)系在一起,它的顯示內(nèi)容是由模擬顯卡提供的[6].
Spice服務器端(Host)基于虛擬化環(huán)境QEMU/KVM,客戶機(Guest)直接位于服務器端,Spice Server負責與客戶端之間的通信,位于QEMU上層,嵌入在QEMU中的設備(Devices,即SPICE Devices)包括QXL設備(用于提高遠程顯示性能)和VDI 接口設備,(定義了一套VDI接口),Guest處在虛擬化的平臺環(huán)境中,設備驅(qū)動(SPICE Drivers)安裝在Guest上,SPICE Agent運行在Guest操作系統(tǒng)上,是一個可選模塊,與顯示配置、鼠標位置和形態(tài)以及剪切板有關(guān);SPICE Server一方面通過SPICE協(xié)議中的多虛擬通道與遠端的SPICE Client進行通信,另一方面也通過VDI Port和QEMU進行交互[7].
圖3 基于SPICE協(xié)議的桌面虛擬化框架
3.1 客戶端的總體框架
客戶端的架構(gòu)如圖4所示,主要可以分為兩個模塊,一個是C語言開發(fā)的協(xié)議處理模塊,另一個是Java語言開發(fā)的用戶交互模塊[8].
圖4 客戶端總體框架
3.2 實驗結(jié)果分析
實驗平臺為小米2S手機,搭載的是Android OS 4.3操作系統(tǒng),處理器為主頻1.7GHz的高通 驍龍Snapdragon APQ8064Pro.在局域網(wǎng)環(huán)境中,通過客戶端能夠連接上搭建在服務器上的虛擬桌面,如圖5所示.在Android客戶端上能夠文檔編輯、網(wǎng)頁瀏覽,視頻播放、游戲等常用操作,如圖6、圖7、圖8所示,能夠滿足基本的辦公的需求.
圖5 虛擬桌面
圖6 瀏覽網(wǎng)頁
圖7 游戲操作
圖8 視頻播放
本文首先介紹了桌面?zhèn)鬏攨f(xié)議,然后分析了SPICE協(xié)議及其框架,最后對Android客戶端進行了簡要的分析介紹.Android云桌面客戶端能夠適用于多種移動設備,可以提高云桌面的靈活性,有較大的實用價值.參 考 文 獻
[1] Schlosser D,Binzenhofer A,Staehle B.Performance Comparison of Windows-based Thin-client Architectures[C].Proc of Australasian Telecommunication Networks and Applications Conference,2008.
[2] 徐 浩,蘭雨晴.基于SPICE協(xié)議的桌面虛擬化技術(shù)研究與改進方案[J].計算機工程與科學,2013,12:20-25.
[3] Fok A C F,Lecroart B,Chan E.An Adaptive Approach to Optimize Thin Client Protocols[C].Proc of Future Network andmobile Summit 2010Conference,2010.
[4] 李 博.基于SPICE協(xié)議的桌面虛擬化客戶端的設計與實現(xiàn)[D].華南理工大學碩士學位論文,2012.
[5] 賴孫榮.虛擬桌面框架Spice剖析及其客戶端的設計與實現(xiàn)[D].華南理工大學碩士學位論文,2012.
[6] 徐燕雯.基于KVM的桌面虛擬化架構(gòu)設計與實現(xiàn)[D].上海交通大學碩士學位論文,2012.
[7] 陳 權(quán).Android終端玩大型電腦游戲的一種實現(xiàn)方法[D].電子科技大學碩士學位論文,2013.
[8] 袁 野,何 嘉.基于Android的云桌面客戶端關(guān)鍵技術(shù)研究與實現(xiàn)[J].計算機應用,2013,S1:26-28.
Research on Android Cloud Desktop Client Based on SPICE Protocol
WANG Ning,WANG Hao-jie,QU Xi-long
(College of Computer and Communication,Hunan Institute of Engineering,Xiangtan 411104,China)
Desktop virtualization technology,as an important cloud resources deliverymethod,decoupling the user's desktop environment and terminal device,and with application virtualization technology,begins to provide users with anytime,anywhere desktop office environment.Desktop virtualization’s core technology is desktop transfer protocol.On the basis of virtualization,desktop transfer protocol is introduced.The SPICE protocol and its framework are analyzed.With these Android client of SPICE protocol can have an access to the cloud desktop through the client.
SPICE protocol; desktop virtualization; Android terminal; cloud desktop
2015-11-25基金項目:2014年普通高等學校教學改革研究項目(414);湖南省自科基金資助項目(2016JJ2040).作者簡介:王 寧(1982-),男,碩士,講師,研究方向:計算機網(wǎng)絡.
TP311
A
1671-119X(2016)02-0033-04