崔競松,何 松,郭 遲,賀匯林
(1.武漢大學(xué)a.計(jì)算機(jī)學(xué)院;b.空天信息安全與可信計(jì)算教育部重點(diǎn)實(shí)驗(yàn)室,武漢430072; 2.武漢大學(xué)衛(wèi)星定位導(dǎo)航技術(shù)研究中心,武漢430079)
基于KVM虛擬桌面的透明消息通道設(shè)計(jì)
崔競松1a,1b,何 松1a,郭 遲2,賀匯林1a
(1.武漢大學(xué)a.計(jì)算機(jī)學(xué)院;b.空天信息安全與可信計(jì)算教育部重點(diǎn)實(shí)驗(yàn)室,武漢430072; 2.武漢大學(xué)衛(wèi)星定位導(dǎo)航技術(shù)研究中心,武漢430079)
云管理平臺和虛擬機(jī)終端用戶間的通信一般采用代理軟件或插件,便捷性和抗干擾能力較低。針對該問題,利用基于內(nèi)核的虛擬機(jī)(KVM)虛擬桌面,提出一種云服務(wù)提供節(jié)點(diǎn)(虛擬機(jī)所在物理主機(jī))和虛擬機(jī)終端用戶之間雙向交互的透明消息通道設(shè)計(jì)方案。在云管理平臺中建立消息控制端,用于接收和處理服務(wù)節(jié)點(diǎn)發(fā)往虛擬機(jī)終端用戶的消息,并將消息轉(zhuǎn)換為圖像,使圖像內(nèi)容以位圖像素?cái)?shù)據(jù)格式的方式讀出到特定文件中,作為消息發(fā)送模塊的消息來源。通過修改KVM虛擬化平臺中Qemu-KVM集成的VNC Server端源碼,在源碼中添加消息發(fā)送模塊和反饋接收模塊,將消息集成融入到虛擬機(jī)桌面圖像中,并對VNC Client遠(yuǎn)程終端反饋的消息進(jìn)行處理,從而得到一條對虛擬機(jī)自身系統(tǒng)透明的,可在云平臺和終端用戶間雙向交互的消息通道。實(shí)驗(yàn)結(jié)果驗(yàn)證了該設(shè)計(jì)方案的可行性。
消息轉(zhuǎn)換;消息傳輸;透明通道;虛擬網(wǎng)絡(luò)計(jì)算協(xié)議;虛擬桌面;基于內(nèi)核的虛擬機(jī)
目前業(yè)界已經(jīng)出現(xiàn)各種不同類型的云管理平臺,隨著這些云平臺功能的不斷完善,在平臺的正常運(yùn)行過程中,經(jīng)常會(huì)產(chǎn)生大量的管理消息需要即時(shí)通知給云平臺中的虛擬機(jī)終端用戶[1],如通知虛擬機(jī)租戶其實(shí)時(shí)的消費(fèi)信息;另一方面,當(dāng)前已經(jīng)出現(xiàn)了一系列部署在虛擬機(jī)監(jiān)視器(Virtual MachineMonitor,VMM)層的虛擬機(jī)安全監(jiān)控套件,當(dāng)發(fā)現(xiàn)虛擬機(jī)系統(tǒng)內(nèi)部存在安全隱患時(shí),如檢測到虛擬機(jī)流量異常、遭受病毒木馬攻擊時(shí),需要實(shí)時(shí)通知使用該虛擬機(jī)的終端用戶,等待用戶的交互選擇以進(jìn)行下一步的安全處理。這些都需要云管理平臺和虛擬機(jī)終端用戶進(jìn)行實(shí)時(shí)通信。為此,本文提出構(gòu)建一條對虛擬機(jī)自身系統(tǒng)透明的,可在云管理平臺和虛擬機(jī)終端用戶間雙向交互的消息通道。其中,對虛擬機(jī)自身系統(tǒng)透明是指不需要在虛擬機(jī)系統(tǒng)內(nèi)部安裝任何插件或客戶端,也不需要對虛擬機(jī)系統(tǒng)做任何改動(dòng)。
2.1 研究現(xiàn)狀
目前,在云管理平臺和虛擬機(jī)終端用戶之間進(jìn)行實(shí)時(shí)通信主要有以下2種方式[2-3]:
(1)在云管理端和虛擬機(jī)系統(tǒng)內(nèi)部分別安裝通信軟件服務(wù)端和客戶端,將傳統(tǒng)的服務(wù)端/客戶端通信方式應(yīng)用到云管理平臺中的物理機(jī)和虛擬機(jī)之間。這種方式需要在虛擬機(jī)系統(tǒng)內(nèi)部安裝通信軟件插件或客戶端。由于終端用戶對虛擬機(jī)系統(tǒng)擁有完全控制權(quán),如果用戶選擇重裝系統(tǒng)或者清理掉該插件就可能使通信軟件客戶端功能失效,因此這種方式的抗用戶干擾性較低。
(2)直接在云管理端機(jī)器和虛擬機(jī)終端用戶所在機(jī)器上分別安裝通信軟件服務(wù)端和客戶端,即在物理機(jī)之間采用傳統(tǒng)的服務(wù)端/客戶端通信方式。這種方式對客戶端平臺有具體的要求,它受限于用戶所在的系統(tǒng),需要針對用戶終端安裝不同客戶端,不具備云平臺虛擬機(jī)遠(yuǎn)程控制功能使用過程中的便捷性和易用性。
為了更好地實(shí)現(xiàn)云平臺和虛擬機(jī)終端用戶間交互通信,本文提出構(gòu)建一條對虛擬機(jī)系統(tǒng)透明的消息通道。通過修改云平臺中采用的虛擬機(jī)遠(yuǎn)程桌面控制[4]的軟件服務(wù)端,將待發(fā)送消息集成融入到虛擬機(jī)桌面圖像中,然后一起發(fā)送給終端用戶使用的遠(yuǎn)程桌面控制軟件客戶端[5]。這種方式不需要在虛擬機(jī)系統(tǒng)內(nèi)部安裝任何插件或者通信客戶端,即該消息通道對虛擬機(jī)自身系統(tǒng)是透明的,同時(shí)這種方式也不需要在終端用戶機(jī)器上安裝任何插件或者通信客戶端,該方式對原虛擬機(jī)遠(yuǎn)程桌面控制軟件的適用范圍是無損的。
2.2 KVM和VNC相關(guān)技術(shù)
基于內(nèi)核的虛擬機(jī) (Kernel-based Virtual Machine,KVM)是一款基于GPL授權(quán)的開源虛擬機(jī)管理軟件。它最早由以色列的Qumranet公司開發(fā), 2007年2月被集成到Linux 2.6.20內(nèi)核版本中,開始正式成為內(nèi)核的一部分[6]。2011年5月,隨著IBM、Red Hat、HP、SUSE、Intel等公司聯(lián)合成立致力于促進(jìn)基于內(nèi)核的虛擬機(jī)(KVM)等開放虛擬化技術(shù)應(yīng)用的開放虛擬化聯(lián)盟(Open Virtualization Alliance)KVM虛擬化技術(shù)已經(jīng)成為了主流的虛擬化平臺之一[7]。
虛擬網(wǎng)絡(luò)計(jì)算(Virtual Network Computing, VNC)是一種優(yōu)秀的開源輕量型的遠(yuǎn)程計(jì)算機(jī)控制軟件。它最早是由英國劍橋大學(xué)AT&T實(shí)驗(yàn)室設(shè)計(jì)并開發(fā),使用了GPL授權(quán),任何個(gè)人或機(jī)構(gòu)都可以免費(fèi)獲取該軟件[8]。VNC又是一種遠(yuǎn)程顯示系統(tǒng),它能將完整的系統(tǒng)桌面窗口界面通過網(wǎng)絡(luò)傳輸?shù)搅硪慌_異地的計(jì)算機(jī)屏幕上,用戶可以從Internet上的任何地方使用Windows、Linux、Palm、Macintosh、智能手機(jī)等終端來瀏覽訪問。
QEMU-KVM中VNC遠(yuǎn)程桌面控制功能實(shí)現(xiàn)是基于遠(yuǎn)程幀緩沖(Remote Frame Buffer,RFB)協(xié)議,在服務(wù)端和客戶端之間傳送虛擬機(jī)系統(tǒng)實(shí)時(shí)桌面圖像信息[9]。本文設(shè)計(jì)以VNC為基礎(chǔ),通過在云服務(wù)提供節(jié)點(diǎn)上添加消息控制模塊以及修改KVM虛擬化解決方案中QEMU-KVM集成的VNC Server端源碼(即修改VNC服務(wù)端和客戶端通信過程中的虛擬機(jī)系統(tǒng)實(shí)時(shí)桌面圖像信息),在云管理平臺和虛擬機(jī)遠(yuǎn)程終端用戶間建立一條對虛擬機(jī)自身系統(tǒng)透明的可雙向交互的消息通道。
本文設(shè)計(jì)方案主要分為消息轉(zhuǎn)換模塊、消息發(fā)送模塊、消息反饋接收模塊3個(gè)模塊。其中,消息轉(zhuǎn)換模塊位于云服務(wù)提供節(jié)點(diǎn)上,消息發(fā)送模塊和消息反饋接收模塊位于VNC Server源碼中。其具體實(shí)現(xiàn)是通過修改VNC服務(wù)端源碼,在VNC服務(wù)端源碼中添加消息發(fā)送模塊和反饋接收模塊,實(shí)現(xiàn)無代理、無插件的消息傳輸交互。該方案具備以下功能特性:(1)服務(wù)端消息推送;(2)對終端用戶的反饋進(jìn)行識別。本文方案的總體設(shè)計(jì)架構(gòu)如圖 1所示。
圖1 消息通道設(shè)計(jì)方案總體架構(gòu)
3.1 消息轉(zhuǎn)換模塊
在云平臺中,管理員和用戶間交互的原始消息通常都是簡單的文本或者圖片等格式,而在VNC協(xié)議的客戶端和服務(wù)端通信過程中,這些格式是不能被直接識別的,因此,在消息通道中便需要一個(gè)消息轉(zhuǎn)換模塊對原始消息進(jìn)行特定轉(zhuǎn)換。消息轉(zhuǎn)換模塊架構(gòu)如圖2所示。
圖2 消息轉(zhuǎn)換模塊架構(gòu)
消息轉(zhuǎn)換模塊主要負(fù)責(zé)接收云管理平臺主控節(jié)點(diǎn)管理消息和對接收到的消息進(jìn)行轉(zhuǎn)換以使消息發(fā)送模塊能夠識別。該模塊向云管理平臺提供一個(gè)接口以接收云管理平臺或云管理員發(fā)送過來欲最終發(fā)往虛擬機(jī)終端用戶的消息,由于接收到的消息是文本字符串或圖片和字符串有機(jī)組合的形式,而VNC服務(wù)端和客戶端之間通信是通過圖像進(jìn)行傳送,因此消息轉(zhuǎn)換模塊需要將文本字符串消息轉(zhuǎn)換成圖像,之后將圖像內(nèi)容以位圖像素?cái)?shù)據(jù)格式的方式讀出到特定文件中,作為消息發(fā)送模塊的消息來源;同時(shí)在收到消息反饋接收模塊返回的表示終端用戶操作的坐標(biāo)后,根據(jù)坐標(biāo)將其轉(zhuǎn)換成對應(yīng)的具體操作,最終將終端用戶反饋結(jié)果回送云管理平臺或云管理員。
李路軍在講述這些社會(huì)服務(wù)、公益事業(yè)時(shí),反復(fù)強(qiáng)調(diào)一個(gè)觀點(diǎn):做這些社會(huì)活動(dòng),并不是為了向?qū)Ψ絺鞑プ诮绦叛觯菫榱藢?shí)實(shí)在在幫助有需要的人群。
3.2 消息發(fā)送模塊
消息發(fā)送模塊位于QEMU-KVM中VNC服務(wù)端中,主要用于將消息轉(zhuǎn)換模塊生成的圖像像素?cái)?shù)據(jù)發(fā)送到VNC客戶端。在QEMU-KVM模塊中,主要使用結(jié)構(gòu)體VncState來存儲VNC連接通信時(shí)虛擬機(jī)的所有桌面信息,包括服務(wù)端虛擬機(jī)圖像狀態(tài)、寬高、終端用戶選擇的寬高、通信過程中所使用的各種緩沖區(qū)和加密過程變量等[10],本文設(shè)計(jì)中消息發(fā)送模塊主要通過修改VncState結(jié)構(gòu)體中output緩沖區(qū)內(nèi)容而實(shí)現(xiàn)向客戶端發(fā)送消息的功能。在消息發(fā)送模塊中,又分為消息圖像讀取、圖像轉(zhuǎn)換、圖像添加3個(gè)部分。消息發(fā)送模塊架構(gòu)如圖3所示。
圖3 消息發(fā)送模塊架構(gòu)
具體過程如下:
(1)消息圖像像素讀取:在消息轉(zhuǎn)換模塊生成消息窗口圖像的像素?cái)?shù)據(jù)并將之存入特定文件后,消息發(fā)送模塊中圖像像素讀取部分首先抓取當(dāng)次VNC連接的端口號,然后根據(jù)該端口號去讀取對應(yīng)的特定路徑下的通道消息像素?cái)?shù)據(jù),包括消息窗口的寬、高、像素格式、像素?cái)?shù)據(jù)內(nèi)容。
(2)消息圖像像素轉(zhuǎn)換:該部分首先獲取當(dāng)次VNC通信會(huì)話過程中終端用戶選擇的像素格式,然后和上文圖像像素讀取部分得到的像素格式進(jìn)行對比,如果不同,則按照用戶選擇的格式對上文讀取的圖像像素?cái)?shù)據(jù)進(jìn)行轉(zhuǎn)換,如用戶選擇的是8位,而消息圖像像素為32位,則根據(jù)圖像轉(zhuǎn)換原理將32位像素?cái)?shù)據(jù)轉(zhuǎn)換為8位數(shù)據(jù)。
(3)消息圖像數(shù)據(jù)添加:在將圖像數(shù)據(jù)轉(zhuǎn)換為當(dāng)次VNC連接相同格式后,便開始在VNC原始桌面圖像幀緩沖更新信息幀發(fā)送之前,結(jié)合該幀緩沖更新信息幀數(shù)據(jù)結(jié)構(gòu)將消息圖像像素?cái)?shù)據(jù)添加到信息幀后面。
表1 幀緩沖更新信息的幀數(shù)據(jù)結(jié)構(gòu)
VNC協(xié)議采用的編碼格式主要有Raw編碼、RRE編碼、CoRRE編碼、ZRLE編碼、Hextile編碼、CopyRect編碼等[11-12],本文的消息通道圖像數(shù)據(jù)采用Raw編碼,即未經(jīng)處理的原始編碼。以編碼格式為Raw、8位像素格式的幀緩沖更新幀為例,原始幀和修改后的幀數(shù)據(jù)結(jié)構(gòu)如表2和表3所示。
表2 原始幀數(shù)據(jù)結(jié)構(gòu)
表3 修改后的幀數(shù)據(jù)結(jié)構(gòu)
幀緩沖更新信息幀第3、4字節(jié)表示更新矩形區(qū)域個(gè)數(shù),修改時(shí)將其加1,第5字節(jié)~第16字節(jié)表示矩形的x,y坐標(biāo)、矩形寬高、編碼格式,之后便是矩形像素內(nèi)容,再之后便是下一個(gè)矩形的表示信息。經(jīng)此修改后的信息幀將包括原始VNC圖像信息以及所需要發(fā)送的消息圖像信息,即實(shí)現(xiàn)了透明消息通道的推送功能。
3.3 消息反饋接收模塊
該模塊負(fù)責(zé)接收遠(yuǎn)程終端用戶對具體通道消息的選擇反饋,并將結(jié)果傳送給云管理平臺。在本設(shè)計(jì)中,為了實(shí)現(xiàn)針對消息通道的交互通信,擬通過修改VNC Server端代碼以在通道消息顯示期間截取本次連接從客戶端發(fā)送過來的交互信息幀,識別用戶操作類型并對之進(jìn)行相應(yīng)處理。該模塊的具體流程如圖4所示。
圖4 消息反饋接收模塊流程
步驟1 在通道消息顯示期間截取當(dāng)次會(huì)話連接從客戶端發(fā)送過來的交互信息幀。
步驟2 根據(jù)該信息幀中鼠標(biāo)操作坐標(biāo)的位置來判斷此次操作用戶針對的對象(通道消息或訪問系統(tǒng)),若鼠標(biāo)操作在消息窗口所在的矩形區(qū)域內(nèi),則表明用戶鼠標(biāo)操作的對象是消息通道窗口。
步驟3 在收到針對通道消息的交互信息幀后,將操作的具體內(nèi)容發(fā)送往云服務(wù)提供節(jié)點(diǎn)上的消息轉(zhuǎn)換模塊程序,由消息轉(zhuǎn)換模塊將最終的內(nèi)容發(fā)往通道消息的原始發(fā)送端(云管理平臺控制節(jié)點(diǎn))。
步驟4 將該交互信息幀更改為更新當(dāng)前消息窗口所在矩形區(qū)域的圖像更新信息幀,產(chǎn)生消息區(qū)域更新事件,更新消息窗口所在屏幕區(qū)域,完成一次交互。
4.1 測試環(huán)境
云服務(wù)提供節(jié)點(diǎn)(虛擬機(jī)實(shí)際所在的物理主機(jī))環(huán)境配置如表4所示。測試過程中使用的終端用戶節(jié)點(diǎn)(包括物理PC和智能手機(jī)移動(dòng)終端)的環(huán)境配置如表5所示。
表4 云服務(wù)提供節(jié)點(diǎn)環(huán)境配置
表5 終端用戶節(jié)點(diǎn)環(huán)境配置
4.2 測試場景
在云服務(wù)提供節(jié)點(diǎn)運(yùn)行虛擬機(jī)在線監(jiān)控程序,掃描到虛擬機(jī)系統(tǒng)內(nèi)部存在安全隱患,需要提醒用戶進(jìn)行殺毒處理并提升防護(hù)級別。
在云管理平臺選擇需要進(jìn)行通信的虛擬機(jī),調(diào)用消息通道接口,輸入通信內(nèi)容,并使用窗口布局模版,執(zhí)行消息通道程序后,產(chǎn)生了寬為200×100像素的消息窗口圖像,如圖5所示。VNC客戶端通過瀏覽器或VNC Viewer連接至VNC Server。在物理PC終端上使用瀏覽器看到的虛擬機(jī)系統(tǒng)桌面如圖6所示。虛擬機(jī)終端用戶看到消息后,可進(jìn)行選擇操作,與云平臺管理員進(jìn)行交互。單擊通道消息窗口上的Yes控件區(qū)域后,會(huì)發(fā)現(xiàn)通道消息窗口消失,原VNC窗口無變化。與此同時(shí),云服務(wù)提供節(jié)點(diǎn)得到消息轉(zhuǎn)換模塊解析后的用戶操作內(nèi)容“Yes”,如圖7所示。通過以上操作,即完成了云管理平臺與虛擬機(jī)終端用戶間的一次通信交互。
圖5 消息窗口圖像
圖6 物理PC上包含通道消息的虛擬機(jī)桌面
圖7 云服務(wù)提供節(jié)點(diǎn)接收到的終端用戶反饋操作內(nèi)容
本文對KVM虛擬化平臺中的VNC遠(yuǎn)程控制功能進(jìn)行改進(jìn),提出該消息通道方案的實(shí)現(xiàn)思路,并設(shè)計(jì)和實(shí)現(xiàn)了該通道方案的原型系統(tǒng),對其功能和有效性進(jìn)行了測試和分析。實(shí)驗(yàn)結(jié)果表明,本文設(shè)計(jì)的消息通道方案是可行的,能在不對虛擬機(jī)系統(tǒng)內(nèi)部進(jìn)行任何改動(dòng),也不在虛擬機(jī)系統(tǒng)或者遠(yuǎn)程用戶終端上安裝任何通信插件或客戶端的情況下,實(shí)現(xiàn)云管理平臺與虛擬機(jī)終端用戶間的實(shí)時(shí)消息傳輸。本文方案的消息發(fā)送模塊中,通道消息窗口圖像數(shù)據(jù)是以RAW編碼方式直接發(fā)送,下一步工作將對Zlib編碼方式進(jìn)行研究,以減少服務(wù)端和客戶端之間傳送的數(shù)據(jù)量,提高通信的效率和用戶體驗(yàn)的流暢性。
[1] Baskar G V,Kumar N S,Karthick N.Research Analysis of Cloud Computing[J].International Journal of Computer Science and Mobile Computing,2013,2(5):313-316.
[2] 黃良良.基于VMX虛擬機(jī)的安全通信機(jī)制研究[D].鄭州:解放軍信息工程大學(xué),2010.
[3] 嚴(yán)月強(qiáng).桌面云平臺通信模塊的設(shè)計(jì)與實(shí)現(xiàn)[D].廣州:中山大學(xué),2013.
[4] 劉 昌,馮 炎.桌面虛擬化及其在知識型企業(yè)的應(yīng)用方案[J].中國信息界,2011,(8):58-60.
[5] 劉 堅(jiān),余 綜.VNC多媒體數(shù)據(jù)實(shí)時(shí)傳輸?shù)难芯颗c實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2012,33(7):2706-2710.
[6] Gold B,Linde R R,Cudney P F.KVM/370 in Retrospect[C]//Proc.of IEEE Symposium on Security and Privacy.San Francisco,USA:IEEE Press,2013:9-11.
[7] Kivity A,Kamay Y,Laor D,et al.KVM:The Linux Virtual Machine Monitor[C]//Proc.of Linux Symposium.Ottawa,Canada:[s.n.],2007:225-230.
[8] Jang Seung-Ju.Design of the Remote Management System in the Windows Operating System[J].International Journal of Computer Science and Network Security, 2011,11(11):38-42.
[9] 梁飛蝶,李錦濤,史紅周.虛擬網(wǎng)絡(luò)計(jì)算(VNC)協(xié)議中的編碼方法[J].計(jì)算機(jī)應(yīng)用,2004,24(6):93-95.
[10] Karger P A,Safford D R.I/O for Virtual Machine Monitors:Security and Performance Issues[J].IEEE Security and Privacy Magazine,2008,6(5):16-23.
[11] Richardson T.The RFB Protocol[EB/OL].[2013-08-10].http://www.realvnc.com/docs/rfbprotocol.pdf.
[12] 劉 治.基于RFB協(xié)議跨平臺網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控技術(shù)的研究與實(shí)現(xiàn)[D].北京:北京化工大學(xué),2009.
編輯 金胡考
Design of Transparent Message Channel Based on KVM Virtual Desktop
CUI Jing-song1a,1b,HE Song1a,GUO Chi2,HE Hui-lin1a
(1a.Computer School;1b.Key Laboratory of Aerospace Information and Trusted Computing,Ministry of Education, Wuhan University,Wuhan 430072,China;2.Global Navigation Satellite System Research Center, Wuhan University,Wuhan 430079,China)
Cloud management platform and end-users of virtual machine generally use proxy software or plug-ins to communicate with each other,but the convenience and anti-jamming capabilities of this method is poor.Aiming at this problem,this paper proposes a design scheme for transparent message channel between the node provided by cloud service (the physical host that virtual machine lies in)and the end-user of virtual machine based on virtual desktop on Kernelbased Virtual Machine(KVM).It builds message control terminal in cloud management platform to receive and process messages that service node sends to end-users of virtual machine,and transforms the messages into images,reads the content of images into specified file in the form of bitmap pixel data as the source of message sending module.It adds message sending module and feedback receiving module into source codes by modifying the source code of Virtual Network Computing(VNC)server-side integrated by Qemu-KVM of KVM virtualization platform,integrates the messages into desktop image of the virtual machine,and processes the feedback from the remote terminal of VCN client. Then it builds a two-way interactive message channel between the cloud platform and the end-users which is transparent for virtual machine itself.Experimental result verifies that this scheme is feasible.
message transformation;message transmission;transparent channel;Virtual Network Computing(VNC) protocol;virtual desktop;Kernel-based Virtual Machine(KVM)
1000-3428(2014)09-0077-05
A
TP393.08
10.3969/j.issn.1000-3428.2014.09.016
國家“863”計(jì)劃基金資助項(xiàng)目(2013AA12A206);國家自然科學(xué)基金資助項(xiàng)目(41104010,91120002,61170026)。
崔競松(1975-),男,副教授、博士,主研方向:信息安全,云安全;何 松,碩士研究生;郭 遲(通訊作者),講師、博士;賀匯林,碩士研究生。
2014-02-12
2014-03-17E-mail:guochi@whu.edu.cn