基于KVM虚拟桌面的透明消息通道设计
2014-06-06崔竞松贺汇林
崔竞松,何 松,郭 迟,贺汇林
(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 概述
目前业界已经出现各种不同类型的云管理平台,随着这些云平台功能的不断完善,在平台的正常运行过程中,经常会产生大量的管理消息需要即时通知给云平台中的虚拟机终端用户[1],如通知虚拟机租户其实时的消费信息;另一方面,当前已经出现了一系列部署在虚拟机监视器(Virtual MachineMonitor,VMM)层的虚拟机安全监控套件,当发现虚拟机系统内部存在安全隐患时,如检测到虚拟机流量异常、遭受病毒木马攻击时,需要实时通知使用该虚拟机的终端用户,等待用户的交互选择以进行下一步的安全处理。这些都需要云管理平台和虚拟机终端用户进行实时通信。为此,本文提出构建一条对虚拟机自身系统透明的,可在云管理平台和虚拟机终端用户间双向交互的消息通道。其中,对虚拟机自身系统透明是指不需要在虚拟机系统内部安装任何插件或客户端,也不需要对虚拟机系统做任何改动。
2 相关技术
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 基于KVM的透明消息通道设计
本文设计方案主要分为消息转换模块、消息发送模块、消息反馈接收模块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 实验与测试
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 云服务提供节点接收到的终端用户反馈操作内容
5 结束语
本文对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