(计算机科学与技术专业论文)xenrpc:虚拟机远程过程调用系统研究.pdf_第1页
(计算机科学与技术专业论文)xenrpc:虚拟机远程过程调用系统研究.pdf_第2页
(计算机科学与技术专业论文)xenrpc:虚拟机远程过程调用系统研究.pdf_第3页
(计算机科学与技术专业论文)xenrpc:虚拟机远程过程调用系统研究.pdf_第4页
(计算机科学与技术专业论文)xenrpc:虚拟机远程过程调用系统研究.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(计算机科学与技术专业论文)xenrpc:虚拟机远程过程调用系统研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

硕上学位论文 摘要 近年来,虚拟机技术在服务整合以及高性能计算等方面的优势日益明显,然 而,天然的隔离特性使得虚拟机间的通信性能并不理想。虚拟机间通信的常用方 法是虚拟网络,但是,进行通信的虚拟机实际上处于同一物理机器上,我们可以 利用虚拟机的这种特性来开发高效的远程过程调用系统。 x e n r p c ( x e nr e m o t ep r o c e d u r ec a l l ) 便是利用虚拟机实际上处于同一物理机 器上这一特性而开发的、基于x e n 虚拟机的远程过程调用系统。x e n r p c 系统的 特色在于:其远程过程调用中,函数参数等数据并不通过虚拟网络,而是采用共 享内存的方式进行双向传输,从而提高远程调用效率;加强对共享内存的保护, 避免缓冲区溢出攻击;采用事件通道机制实现客户端和服务器端应用程序问的即 时异步事件通知。x e n r p c 系统包含四个模块:共享内存模块、网络通讯模块、 过程调用模块以及消息管理模块。共享内存模块负责实现三类内存空间的共享: 栈、堆以及控制页,共享栈用于传递函数参数和函数执行结果等信息,共享堆用 于存储函数指针参数的内容,而控制页用于在通信双方传递控制信息。网络通讯 模块主要负责在客户端和服务器端尚未完成共享内存初始化时,实现通信程序之 间的数据传输。过程调用模块是本系统核心,主要负责函数调用过程中相应参数、 控制信息的处理、被调用函数的执行、栈安全处理以及各内存空问的切换。消息 管理模块的主要功能是在通信应用程序之间建立一条高效的消息通知渠道,在域 间进行异步事件信息传递。 实验结果表明:x e n r p c 在数据传输延时、带宽、c p u 使用时间、栈溢出防 范、代码复杂度等五方面的性能都明显优于s u nr p c 、i c e 两种典型远程过程调用 机制的性能。 关键字:x e n ;远程过程调用;共享内存;事件通道;栈溢出 i i x e n r p c :虚拟机远程过程调用系统研究 a b s t r a c t r e c e n t l y , v i r t u a l i z a t i o n t e c h n o l o g y sa d v a n t a g e s i na r e a ss u c ha ss e r v e r c o n s o l i d a t i o n ,h i g hp e r f o m a n c ec o m p u t i n ga r ei n c r e a s i n g l yo b v i o u s h o w e v e f ,t h e n a t u r a l i s 0 1 a t i o np r o p e r t yo fv i r t u a lm a c h i n e sm a k e st h ep e r f o m a n c en o ts a t i s f a c t o r y f o r t h ev m st oc o m m u n i c a t ew i t he a c ho t h e r c u r r e n t ly ,t h eu s u a lw a yw h i c ht h ev m s u s et oc o m m u n i c a t ew i t he a c ho t h e ri st h ev i r t u a ln e t w o r k ,b u tt h ef a c ti st h a tt h ev m s a r ea c t u a l l yi nt h es a m em a c h i n e ,w ec a nu s et h i sf e a t u r et od e v e l o pa ne f n c i e n t r e m o t ep r o c e d u r ec a l ls y s t e m t h ex e n - b a s e dr e m o t ep r o c e d u r ec a l ls y s t e mx e n r p ci s e x a c t l yb a s e do nt h e x e nv i r t u a lm a c h i n e st h i sf e a t u r e t h em o s tp r o m i n e n tf e a t u r eo ft h i ss y s t e mi st h a t : t h ed a t as u c ha st h ef i u n c t i o n s p a r a m e t e r si st r a n s f 色r r e db i d i r e c t i o n a lt h r o u g ht h e s h a r e dm e m o r yi n s t e a do fv i r t u a ln e t w o r k ,w h i c hi m p r o v e st h ee f f i c i e n c yo fr e m o t e c a l l s ,w h i l ei ts t r e n g t h e n st h ep r o t e c t i o nt ot h es h a r e dm e m o r yt op r e v e n tb u f f e r o v e r n o wa t t a c k sa n du s e se v e n tc h a n n e lm e c h a n i s mt oa c h i e v er e a l t i m e a s y n c h r o n o u se v e n tn o t i n c a t i o nb e t w e e nc l i e n ta n ds e r v e ra p p l i c a t i o n s x e n r p c c o n s i s t so ff o u rm o d u l e s :s h a r e dm e m o r ym o d u l e ,n e t w o r kc o m m u n i c a t i o nm o d u l e , p r o c e d u r ec a l lm o d u l e ,a n dm e s s a g em a n a g e m e n tm o d u l e t h es h a r e dm e m o r ym o d u l e i sr e s p o n s i b l ef b rs h a r i n gt h r e et y p e so f m e m o r y :s t a c k ,h e a pa n dt h ec o n t r o lp a g e ,t h e s h a r e ds t a c ki st h e r ef o rp a s s i n gi n f o r m a t i o ns u c ha sf u n c t i o np a r a m e t e r sa n dr e s u l t , t h es h a r e dh e a pi su s e dt os t o r et h ec o n t e n t so ft h ef u n c t i o n sp o i n t e rp a r a m e t e r s , w h i l et h ec o n t r o l p a g e i su s e dt ot r a n s f b rc o n t r 0 1 m e s s a g e t h en e t w o r k c o m m u n i c a t i o nm o d u l ei sm a i n l yr e s p o n s i b l ef o rt r a n s f c r r i n gd a t ab e f o r et h es h a r e d m e m o r yh a sn o ty e tc a m et r u e p r o c e d u r ec a l lm o d u l ei st h ec o r eo ft h es y s t e mw h o s e d u t i e sa r ed e a l i n gw i t ht h e p r o c e d u r e sp a r a m e t e r sa n dc o n t r o li n f l o r m a t i o n , i m p l e m e n t i n gt h ec a h e df u n c t i o n ,h a n d l i n gt h es t a c k ss a f ea n ds w i t c h i n gb e t w e e nt h e m e m o r ya r e a s t h em a i nf u n c t i o no fi n f o r m a t i o nm a n a g e m e n tm o d u i ei st oe s t a b l i s ha h i g h l ye f n c i e n tc h a n n e l t ot r a n s f e re v e n t sa s y n c h r o n o u s l yb e t w e e nt h ed o m a i n s t h er e s u l t so ft h es y s t e mt e s t ss h o wt h a tx e n r p c sp e r f o m a n c e si nt r a n s m i s s i o n d e l a y b a n d w i d t h ,c p uu s a g e ,s t a c ko v e r f l o wp r e v e n t i o na n dc o d ec o m p l e x i t ya r e , m u c hb e t t e rt h a nt h ep e r f o m a n c e so fs u nr p c ,i c et h e s et w oc l a s s i cr e m o t e p r o c e d u r ec a l lm e c h a n i s m k e yw o r d s :x e n ;r e m o t ep r o c e d u r ec a l l ;s h a r e dm e m o r y ;e v e n tc h a n n e l ;s t a c k o v e r n o w h i 硕1 :学位论文 插图索引 图1 1x e n s o c k e t 体系结构图一4 图1 2x w a y 体系结构5 图2 1x e n 半虚拟化设备体系结构9 图2 2x e n a c c e s s 体系结构11 图2 3x e n a c c e s s 磁盘监视的工作过程1 2 图2 4f a s t r p c 运行过程1 3 图2 5x e n r p c 体系结构16 图3 1 服务器端共享内存伪代码2 2 图3 2 地址空间管理2 3 图3 3 网络通讯模块处理流程2 4 图3 4x e n r p c 过程调用模块处理图2 6 图3 5 客户端栈切换处理模块汇编实现2 6 图3 6 服务器栈切换处理子模块汇编实现2 7 图3 7 栈安全处理流程2 8 图3 8 栈安全处理模块汇编实现2 8 图3 9 控制页处理子模块2 9 图3 1 0 共享堆处理模块3 0 图3 1 l 事件通道消息处理过程3 l 图3 1 2 事件通道的创建过程3 1 图3 1 3 消息管理模块伪代码3 2 图4 1 安装x e n 所需的软件包3 5 图4 2 编译x e n a c c e s s 库文件3 5 图4 3x e n a c c e s s 配置文件示例3 6 图4 4 三种r p c 机制的通信延时对比3 7 图4 5 函数参数为b y t e s e q 时的带宽3 7 图4 6 函数参数为v a r i a b l e s e q 时的带宽3 7 图4 7 函数参数为f i x e d s e q 时的带宽3 8 图4 8c p u 使用时间3 8 图4 9 实验一运行结果3 9 图4 1 0 实验二运行结果3 9 图4 1 1 源代码行数对比4 0 v 1 x e n r p c :虚拟机远程过程调用系统研究 插表索引 表4 1 虚拟环境硬件配置3 4 v i i 硕上学位论文 1 1 课题背景 第1 章绪论 2 0 世纪6 0 年代开始,美国计算机学术界就开始了虚拟技术的萌芽。1 9 5 9 年 c h r i s t o p h e rs t r a c h e y 发表了一篇名为大型高速计算机中的时间共享( t i m e s h a r i n gi nl a r g ef a s tc o m p u t e r s ) 的学术报告,作者在文中提出了虚拟化的基本 概念,对虚拟化技术进行了最早论述。 2 0 世纪7 0 年代,i b m 就推出了v m 3 7 0 ( v i r t u a lm a c h i n ef a c i l i t y 3 7 0 ) 的虚 拟计算系统。当时,为了充分利用相对比较昂贵的计算机硬件资源,人们研究利 用虚拟化技术让更多的应用程序能够通过终端系统共用计算机资源【2 】。近年来, 随着系统硬件性能的不断提高,因为以下两方面的原因,使得虚拟化技术又重新 成为计算机领域的研究热点:一是经过多年的发展,特别是在多核处理器引入冗 余计算资源后,计算机系统在变得越来越强大的同时,其管理难度也在不断提高; 二是如今的计算模式,已经向以用户需求为中心的服务计算过渡,人们更关心的 是计算系统将给用户提供怎样的接口和提供怎样的服务,而用户的需求往往是复 杂和多样化的。在这样的背景下,由于虚拟化技术能够虚拟出一整套硬件设备, 解除软件系统与硬件结构之间的强耦合性,能灵活实现透明化的可伸缩计算系统 架构,提高计算资源的使用效率,发挥计算资源的聚合效能,并为用户提供个性 化和普适化的计算资源使用环境,因而重新得到了学术界和企业的广泛关注。 在企业界,正是由于虚拟机技术的诸多优秀特征,使得虚拟机技术相关的公 司发展迅速,如i n t e l 、a m d 、s u n 、m i c r o s o f t 、i b m 等都有自己的虚拟化战略, 虚拟化市场增长迅猛。同时,由于虚拟机技术为研究人员提供了更好的环境去开 发那些在复杂操作系统上不易实现的功能,使得虚拟机技术在学术界也颇受欢迎。 比如说迁移【3 4 】功能在传统操作系统层是很难实现,但是在虚拟机监视器( r t u a l m a c h i n em o n “o r ,v m m ) 层实现起来却要容易得多。 诚然,虚拟机的出现在一定程度上为一些传统问题的解决提供了新的思路, 但是,随着计算机硬件成本的不断下降以及性能的不断提升,使得通过v m m 可 以在一台物理计算机上模拟出多台虚拟机,例如x e nv m m 就可以支持上百个虚 拟机【5 】,这也使得虚拟机的管理和效率问题日益突出。 利用虚拟机技术,多个客户操作系统可以在单个机器上并发执行,这种情形 适合于建立集成系统,而在这种集成系统中,客户域之间的通信是非常频繁的。 当通讯敏感的应用程序通过虚拟机技术集成在单个物理机器上时,即运行在物理 x e n r p c :虚拟机远程过程调用系统研究 机器上的多个虚拟机共享机器网络资源时,虚拟网络的性能成了主要的挑战。我 们期望客户域之问的通信速度要快,因为多个客户域实际上处于单个机器上。但 是文献 6 ,7 】的研究表明,同一个物理机器上的两个虚拟机的进程进行通信( 即域 间通信) 时,其性能比我们期望的要更糟,例如t c p 套接字域问通信的带宽是 1 3 0 m b p s ,而在原生l i n u x 系统上通过u n i x 套接字进行通信的进程的带宽高达 l3 9 5 2 m b p s 【8 1 。针对这种现象,研究者们提出了各类优化域间通信能力的接口【8 1 2 】, 但是,这些接口都是针对套接字编程,而且需要对网络应用程序或操作系统代码 进行修改,透明性差。而由于远程过程调用( r e m o t ep r o c e d u r ec a l l ,简称r p c ) 机制【”,1 4 】跨越了传输层和应用层,使得分布式应用程序更加容易。因此,采用何 种方法,既能充分提高通信性能,又能利用r p c 的透明性在虚拟机上构造高效的 集成系统成了一个亟待解决的问题。 1 2 国内外研究现状 现代操作系统假设其完全并且直接控制着物理硬件和系统资源,操作系统拥 有管理这些资源的策略并对应用程序进行分级管理与运行。而虚拟机监视器的目 标则不然,它允许多种操作系统在同一物理机器上并发运行【l5 1 ,其在高性能计算 【16 1 、服务整合【1 7 1 、安全隔剐5 】等各方面的优势日益凸显。 根据是否需要修改客户操作系统,虚拟化技术可以分为完全虚拟化和泛虚拟 化两类【5 】。完全虚拟化是指不需要修改被虚拟系统的内核,使用软件来完全模拟 计算机硬件坏境的虚拟化技术。因为可以在虚拟机中直接安装和运行现有的操作 系统而不做修改,所以完全虚拟化技术更容易被用户接受,典型的完全虚拟化产 品有v m 、r e 、r k s t a t i o n 【18 1 ,微软的v i r t u a ls e r v e r 【1 9 1 和l i n u x 上的u m l ( u s e r m o d el i n u x ) 【2 0 】等。泛虚拟化技术为了充分利用系统资源而对被虚拟系统的内 核进行修改,减少虚拟机和物理机器协调运行所消耗的资源,如c p u 运行级别切 换、指令解释、寻址管理等操作,因此其相对完全虚拟化而言有着更好的性能。 但是由于泛虚拟化需要修改系统内核,所以限制了其在企业界的应用。目f ; 广泛 使用的泛虚拟化软件主要有x e n 引,d e n a l i 【2 1 1 ,k v m 【2 2 】等。但是,随着i n t e l v i n u a l i z a t i o nt e c h n o l o g y 【2 3 ,2 4 】等硬件虚拟化技术的出现,部分泛虚拟化虚拟机系 统也进行了完全虚拟化的扩展,如x e n 【2 5 1 。 完全虚拟化的典型代表产品就是v m w a r ew 0 r k s t a t i o n 【】。v m w a r e 通过在硬 件和操作系统之间增加了一层薄的软件层虚拟机监视器( r t u a lm a c h i n e m o n i t o r ,v m m ) ,将物理的c p u 、内存、网络和硬盘等资源进行抽象,映射成若 干虚拟的c p u 、内存、网络和硬盘,构成虚拟机。一个物理机器上可以运行多个 虚拟机,每个虚拟机可以不受干扰地运行独立的操作系统和应用软件。由于采用 软件模拟的方式,完全虚拟化虽然能够更容易获得商业操作系统的支持,但是其 2 硕 :学位论文 性能却大大降低。微软的v i r t u a ls e r v e r 【1 9 】和l i n u x 上的u m “2 0 】等也是常见的完 全虚拟化软件。 半虚拟化软件中最著名的一款便是基于l i n u x 的x e nv m m 。x e n 是一个开放 源码的软件,起源于剑桥大学的开源项目【3 1 。2 0 版本的x e n 【2 6 】的虚拟机支持经过 修改的操作系统,它通过将一些硬件暴露给客户操作系统以获得性能上的提升, 但是在其上运行的应用程序则无需进行任何修改。但是在i n t e lv t 技术出现以后, x e n 也可以支持未经修改的客户操作系统。由于x e n 技术的开源性、接近于裸机 的性能、灵活的动态迁移功能,以及对泛虚拟化客户操作系统和完全虚拟化客户 操作系统的同时支持,使其受到了各界的广泛关注。不仅如此,x e n 的半虚拟化 特征也为虚拟机环境下新的数据传输方法提供了思路,一些研究者开始将这种共 享内存的思想运用到高性能计算16 1 ,日志记录2 7 ,2 8 1 ,以及域间通信等应用中。正 是由于这种共享内存的数据传输方法的优越性,一些学者也开始试图通过这种方 法来替代传统的网络传输功能以得到高效率的域间通信系统【8 - 1 2 】。接下来主要对 具有代表性的x e n s o c k e t 【8 】、x w a y 【9 】域间通信系统进行详细介绍。 1 2 1x e n s o c k e t x e n s o c k e t 【8 】是运行在x e n 虚拟机上,提供高带宽传输的域问通信机制,它的 结构类似于u n i x 系统中的域套接字结构,在该结构中,用一个静态的环缓冲区 来代替x e n 中出现的页面翻转机制,这种静态环缓冲区可以被多个域共享,多个 域可以同时读取共享缓冲区内存中的信息,但是同时只能有一个域可以修改该共 享缓冲内存中的信息。 x e n s o c k e t 能为域间通信开辟一个或多个大型内存缓冲区的共享,其应用程 序接口遵循标准的套接字接口,在其接口下,x e n s o c k e t 使用共享内存来完成域 间数据传输的高带宽。它分配两类共享内存区以供通信双方访问:一是描述符页 面,由一个4 k b 的内存页组成,它用于在发送方和接收方之间共享状态和控制信 息;二是由3 2 个4 k b 内存页组成的共享环缓冲区,其大小共1 2 8 k b 。x e n s o c k e t 的体系结构如图1 1 所示。 x e n s o c k e t 通信过程中,当两个域建立套接字连接时,其中的一个域开辟一 片共享内存区然后将其映射到另一个域。这片共享的内存区便被看成是一个环缓 冲区,即发送者将信息写入环,然后接收者以先进先出( f i f o ) 的顺序直接从环 :中读取数据。这有别于x e n 的通信环和页面翻转( p a g en i p p i n g ) 机制,页面翻 转机制的原理是:数据首先由发送方写入内存页,然后系统将该内存页面重映射 到接收者的地址空间。x e n s o c k e t 在发送域和接收域问提供一个单向的传输通道。 这种基于共享内存的系统适合于构造非对称的广播通信,即一个域发送大量数据 给同系统中的其他域,而除了确认信息外不需要接收其他任何数据包。 x e n r p c :虚拟机远程过程调用系统研究 1 2 8 k b t h i n y - t w o4 k bp a g e s 图1 1x e n s o c k e t 体系结构图 1 2 2x w a y 针对导致网络通信性能下降的三个主要因素,即域问通信在t c p i p 处理上消 耗的时间、页面翻转丌销、域问通信之间过长的通信路径,提出并设计实现了一 个高性能的域i 日j 通信机制,即x w a y 【9 1 。x w a y 机制可以绕过t c p i p 协议栈, 避免页面翻转上的消耗,并在同机器上的不同域间建立一个直达的、加速的通信 路径,以此来实现高性能通信,同时对于那些实现标准套接字接口的应用程序, 它可以保持二进制兼容性。 x w a y 是作为内核中的一个网络模块来实现的。图1 2 是x w a y 的体系结构 图,为了充分确保与标准套接字接口的二进制兼容性,作者在x w a y 设备驱动层 上面加入了额外的层次,即x w a y 协议层和x w a y 交换层,并截获i n e t 和t c p 层之间与套接字相关的请求。x w a y 交换层用来判断目标域是否存在于同一台物 理机器上。假如目标域和源域存在于同一台物理机器上,交换层就创建一个x w a y 通道,并把它与x w a y 套接字绑定在一起。若不在同一机器,交换层就把i n e t 传来的请求提交给t c p 层。x w a y 协议层根据现有的套接字选项,通过x w a y 设备驱动程序来传输实际的数据。例如,套接字选项m s g d o n t w a i t 表明x w a y 协议层以非阻塞i o 模式或者以阻塞i o 模式运行。套接字选项可以来自函数的 参数、i n e t 套接字结构、t c p 套接字结构等不同的地方。x w a y 协议层必须明 白每个套接字选项的意思并完成实际数据的收发操作。 x w a y 使得运行在同一个机器上不同虚拟机之间的网络程序可以通过标准的 套接字接口来进行通信。x w a y 不仅实现了低延迟、域间通信的高带宽,而且确 保了充分的二进制兼容性,使得任何基于套接字接口的网络程序都可以直接享用 4 硕1 j 学位论文 x w a y 带来的高性能。 广 t c p i l 闽 v 讯u n ln e t w o r ki 匦。受坚! 塑竺一l y i r | h n i 口r 咖口,它 图1 2x w a y 体系结构 尽管x e n s o c k e t 、x w a y 等域间通信机制能够提供高效率的域间通信,但是 这类域间通信机制都存在某方面的不足。首先,这些机制均不能直接支持虚拟域 间的远程过程调用机制,无法充分利用远程过程调用机制的透明性;其次, x e n s o c k e t 只支持单向通信,而传统的套接字通信、远程过程调用均是双向的, 同时,x e n s o c k e t 中共享的环缓冲区大小是固定的,无法满足更大数据量传输的 需求,且无法对环的大小进行动态调节,而对于x w a y 来说,它也存在很多不足, 如不支持u d p 协议、不支持套接字的在线迁移等;最后,它们均未对共享内存的 安全性进行考虑。 综上,本文在吸取了现有域问通信系统优点的基础上,主要针对现有系统的 不足以及目前不存在虚拟机专用的远程过程调用机制的现状,设计并实现了基于 x e n 半虚拟化虚拟机的远程过程调用系统x e n r p c 来解决上述问题。该系统的主 要特色在于通过域间共享内存【2 9 。1 1 的方式为虚拟机之间的远程过程调用提供了 一个双向的通信通道,减少了网络传输数据量及虚拟机监控器的参与力度,从而 提高了远程调用的效率,而且,它对共享内存存在的安全隐患进行分析,并采取 栈恢复保护策略来防止缓冲区溢出攻击,提高了共享内存的安全性。 1 3 本文研究内容 司藤一。僦瞩遂图固 x e n r p c :虚拟机远程过程调用系统研究 本课题来源于国家9 7 3 项目:计算系统虚拟化基础理论与方法研究中的子课 题4 虚拟计算系统普适化运行环境研究【32 1 。本课题基于虚拟机系统的运行环 境,围绕虚拟系统的协同、普适特性,考虑用户操作环境的移植需求、程序运行 维护环境的自动配置需求、应用任务协作需求以及可视化监控与评估需求等,综 合运用各种虚拟化手段和技术,设计高效的虚拟运行环境。本课题研究普适化运 行环境中用户操作环境的异地迁移、程序分发、执行环境的动态配置、可视化监 控与效率评估等多个关键问题,探索其中存在的一般规律,并结合包括、e b 技术、 桌面虚拟化技术等在内的各类虚拟化技术,实现普适化的虚拟运行环境。 根据课题研究目标和要求,本文以设计高效的虚拟运行环境为主要研究目的, 旨在为虚拟机问的远程过程调用操作提供一种安全高效的解决方案。在分析了国 内外研究现状的基础上,针对目| j i 流行的x e nv m m 提出了一种有别于传统方法 的、利用共享内存在互相隔离的两个操作系统间进行过程调用相关数据传输的方 式。 本文所提出的基于x e n 虚拟机的远程过程调用系统x e n r p c 的关键在于如何 为需要通信的两个操作系统间建立连接、分配共享内存、创建事件通道、服务器 端正确执行被调用的函数、防止栈溢出攻击。 具体来讲,本文的研究内容包括:对x e n 半虚拟化虚拟机的分析与研究; 通过使用x e n a c c e s s 为前端操作系统和后端操作系统读写共享内存提供的接 口,实现进行远程过程调用的进程问的内存共享,从而实现双向的数据传输。本 系统提供了三种共享内存:栈、堆以及控制页,通过这三种共享内存,为远程过 程调用中数据的传输提供了零拷贝的传输方式;通信双方对共享的内存如何进 行管理,譬如如何在本地栈和共享栈之间进行正确切换、如何根据控制信息跳转 到被调用的函数来执行、如何确保共享内存的安全;域问信息交换的管理,主 要包括如何为需要通信的两个客户操作系统建立连接以及如何实现异步事件通知 等。 1 4 文章基本框架结构 本文后续章节按照如下方式进行组织: 第2 章首先对x e n r p c 系统所涉及的相关技术和概念进行深入分析,其次, 在对x e n r p c 系统的设计思路进行介绍的基础上,对其体系结构及四个功能模块 进行了功能描述,接着,介绍采用x e n r p c 进行远程过程调用时的处理流程,并 根据其流程分析了本系统存在的关键问题及难点。 第3 章详细介绍了x e n r p c 系统的具体实现。首先介绍如何对共享内存进行 初始化以及在服务器端如何利用x e n a c c e s s 的接口实现内存共享,其次详细介绍 网络通讯模块的具体实现,包括如何区分命令号等,接着主要从栈切换处理子模 6 硕l j 学位论文 块、栈安全处理子模块、控制页处理子模块、共享堆处理子模块这四个方面出发, 对过程调用模块的实现进行详细介绍,最后对消息管理模块中通信双方通过事件 通道进行通信的具体实现技术进行详细描述。 第4 章在对评价指标、测试平台搭建等进行介绍,确定评价角度后,从传输 延时、带宽、c p u 使用率、栈溢出防范以及代码复杂程度等5 方面对x e n r p c 的 性能进行了评价,并将x e n r p c 的性能与s u nr p c 以及i c e 等现存r p c 机制的性 能进行比较。 最后对全文工作进行了总结。 7 x e n r p c :虚拟机远程过程调用系统研究 第2 章虚拟机远程过程调用系统设计 本章首先对本文提出的虚拟机远程过程调用系统x e n r p c 所涉及的相关技术 进行了简单介绍,为阐述系统的设计思路打下铺挚,接着,在描述系统设计思路 的基础上,对它的体系结构和功能模块进行了详细地说明,然后,从用户的角度 出发介绍了该机制进行数据传输的工作机制和处理流程,最后,指出了实现该系 统所需要解决的关键问题和难点所在。 2 1 相关知识简介 传统的远程过程调用系统都依赖于网络,网络的顺畅情况严重影响着远程调 用的效率。在虚拟机环境下,为了保证客户域之间的隔离性,虚拟机监控器程序 为其上的每个客户操作系统提供了一套完整的与原生设备一致的虚拟设备。为了 实现这个目标,大部分的虚拟机监控器采用了软件模拟或者是修改原生设备驱动 的方法,这将进一步降低网络设备的性能,使得虚拟机之问的数据传输效率更加 难以保障。 为了解决这一问题,本文针对目前流行的x e nv m m 提出了一种基于x e n 半 虚拟化虚拟机的远程过程调用系统x e n r p c 。该系统与传统远程过程调用系统不 同的是,它通过共享内存的方式在通信的两个客户操作系统( 域) 之间实现远程 函数调用过程中产生的数据传输,并采用异步事件通知的形式对两个域进行同步, 从而把域间的数据传输转化为对共享内存的复制和读写,大大提高了过程调用的 效率和性能。 x e n r p c 系统是基于x e n 的远程过程调用系统,它利用x e n a c c e s s 【3 3 】提供的 共享内存接口,借鉴f a s t r p c 【”】共享堆和直接复制栈的思想,让进行远程过程调 用的虚拟机间通过调用定义良好的接口来自动共享内存,进而通过共享内存传递 数据。同时,针对共享内存带来的栈溢出攻击【3 5 ,3 6 】等安全性问题,采取栈恢复策 略。接下来本文将对其采用的这一系列相关技术和概念进行简单的介绍。 2 1 :1x e nv m m 相关技术 在x e n 半虚拟化环境下,x e n 为每个虚拟机提供了一套设备抽象接口,各个 虚拟机对i o 设备的访问需要经过x e n 提供的共享内存页和环缓冲描述符。在这 个过程中,需要进行i o 访问的虚拟机通过其前端虚拟驱动与特权域中相应的后 端驱动进行通信,后端虚拟驱动再通过特权域中的原生设备驱动来访问处理器、 内存等物理硬件,从而完成虚拟机的设备访问操作【3 7 1 ,其体系结构如图2 1 所示。 硕一 :学位论文 特权域d o m 0 ( 设备域)虚拟域n 用户态用户态 内核内核 设备驱动后端驱动前端驱动 事件通道,授权表,环缓冲区 虚拟机监视器( v m m ) r 物理硬件( 处理器,内存,i o 设备) 图2 1x e n 半虚拟化设备体系结构 在x e nv m m 中,客户操作系统分为特权域和非特权域两类,其中特权域负 责对非特权域的客户操作系统进行管理与监控。在x e n 的半虚拟化设备模型中, 设备驱动分为后端驱动和前端驱动,其中后端驱动位于特权域中,而i j i 端驱动位 于非特权域,只有位于特权域的客户操作系统才能真正访问物理硬件,非特权域 必须通过跟后端驱动交互才能访问设备。如在当前x e n 域间通信过程中,域问通 信无法与其他通信区分丌来,每个信息都需经过如下模块的处理:源客户域的t c p 栈、i p 栈、前端驱动,特权域的后端驱动、网桥,及目的域的前端驱动、i p 栈、 t c p 栈【9 1 。在这个过程中,就需要x e n 系统管理程序即h y p e r v i s o r 的支持。 h y p e r v i s o r 为前端驱动和后端驱动间的通信提供了包括事件通道、授权表、环缓 冲区以及x e n s t o r e 在内的一系列的支持【3 8 】。 事件通道【3 9 】是x e n 中用来进行域间异步事件通知的机制,每个域最多拥有 1 0 2 8 个事件通道。x e n 架构上的物理中断、虚拟中断、虚拟处理器中断和虚拟域 间通信均通过事件通道实现。向事件通道发送消息会在每一个虚拟域的内部数据 结构中置位,以便客户机处理。客户操作系统可以请求将虚拟中断映射为某个特 定通道的通知,这样前端就可以通过事件通道向后端发送通知,后端接到这个通 知后,就进入了中断处理程序去处理。 授权表 4 0 】是一种页面访问授权机制。通常,域a 和域b 只能访问属于自己 地址空间的内存页面,域a 要想访问域b 的页面,需经过授权表的相关操作:域 b 授权域a 可以读或者写域b 指定的页面;域b 授权后,域a 便可以通过授权 表的操作,将域b 指定的页面重映射到本地地址空间,这样,域a 就可以像访问 本地内存页面一样访问域b 指定的页面了。授权表主要用于前端和后端需要传输 大量数据的情况,虚拟网络设备还使用授权表来进行数据页的交换,从而避免数 据经过前端驱动、后端驱动、原生设备驱动、网桥等等一系列操作,真正实现数 9 x e n r p c :虚拟机远程过程调用系统研究 据传输的零拷贝,提高通信效率。 环缓冲区【4 1 】就是环状的缓冲区,用于客户域与和设备域之间的异步数据传 输。环缓冲区根据两对生产者、消费者指针来进行更新。客户域将服务请求放入 环中,然后更新请求生产者指针,当设备域处理该请求后,则相应地更新请求消 费者指针。而请求应答信息同样放入此环缓冲区队列中,但是此时设备域负责更 新应答生产者指针,而客户域管理的是应答消费者指针。其中生产者指针是共享 指针,如请求生产者指针和应答生产者指针,分别由客户域和x e n 负责更新;而 请求消费者指针和应答消费者指针是私有指针。客户域和设备域利用环缓冲区进 行通信的处理过程为:前端驱动首先在环缓冲区中放置请求,后端驱动在读取请 求并进行处理完成后,再将请求的处理结果放入环缓冲区中,前端获得处理结果 则一次交互完成。 x e n s t o r e 4 2 】是一个小的、用于域间共享的树状数据库,用于存储各个虚拟机 的配置信息,如域i d 、域名、前后端驱动、授权表索引、事件通道信息等。其作 为虚拟机间的中介通信是基于共享内存与事件通道来实现的。x e n s t o r e 的目录具 有层次结构,每个虚拟域都有自己的信息存储路径,而特权域作为管理域,可以 查看整个结构的内容,而非特权域只能查看本身的信息,这样便可以提高x e n s t o r e 的安全性。 2 1 2x e n a c c e s s 的虚拟内存自省和虚拟磁盘管理 在很多应用领域中,都需对v m m 上的虚拟机进行监视,如安全以及系统管 理领域,但是这种称作自省( i n t r o s p e c t i o n ) 的监视技术更多的是应用于某应用程 序,而不是建立起一个自省的体系结构。2 0 0 7 年,b r y a nd p a y n e 等人提出了 x e n a c c e s s 【33 1 ,一种位于x e n 虚拟机监视器上的监视库。它提供了虚拟内存自省 和虚拟磁盘监视的能力。 x e n a c c e s s 是建立在如下6 个高层次需求之上的: 1 )不需要对v m m 进行根本性的修改; 2 )不需修改v m 或目标操作系统,即可以把所有的监视代码放在隔离的虚 拟机中; 3 )对性能影响小; 4 )有利于快速开发新的监视器; s )能够检测到目标操作系统中的所有数据; 6 )监视器不能被目标操作系统所纂改。 图2 2 从两个方面显示了x e n a c c e s s 的体系结构。右图显示了与v m m 及虚 拟机相关的各关键组件的位置。从中可看出,x e n a c c e s s 运行于d o m a i n0 的用户 空间,这样便可以简化对b 1 k t a p 体系结构及x e n c o n t r 0 1 库的访问。左图表明了 1 0 硕l j 学位论文 x e n a c c e s s 在x e n 的软件结构栈中的位置。此处需要说明的是,x e n a c c e s s 是一 个被监视应用程序( m o n i t o ra p p l i c a t i o n ) 所调用的库文件。 a ) d o m a i no u rd o m a i n x t n a c c e s s 商弃 匝匦习 u s e r i k e m 。| i 厂面忑f 厂丽:面 d r i v e rb e d r i v e r u s e r k e m c l 厂雨 l 堕翌i b ) 图2 2x e n a c c e s s 体系结构 x e n a c c e s s 应用x e n c o n t r o l 库提供的x c m a p f o r e i g n - r a n g e ( ) 函数来查看另一 个虚拟机的内存。使用这个函数,可以减少对v m m 或目标操作系统的修改。这 个函数根据内存页的机器帧号来映射该页。x e n a c c e s s 提供了多个内存自省的 a p i 。除了能映射内存页,x e n a c c e s s 还能监视低层的磁盘通信,同时,它还包括 一个接口引擎,使得它能根据底层磁盘通信动态地推断出高层的文件系统操纵。 该推断引擎是依赖于使用中的文件系统的,所以,当前它还只能确定e x t 2 文件系 统下的文件或路径的创建或删除操作。 如图2 3 所示,以m k d i r ( ) 系统调用为例,说明x e n a c c e s s 磁盘监视的工作过 程: 1 )用户v m 中某应用程序进行m k d i r ( ) 调用,然后此调用被翻译成底层的 操作并发送给监视v m 的后向驱动; 2 )块数据流在被t a p d i s k 驱动处理之前,由w r a p p e r 驱动解释,并通过t a p f i f 0 发送; 3 )从f i f o 中读取块数据并哈希进表; 4 )如果发现了块x 的记录,则分析并排序,否则丢弃; 5 )对比块x 的新旧版本,它们之间的差异被理解成一个新目录的创建。 x e n a c c e s s 中的内存自省能提供各操作系统间的隔离性和无关性,这就保证 了对新目标系统的快速集成性。其虚拟磁盘监视功能能对所有发送到磁盘的数据 进行访问,但是其推断引擎目前只能解释文件或目录的创建和删除操作,需要引 进更多的算法,以支持更多的操作,如读、写等等。而且,由于它依赖于b l k t a p 结构,所以目前并不支持全虚拟化客户操作系统,而且,由于其引擎依赖于文件 系统的细节,所以目前只支持e x t 2 文件系统。 x e n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论