随着计算机技术的飞速发展, 传统的PC桌面面临着诸多急需解决的问题. 比如, 计算机的升级换代和管理维护方面, 都需要投入大量的资金; 普通办公人员只是日常业务办公, 会导致计算机CPU资源浪费严重; 由于系统安全性较差, 还存在容易受到网络或其他潜在的病毒攻击的风险. 因此, 在步入云时代的今天, 桌面虚拟化[1]通过将虚拟化技术和云计算技术相结合, 以及将用户的终端设备与桌面环境解耦合, 所有用户的桌面环境均存放在服务器端, 进行统一管理. 用户使用终端设备时, 通过输入用户名和密码等登录信息实现随时随地的接入到虚拟主机上的个人桌面[2]. 虚拟桌面很大程度上降低了运维和管理成本, 系统的集中化管理, 有效的提高了数据安全性和资源利用率.
2 桌面传输协议 2.1 桌面传输协议原理桌面传输协议用于服务器和用户终端之间进行通信连接, 主要完成从服务器到用户终端的图像、音频、视频的传输以及从用户终端到服务器输入信息的传输, 包括鼠标、键盘、外设等输入信息[3]. 旨在为用户提供一个与本地办公无差异的桌面办公环境. 桌面传输协议原理如图1所示.
![]() |
图 1 桌面传输协议原理 |
2.2 桌面传输协议对比
桌面虚拟化技术的核心是桌面传输协议[4], 当前主流的虚拟桌面厂商已经有了各自的桌面传输协议, 主要包括Citrix公司的 ICA 协议、VMware 公司的 PCoIP 协议、Microsoft 公司的 RDP 协议以及 Redhat 公司 KVM 的开源 SPICE 协议, 各主流传输协议的对比分析结果如表1所示.
![]() |
表 1 主流虚拟桌面传输协议比较 |
从表中可以看出, 这些传输协议都存在一定的不足, 不能完全适用于所有的场景. 传输带宽要求的高低直接影响了远程服务访问的流畅性.
ICA采用具有极高处理性能和数据压缩比的压缩算法, 降低了对网络带宽的需求[5], 但是它在图像和视频的画质方面仍不是很流畅. PCoIP 协议采用的是分层渐进的方式在用户终端显示桌面内容, 首先传送给用户一个完整但是比较模糊的图像, 在此基础上逐步精化, 提升用户的视觉体验, 但是PCoIP 对于用户语音上传的支持以及视频播放尚存缺陷. RDP协议缺乏跨平台性, 综合体验效果不如另外三个. SPICE协议对带宽的要求适中, 是所有协议中综合体验效果做好的.
SPICE协议能够直接与服务器上的虚拟机进行通信, 是一项高性能、动态的自适应远程网络协议, 能够自适应地感知用户端设备的处理能力, 然后在用户的终端上进行图像渲染操作, 为终端用户带来接近于本地桌面的体验.
2.3 影响桌面传输协议性能的重要因素 2.3.1 图形数据格式在虚拟桌面传输图片中, 图形数据的处理是至关重要的, 是影响用户体验的关键因素. 用户终端需要从服务器获得大量的数据, 所以需要较大的带宽, 特别是传输视频的时候, 尽管目前的桌面传输协议都采用了各种压缩技术, 但是减少的数据量是有限的. 另外, 图形处理本身就消耗大量计算资源, 当多个桌面同时在服务端进行图形渲染时, 服务器将会有非常大的负担.
传输协议对图形数据的处理方式主要有两种: 一个是基于矢量数据的传输, 另一个是基于位图数据的传输[6]. 采用不同的数据格式, 对协议的实现和性能有多方面影响. 采用基于矢量数据的处理方式, 所需传输的数据量较少, 相应的所需带宽也就低一些, 而且服务器没有处理图形的负担, 但是客户端需要有强大的处理能力; 采用基于位图数据的处理方式则需要较大的带宽, 服务器要处理图形数据有很大的运行负担, 但是对于客户端没有要求.
ICA 协议采用的是基于矢量数据的处理方式, 将数据传到客户端后进行渲染显示, RDP 协议和 PCoIP 协议则采用了基于位图的处理方式, 在服务器端对图形数据进行渲染, 生成位图数据后再进行压缩和编码处理, 最终传输到客户端的是可以直接显示的位图数据. SPICE协议则是同时采用了以上两种图形处理方式, 并能够根据终端的处理能力选择其中任意一种方式.
2.3.2 压缩和缓存技术压缩技术的好坏直接影响了终端用户的使用体验, 缓存技术能够有效地减少对冗余图像数据的传输量. SPICE桌面虚拟化框架采用以服务器端为主导的客户端图像缓存技术, 对多种数据进行缓存, 比如像素数据、调色板和光标数据. 用户终端缓存保存经常使用的显示元素, 如果当前需要显示的元素在缓存中就可以直接从缓存中获得, 而不必重复向服务器端发送请求.
SPICE运用的两个专有图像压缩算法分别是Quic和GLZ, 不同的图像数据使用不同的压缩算法, 人工拍摄的图像使用Quic算法; 操作系统合成的图像使用GLZ算法. 对于图像压缩算法的选择, 可以在服务端初始化时进行选择, 或者在运行时进行调整. SPICE根据图像数据的特性, 在Quic算法和GLZ 算法之间进行选择.
3 系统整体设计 3.1 SPICE简介SPICE协议[7]是一种自适应的虚拟桌面传输协议, 具有与其他远程显示协议与众不同的设计架构. 图2是SICE桌面虚拟化架构, 主要由SPICE客户端、SPICE服务端以及相应的QXL设备、Guest端QXL驱动等构成[8,9].
![]() |
图 2 SPICE桌面虚拟化框架 |
SPICE客户端是部署于终端设备上的组件, 负责显示每个虚拟桌面, 终端可以是瘦客户机或专用的PC; SPICE服务端以动态连接库的形式与KVM虚拟机整合, 通过SPICE协议与客户端进行通信; QXL驱动部署在服务器侧, 提供虚拟桌面服务的虚拟机中, 用于接收操作系统和应用程序的图形命令, 并将其转换为KVM的QXL图形设备命令; QXL设备部署在KVM服务器虚拟化的Hypervisor中, 用于处理各虚拟机发来的图形图像操作.
SPICE协议通过各种不同的channel实现客户端和服务端之间的通信[10], 利用不同的通道传输不同的内容, 每一种通道用来专门负责一种类型的数据传输与通信, 每个通道中的内容都可以通过相应的图形命令数据流或代理命令数据流传输. SPICE协议提供了和真实PC相同的用户体验, 通过SPICE可以直接在虚拟机里播放视频和音频等.
3.2 服务器设计为了实现桌面虚拟化, 首先需要搭建一个可靠的云平台, 当前主流的云计算平台主要有Eucalyptus、OpenNebula、Openstack和Cloudstack等. 这些产品各有各的优势, 通过对它们性能和应用范围的分析, 选用综合性能良好的Openstack为虚拟桌面的服务器端提供基础服务.
Openstack平台能够统一管理与整合虚拟机的相关资源. Openstack平台主要由Nova、Swift、Glance、Keystone、Horizon 5个组件构成[10], 各个组件间的调用关系如图3, 其中Compute对应Nova, Object对应Swift, Image对应Glance, Idenity对应Kestone, Dashboard对应Horizon.
![]() |
图 3 Openstack组件间关系 |
整个Openstack平台架构主要由控制节点、计算节点和网络节点组成. 控制节点负责对其余节点的控制, 包含虚拟机建立, 迁移, 网络控制、调度管理、API服务、存储管理、数据库管理、身份管理和镜像管理等; 计算节点负责虚拟机运行; 网络节点负责网络之间的通信.
4 系统整体实现虚拟桌面平台的整个系统采用Openstack、KVM和SPICE协议相结合来实现. 企业中的Openstack平台一般是以一台主机作为控制节点, 其余的全部作为计算节点, 在计算节点上配置出若干个虚拟机, 以满足整个企业的需求.
为了避免数据交换过程中造成拥塞, 保证传输过程的流畅性, 所有的服务器都采用三网卡机型. 以1个控制节点和1个计算节点为例, 3个网卡之间的网络分为内网和外网(公共网络)两部分, 其中内网又分为管理网络和用于存储的网络, 所以就是1个网络1个网卡, 分为3个网段. 外网网段指的是能直接访问到互联网的网段, 这里的外网指的是Openstack网络系统之外的网络, 它的网段是192.168.2.0/24; 内网网段指的是Openstack系统内各服务器之间互联的顶层交换机所划的网段, 此网段无需出口, 管理网络用于Openstack内部各个组件之间的通信, 比如API之间、Keystone认证、监控等, 其网段设置为192.168.1.0/24; 存储网络顾名思义就是专门给存储用的私网, 这个网络的流量是很大的, 给它设置的网段是192.168.0.0/24.
采用脚本安装部署的方式安装云平台, 首先在所有节点上安装Openstack包, 在控制节点上安装SQL数据库、消息队列、Memcached, 认证服务、镜像服务、计算服务、网络服务和Dashboard参照官网依次安装. 在计算节点上安装计算服务和网络服务. Opensatck平台搭建成功.
Openstack平台中默认的是VNC议, 替换成本文要使用的SPICE协议. 首先安装SPICE, 然后在计算节点和控制节点上修改配置文件: /etc/nova/nova.conf, 注释掉localrc文件里默认的VNC协议的配置, 最后重启服务. 确保在Control node上看到6082端口在监听, 虚拟机重启才能使用SPICE协议. SPICE Driver存在于Openstack系统的控制节点中, SPICE Device存在于计算节点中.
5 测试结果为了对SPICE有一个全面的了解, 对SPICE的性能进行了测试. 对虚拟桌面性能影响最大的是网络负载, 不同的负载对网络传输有不同的影响. 本测试对音频场景和视频场景的带宽进行了实时监控.
![]() |
图 4 音频带宽图 |
![]() |
图 5 视频带宽图 |
图4和图5记录了一分钟内音频和视频两种场景下的带宽占用情况, 当带宽受到限制时, 音频和视频播放可能会出现丢帧, 播放不流畅等现象; 当带宽严重不足时, 用户甚至无法拥有正常体验. 但是基本的桌面办公不会受到影响.
上图反映出当前现有环境搭建的一台虚拟机实现的虚拟桌面的效果, 如果想要大规模的应用, 可以短时间内在服务器端配置出更多的虚拟机, 实现更多的虚拟桌面. 临汾气象局机房搭建的虚拟桌面平台配置了大量的虚拟机, 个人能在客户端随时随地的登录虚拟桌面, 让企业能够集中化管理操作系统, 出现问题时管理员也能在后台统一进行处理. 很大程度上降低了企业的运营成本.
6 总结本文首先介绍了桌面传输协议以及影响虚拟桌面性能的因素, 然后分析了虚拟桌面中应用到的Openstack平台和SPICE框架, 最后通过测试结果证明虚拟桌面在音频和视频方面较传统PC桌面有了很大的性能提升. 因此, 越来越多的企业选择使用虚拟桌面, 不仅能够提高公司在管理和维护方面的效率, 减少机房维护人员的工作量, 而且能够很大程度上降低企业的成本. 本次测试证明此方案切实可行, 并且已投入正式使用中.
[1] |
Wikipedia. Desktop virtualization. http://en.wikipedia.org/ wiki/Desktop_virtualization. [2012-03-26].
|
[2] |
杨彩亮. 基于Spice桌面虚拟化框架的移动云桌面研究与实现[硕士学位论文]. 广州: 华南理工大学, 2015.
|
[3] |
徐浩, 兰雨晴. 基于SPICE协议的桌面虚拟化技术研究与改进方案. 计算机工程与科学, 2013, 35(12): 20-25. |
[4] |
王宁, 王浩杰, 屈喜龙. 基于SPICE协议的Android云桌面客户端研究. 湖南工程学院学报, 2016, 26(2): 33-36, 61. |
[5] |
李博. 基于SPICE协议的桌面虚拟化客户端的设计与实现[硕士学位论文]. 广州: 华南理工大学, 2012.
|
[6] |
赖孙荣. 虚拟桌面框架Spice剖析及其客户端的设计与实现[硕士学位论文]. 广州: 华南理工大学, 2012.
|
[7] |
Red Hat. Spice for newbies: Draft 2. http://spice-space.org/ docs/spice_for_newbies.pdf. 2009.
|
[8] |
洪文圳, 周劲桦, 梁慧娜. 开源虚拟化桌面在实验环境部署中的应用. 计算机教育, 2015(2): 94-98. |
[9] |
杨飞, 朱志祥, 梁小江. 基于SPICE协议的云实验室设计与实现. 现代电子技术, 2016, 39(1): 13-15. |
[10] |
张毅. 基于OpenStack的虚拟桌面云系统服务端设计与实现[硕士学位论文]. 广州: 华南理工大学, 2013.
|