崔競松,何 松,郭 遲,賀匯林
(1.武漢大學a.計算機學院;b.空天信息安全與可信計算教育部重點實驗室,武漢430072; 2.武漢大學衛星定位導航技術研究中心,武漢430079)
基于KVM虛擬桌面的透明消息通道設計
崔競松1a,1b,何 松1a,郭 遲2,賀匯林1a
(1.武漢大學a.計算機學院;b.空天信息安全與可信計算教育部重點實驗室,武漢430072; 2.武漢大學衛星定位導航技術研究中心,武漢430079)
云管理平臺和虛擬機終端用戶間的通信一般采用代理軟件或插件,便捷性和抗干擾能力較低。針對該問題,利用基于內核的虛擬機(KVM)虛擬桌面,提出一種云服務提供節點(虛擬機所在物理主機)和虛擬機終端用戶之間雙向交互的透明消息通道設計方案。在云管理平臺中建立消息控制端,用于接收和處理服務節點發往虛擬機終端用戶的消息,并將消息轉換為圖像,使圖像內容以位圖像素數據格式的方式讀出到特定文件中,作為消息發送模塊的消息來源。通過修改KVM虛擬化平臺中Qemu-KVM集成的VNC Server端源碼,在源碼中添加消息發送模塊和反饋接收模塊,將消息集成融入到虛擬機桌面圖像中,并對VNC Client遠程終端反饋的消息進行處理,從而得到一條對虛擬機自身系統透明的,可在云平臺和終端用戶間雙向交互的消息通道。實驗結果驗證了該設計方案的可行性。
消息轉換;消息傳輸;透明通道;虛擬網絡計算協議;虛擬桌面;基于內核的虛擬機
目前業界已經出現各種不同類型的云管理平臺,隨著這些云平臺功能的不斷完善,在平臺的正常運行過程中,經常會產生大量的管理消息需要即時通知給云平臺中的虛擬機終端用戶[1],如通知虛擬機租戶其實時的消費信息;另一方面,當前已經出現了一系列部署在虛擬機監視器(Virtual MachineMonitor,VMM)層的虛擬機安全監控套件,當發現虛擬機系統內部存在安全隱患時,如檢測到虛擬機流量異常、遭受病毒木馬攻擊時,需要實時通知使用該虛擬機的終端用戶,等待用戶的交互選擇以進行下一步的安全處理。這些都需要云管理平臺和虛擬機終端用戶進行實時通信。為此,本文提出構建一條對虛擬機自身系統透明的,可在云管理平臺和虛擬機終端用戶間雙向交互的消息通道。其中,對虛擬機自身系統透明是指不需要在虛擬機系統內部安裝任何插件或客戶端,也不需要對虛擬機系統做任何改動。
2.1 研究現狀
目前,在云管理平臺和虛擬機終端用戶之間進行實時通信主要有以下2種方式[2-3]:
(1)在云管理端和虛擬機系統內部分別安裝通信軟件服務端和客戶端,將傳統的服務端/客戶端通信方式應用到云管理平臺中的物理機和虛擬機之間。這種方式需要在虛擬機系統內部安裝通信軟件插件或客戶端。由于終端用戶對虛擬機系統擁有完全控制權,如果用戶選擇重裝系統或者清理掉該插件就可能使通信軟件客戶端功能失效,因此這種方式的抗用戶干擾性較低。
(2)直接在云管理端機器和虛擬機終端用戶所在機器上分別安裝通信軟件服務端和客戶端,即在物理機之間采用傳統的服務端/客戶端通信方式。這種方式對客戶端平臺有具體的要求,它受限于用戶所在的系統,需要針對用戶終端安裝不同客戶端,不具備云平臺虛擬機遠程控制功能使用過程中的便捷性和易用性。
為了更好地實現云平臺和虛擬機終端用戶間交互通信,本文提出構建一條對虛擬機系統透明的消息通道。通過修改云平臺中采用的虛擬機遠程桌面控制[4]的軟件服務端,將待發送消息集成融入到虛擬機桌面圖像中,然后一起發送給終端用戶使用的遠程桌面控制軟件客戶端[5]。這種方式不需要在虛擬機系統內部安裝任何插件或者通信客戶端,即該消息通道對虛擬機自身系統是透明的,同時這種方式也不需要在終端用戶機器上安裝任何插件或者通信客戶端,該方式對原虛擬機遠程桌面控制軟件的適用范圍是無損的。
2.2 KVM和VNC相關技術
基于內核的虛擬機 (Kernel-based Virtual Machine,KVM)是一款基于GPL授權的開源虛擬機管理軟件。它最早由以色列的Qumranet公司開發, 2007年2月被集成到Linux 2.6.20內核版本中,開始正式成為內核的一部分[6]。2011年5月,隨著IBM、Red Hat、HP、SUSE、Intel等公司聯合成立致力于促進基于內核的虛擬機(KVM)等開放虛擬化技術應用的開放虛擬化聯盟(Open Virtualization Alliance)KVM虛擬化技術已經成為了主流的虛擬化平臺之一[7]。
虛擬網絡計算(Virtual Network Computing, VNC)是一種優秀的開源輕量型的遠程計算機控制軟件。它最早是由英國劍橋大學AT&T實驗室設計并開發,使用了GPL授權,任何個人或機構都可以免費獲取該軟件[8]。VNC又是一種遠程顯示系統,它能將完整的系統桌面窗口界面通過網絡傳輸到另一臺異地的計算機屏幕上,用戶可以從Internet上的任何地方使用Windows、Linux、Palm、Macintosh、智能手機等終端來瀏覽訪問。
QEMU-KVM中VNC遠程桌面控制功能實現是基于遠程幀緩沖(Remote Frame Buffer,RFB)協議,在服務端和客戶端之間傳送虛擬機系統實時桌面圖像信息[9]。本文設計以VNC為基礎,通過在云服務提供節點上添加消息控制模塊以及修改KVM虛擬化解決方案中QEMU-KVM集成的VNC Server端源碼(即修改VNC服務端和客戶端通信過程中的虛擬機系統實時桌面圖像信息),在云管理平臺和虛擬機遠程終端用戶間建立一條對虛擬機自身系統透明的可雙向交互的消息通道。
本文設計方案主要分為消息轉換模塊、消息發送模塊、消息反饋接收模塊3個模塊。其中,消息轉換模塊位于云服務提供節點上,消息發送模塊和消息反饋接收模塊位于VNC Server源碼中。其具體實現是通過修改VNC服務端源碼,在VNC服務端源碼中添加消息發送模塊和反饋接收模塊,實現無代理、無插件的消息傳輸交互。該方案具備以下功能特性:(1)服務端消息推送;(2)對終端用戶的反饋進行識別。本文方案的總體設計架構如圖 1所示。

圖1 消息通道設計方案總體架構
3.1 消息轉換模塊
在云平臺中,管理員和用戶間交互的原始消息通常都是簡單的文本或者圖片等格式,而在VNC協議的客戶端和服務端通信過程中,這些格式是不能被直接識別的,因此,在消息通道中便需要一個消息轉換模塊對原始消息進行特定轉換。消息轉換模塊架構如圖2所示。

圖2 消息轉換模塊架構
消息轉換模塊主要負責接收云管理平臺主控節點管理消息和對接收到的消息進行轉換以使消息發送模塊能夠識別。該模塊向云管理平臺提供一個接口以接收云管理平臺或云管理員發送過來欲最終發往虛擬機終端用戶的消息,由于接收到的消息是文本字符串或圖片和字符串有機組合的形式,而VNC服務端和客戶端之間通信是通過圖像進行傳送,因此消息轉換模塊需要將文本字符串消息轉換成圖像,之后將圖像內容以位圖像素數據格式的方式讀出到特定文件中,作為消息發送模塊的消息來源;同時在收到消息反饋接收模塊返回的表示終端用戶操作的坐標后,根據坐標將其轉換成對應的具體操作,最終將終端用戶反饋結果回送云管理平臺或云管理員。
李路軍在講述這些社會服務、公益事業時,反復強調一個觀點:做這些社會活動,并不是為了向對方傳播宗教信仰,而是為了實實在在幫助有需要的人群。
3.2 消息發送模塊
消息發送模塊位于QEMU-KVM中VNC服務端中,主要用于將消息轉換模塊生成的圖像像素數據發送到VNC客戶端。在QEMU-KVM模塊中,主要使用結構體VncState來存儲VNC連接通信時虛擬機的所有桌面信息,包括服務端虛擬機圖像狀態、寬高、終端用戶選擇的寬高、通信過程中所使用的各種緩沖區和加密過程變量等[10],本文設計中消息發送模塊主要通過修改VncState結構體中output緩沖區內容而實現向客戶端發送消息的功能。在消息發送模塊中,又分為消息圖像讀取、圖像轉換、圖像添加3個部分。消息發送模塊架構如圖3所示。

圖3 消息發送模塊架構
具體過程如下:
(1)消息圖像像素讀取:在消息轉換模塊生成消息窗口圖像的像素數據并將之存入特定文件后,消息發送模塊中圖像像素讀取部分首先抓取當次VNC連接的端口號,然后根據該端口號去讀取對應的特定路徑下的通道消息像素數據,包括消息窗口的寬、高、像素格式、像素數據內容。
(2)消息圖像像素轉換:該部分首先獲取當次VNC通信會話過程中終端用戶選擇的像素格式,然后和上文圖像像素讀取部分得到的像素格式進行對比,如果不同,則按照用戶選擇的格式對上文讀取的圖像像素數據進行轉換,如用戶選擇的是8位,而消息圖像像素為32位,則根據圖像轉換原理將32位像素數據轉換為8位數據。
(3)消息圖像數據添加:在將圖像數據轉換為當次VNC連接相同格式后,便開始在VNC原始桌面圖像幀緩沖更新信息幀發送之前,結合該幀緩沖更新信息幀數據結構將消息圖像像素數據添加到信息幀后面。

表1 幀緩沖更新信息的幀數據結構
VNC協議采用的編碼格式主要有Raw編碼、RRE編碼、CoRRE編碼、ZRLE編碼、Hextile編碼、CopyRect編碼等[11-12],本文的消息通道圖像數據采用Raw編碼,即未經處理的原始編碼。以編碼格式為Raw、8位像素格式的幀緩沖更新幀為例,原始幀和修改后的幀數據結構如表2和表3所示。

表2 原始幀數據結構

表3 修改后的幀數據結構
幀緩沖更新信息幀第3、4字節表示更新矩形區域個數,修改時將其加1,第5字節~第16字節表示矩形的x,y坐標、矩形寬高、編碼格式,之后便是矩形像素內容,再之后便是下一個矩形的表示信息。經此修改后的信息幀將包括原始VNC圖像信息以及所需要發送的消息圖像信息,即實現了透明消息通道的推送功能。
3.3 消息反饋接收模塊
該模塊負責接收遠程終端用戶對具體通道消息的選擇反饋,并將結果傳送給云管理平臺。在本設計中,為了實現針對消息通道的交互通信,擬通過修改VNC Server端代碼以在通道消息顯示期間截取本次連接從客戶端發送過來的交互信息幀,識別用戶操作類型并對之進行相應處理。該模塊的具體流程如圖4所示。

圖4 消息反饋接收模塊流程
步驟1 在通道消息顯示期間截取當次會話連接從客戶端發送過來的交互信息幀。
步驟2 根據該信息幀中鼠標操作坐標的位置來判斷此次操作用戶針對的對象(通道消息或訪問系統),若鼠標操作在消息窗口所在的矩形區域內,則表明用戶鼠標操作的對象是消息通道窗口。
步驟3 在收到針對通道消息的交互信息幀后,將操作的具體內容發送往云服務提供節點上的消息轉換模塊程序,由消息轉換模塊將最終的內容發往通道消息的原始發送端(云管理平臺控制節點)。
步驟4 將該交互信息幀更改為更新當前消息窗口所在矩形區域的圖像更新信息幀,產生消息區域更新事件,更新消息窗口所在屏幕區域,完成一次交互。
4.1 測試環境
云服務提供節點(虛擬機實際所在的物理主機)環境配置如表4所示。測試過程中使用的終端用戶節點(包括物理PC和智能手機移動終端)的環境配置如表5所示。

表4 云服務提供節點環境配置

表5 終端用戶節點環境配置
4.2 測試場景
在云服務提供節點運行虛擬機在線監控程序,掃描到虛擬機系統內部存在安全隱患,需要提醒用戶進行殺毒處理并提升防護級別。
在云管理平臺選擇需要進行通信的虛擬機,調用消息通道接口,輸入通信內容,并使用窗口布局模版,執行消息通道程序后,產生了寬為200×100像素的消息窗口圖像,如圖5所示。VNC客戶端通過瀏覽器或VNC Viewer連接至VNC Server。在物理PC終端上使用瀏覽器看到的虛擬機系統桌面如圖6所示。虛擬機終端用戶看到消息后,可進行選擇操作,與云平臺管理員進行交互。單擊通道消息窗口上的Yes控件區域后,會發現通道消息窗口消失,原VNC窗口無變化。與此同時,云服務提供節點得到消息轉換模塊解析后的用戶操作內容“Yes”,如圖7所示。通過以上操作,即完成了云管理平臺與虛擬機終端用戶間的一次通信交互。

圖5 消息窗口圖像

圖6 物理PC上包含通道消息的虛擬機桌面

圖7 云服務提供節點接收到的終端用戶反饋操作內容
本文對KVM虛擬化平臺中的VNC遠程控制功能進行改進,提出該消息通道方案的實現思路,并設計和實現了該通道方案的原型系統,對其功能和有效性進行了測試和分析。實驗結果表明,本文設計的消息通道方案是可行的,能在不對虛擬機系統內部進行任何改動,也不在虛擬機系統或者遠程用戶終端上安裝任何通信插件或客戶端的情況下,實現云管理平臺與虛擬機終端用戶間的實時消息傳輸。本文方案的消息發送模塊中,通道消息窗口圖像數據是以RAW編碼方式直接發送,下一步工作將對Zlib編碼方式進行研究,以減少服務端和客戶端之間傳送的數據量,提高通信的效率和用戶體驗的流暢性。
[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虛擬機的安全通信機制研究[D].鄭州:解放軍信息工程大學,2010.
[3] 嚴月強.桌面云平臺通信模塊的設計與實現[D].廣州:中山大學,2013.
[4] 劉 昌,馮 炎.桌面虛擬化及其在知識型企業的應用方案[J].中國信息界,2011,(8):58-60.
[5] 劉 堅,余 綜.VNC多媒體數據實時傳輸的研究與實現[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] 梁飛蝶,李錦濤,史紅周.虛擬網絡計算(VNC)協議中的編碼方法[J].計算機應用,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協議跨平臺網絡遠程監控技術的研究與實現[D].北京:北京化工大學,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”計劃基金資助項目(2013AA12A206);國家自然科學基金資助項目(41104010,91120002,61170026)。
崔競松(1975-),男,副教授、博士,主研方向:信息安全,云安全;何 松,碩士研究生;郭 遲(通訊作者),講師、博士;賀匯林,碩士研究生。
2014-02-12
2014-03-17E-mail:guochi@whu.edu.cn