《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 虚拟网络计算中的数据传输保证机制研究
虚拟网络计算中的数据传输保证机制研究
来源:微型机与应用2011年第7期
王培东,赵一峰
(哈尔滨理工大学 计算机科学与技术学院,黑龙江 哈尔滨 150080)
摘要: VNC是一个强大的远程桌面共享工具,能够让多个客户端通过互联网查看服务器端的实时桌面状况并可以进行远程操作,但是VNC系统的星形结构使其在实际场景中的可用性大大降低。对VNC系统进行了改进,并在此基础上提出了一种数据传输的保证机制。应用验证表明,其机制在改进后的系统中保证了数据能够实时、可靠地传输。
Abstract:
Key words :

摘  要: VNC是一个强大的远程桌面共享工具,能够让多个客户端通过互联网查看服务器端的实时桌面状况并可以进行远程操作,但是VNC系统的星形结构使其在实际场景中的可用性大大降低。对VNC系统进行了改进,并在此基础上提出了一种数据传输的保证机制。应用验证表明,其机制在改进后的系统中保证了数据能够实时、可靠地传输。
关键词: 数据会议虚拟网络计算;数据传输保证机制

1 VNC系统简介
    VNC[1](Virtual Network Computing)由著名的AT&T欧洲研究实验室研发,由于其平台的独立性,在数据共享中有着广泛的应用。
 VNC软件主要由VNC服务器(VNCServer)和VNC查看器(VNCViewer)两部分组成。在VNC服务器上运行欲共享的应用,客户端通过使用远端帧缓冲器RFB(Remote Frame Buffer)协议[2]中的输入协议将客户端的输入发送到服务器端,通过显示协议实现远程桌面的查看和控制,通过像素数据的重现实现客户端和服务器之间传输像素数据格式和编码方式的协调。像素数据如何通过网络传输也是通过编码解决的,数据本身遵循特定的编码。
2 基于VNC的数据会议系统
 传统的VNC体系结构[3]默认采用星形直连方式,由一台电脑作为服务器(VNCServer),多台电脑作为客户端(VNCClient)与服务器相连,由服务器直接向各个客户端发送共享数据。
多客户单服务器构架难以应付大规模并发客户,资源集中于服务器易形成瓶颈,客户端资源利用率低。VNC是一个开放源代码的项目,可以根据需要对VNC加以改进。
2.1 对基于VNC的数据会议系统的改进
 由于VNC服务器端的机器性能和带宽等多方面原因,在传输过程中会造成性能瓶颈,使得以星形直连方式传输数据的VNC体系在实际的数据会议中应用困难。为保证在数据会议中数据传输的实时、稳定,可在VNC服务器和VNC客户端之间设置一个共享转发控制服务器。
    通过设置中间服务器,并由中间服务器担负着内容转发服务器和网络管理服务器的两大功能,可以转移源服务器性能和带宽的压力,同时也可实现统一管理。
2.2 系统数据更新机制的选择
 显示更新机制[4]包括更新时机及刷新模式。更新时机有客户端拉动和服务器端推动两种。每种技术又可采用两种刷新模式,即懒惰更新和急切更新。
更新机制的选择一般依据以下准则:
 (1)带宽较高时优先选择服务器驱动的急切更新模式,以便获得较好的共享效果。
 (2)在较低带宽下为减少响应时间,节省网络带宽,采用懒惰更新机制,通过放弃或者融合显示更新来减少数据量的传输。
 显示更新机制是数据会议质量的重要决定因素。要在低带宽的网络条件下保证数据会议的质量,应该选择客户端拉动的懒惰更新模式,以保证共享电脑桌面的变化信息能够实时、准确地在客户端显示。
3 数据传输保证机制
3.1 数据传输过程中出现的问题

 VNC传输的数据本身遵循特定的编码。编码指一个矩形的像素数据如何通过网线传输。每个像素数据的矩形都加上一个头,给定矩形在屏幕上的X、Y坐标、矩形的宽和高以及指定的编码类型。数据本身就是采用这种特定的编码方式。
 改进后的系统共享数据由VNCServer传送到共享转发控制服务器,再由共享转发控制服务器转发至每一个VNCClient,并在VNCClient端显示。数据传输方式如图1所示。

 

 

 由于数据更新模式选择了客户端拉动的懒惰更新模式,因此系统中消息的传输方式采用基于流的协议。对于共享转发控制服务器来说,系统允许将原始消息积累在一起,形成一个较大的数据包。对于VNCClient端,数据到达网络堆栈就开始读取并进行解码显示。
 编码方法[5]作为VNC协议中核心技术,对远程图形显示具有重要意义,它直接决定了在网络环境下图像的更新和程序的响应速度。通常情况下,压缩率越高数据的网络传输速率越快,解码需要的时间越长。
目前的PC机足以满足编解码的硬件需求,可以在极短的时间内完成编解码工作。而限制共享效率的主要因素在于网络带宽,所以采用Tight编码方法,它主要采用Jpeg压缩算法,压缩率很高。Jpeg压缩算法虽然压缩率高、网络传输速率快,并可以节约带宽,但Jpeg编码器在进行解码的过程中必须要保证数据的完整性,即必须从每一个数据包头开始解析,否则无法进行解码工作。
 由于采用被动更新机制,客户端接收到的共享更新数据更新不完成就不会再一次向服务器发送更新请求。无法识别接收到的数据,就无法完成更新任务,服务器接收不到更新请求,不会继续向该客户端发送数据,这样就会造成客户端数据共享画面陷入停止的情况,造成数据共享的失败。
 为了避免上述情况的发生,可以在每一个数据包的包头加入一个特征码,然后在数据接收端进行特征码解析。通过解析判断,如果不是包头,则将数据丢弃直至接收到一个完整的数据包为止。
3.2 数据传输保证机制的实现
 在VNCServer端发送的每一帧数据前加一个特征码用以标识这段数据,特征码的选取采用一个大的质数。由于在数据流的传输过程中,很可能出现与特征码相同的数据,为了确保标识的正确性,在选定特征码的基础上再加入一个随机数,将这个随机数和特征码的AND运算作为校验和。
在发送端(VNCServer)和接收端(VNCClient)均定义一个名为CharacterCode的结构体。此结构体用于设定并存储 特征码的相关信息,其结构如下:
Typedef struct CharacterCode
{    char character; //用于存放32 bit特征码
        char rand_character; //用于存放产生的32 bit随机数
        char result_and;//用于存放32 bit校验和
} Char_Code;
 发送端工作流程如图2所示。


 发送端工作具体步骤如下:
 (1)定义特征码:0x9e37fffffffc0001UL。
 (2)将特征码存入Char_Code.character中。
 (3)由rand( )函数产生两个随机数:unsigned int crc_value1和unsigned int crc_value2,分别存入Char_Code.rand_character和Char_Code.rand_character+4中。
 (4)将Char_Code.character与Char_Code.rand_character逐位做AND运算,将运算结果存入Char_Code.result_and中。
 (5)发送更新数据。
 接收端工作流程如图3所示。


 接收端工作步骤如下:
 (1)接收更新数据。
 (2)对接收到的数据调用KMP算法进行匹配。
 (3)如果KMP算法匹配失败,说明这是一段无效数据。将接收到的数据段丢弃后接收下一帧数据。如果KMP算法匹配成功,进行下一步检验。
 (4)定义一个8 B的数组char tmpbuf[8]:tmpbuf[i]=Char_Code.character[i]& Char_Code.rand_character[i]
 (5)将tmpbuf中的值与Char_Code.result_and比较。如果相等则特征码验证成功,进行解析;否则丢弃该段数据,重新接收下一帧数据。
4 数据传输保证机制的验证及分析
 该数据传输机制已应用于大连浩视数字技术有限公司的网络视频会议系统。经测试使用可知其性能稳定,满足数据会议的数据共享需要。
 实验平台为Windows XP操作系统,实验工具为WIRESHARK、VC6.0。
实验方法为:通过WIRESHARK捕获网络数据,用VC6.0编写验证程序。将随机产生的特征码与捕获到的数据进行比对,通过对比结果统计捕获到的数据中出现与特征码相同的数据概率。
如果在捕获到的数据中与特征码相同的数据没有出现或者出现的概率极低,说明通过该方案可以正确标识一个完整的数据包,这样在接收端解析数据时不会受到伪特征码的干扰,方案具有可行性。实验结果统计如图4所示。

 对图4的实验结果进行分析,并且综合考虑共享转发控制服务器的性能,可将每次发送的更新数据量大小设置为1M,这样可以大大减少伪特征码在数据更新过程中的出现几率。
通过采用基于虚拟网络计算的数据传输保证机制,实现了数据的唯一标识,保证了特征码的唯一性和可靠性,避免了伪特征码对数据解析的干扰。接收端可以正确识别出可解析数据,并对不可解析数据进行及时处理,满足了数据共享的实时性与可靠性。
 本文通过对VNC传统体系结构的分析,说明了以VNC传统体系结构作为数据会议中数据共享方式的缺陷,并在此基础上提出了采用共享转发控制服务器的新方案。针对在采用共享转发控制服务器的方案中选择以客户端拉动数据更新的懒惰更新模式所出现的问题提供了一种数据传输保证机制。通过该保证机制,可以使改进后的系统保证在接收端对更新数据的读取和解析,从而实现资源共享的稳定和流畅。
参考文献
[1] RICHARDSON T, STAFFORD-FRASER Q, WOOD K R, et al. Virtual network computing[J]. IEEE Internet Computing: 1998,2(1):33-38.
[2] 卢小林.基于虚拟网络的网管系统集成的设计与实现[J].计算机工程,2007,33(3):82-84.
[3] 孙一波,刘菁.大规模视频会议中的多人桌面共享系统的设计与实现[J].微计算机信息,2005,21(8):139-141.
[4] 梁飞碟,李锦涛.瘦客户计算应用协议中远程显示机制的比较[J].计算机工程与应用,2004,40(21):135-137.
[5] 梁飞碟,李锦涛,史红周.虚拟网络计算(VNC)协议中的编码方法[J].计算机应用,2004,24(6):93-95.

此内容为AET网站原创,未经授权禁止转载。