一种基于共享内存的虚拟机通信方法技术

技术编号:3856859 阅读:691 留言:0更新日期:2012-04-11 18:40
一种基于共享内存的虚拟机通信方法。在位于同一宿主机上的客户虚拟机之间建立通信通道,由位于客户虚拟机中的管理模块创建,该通道包含两个虚拟共享内存环形队列用于接收和发送数据,一个事件通道用于发送事件信号。在Xen虚拟机监视器中为每对客户虚拟机维护两个共享内存环形队列,通信双方将本地虚拟共享内存环形队列映射到这两个队列,进而实现高带宽的数据通路。特权虚拟机中的虚拟机发现模块会在Xen虚拟机监视器中维护一张事件通道表用于收集位于同一宿主机上的所有客户虚拟机的信息,同时在每个客户虚拟机本地维护一个事件通道表的拷贝,该拷贝定时被更新,为通信提供必要的信息。客户虚拟机通过查询事件通道表获取通信目的地通信通道信息,通过通信通道实现虚拟机之间的高性能通信。

【技术实现步骤摘要】

本专利技术涉及虚拟机的域间通信领域,特别是涉及一种基于共享内存的高效虚拟机通信方法。
技术介绍
虚拟机(Virtual Machine: VM)是支持多操作系统并行运行在单个物理服务器上的一种 系统,能够提供更加有效的底层硬件使用。在虚拟机中,中央处理器芯片从系统其它部分划 分出一段存储区域,操作系统和应用程序运行在"保护模式"环境下。由于虚拟化技术最大 的优势在于他可以创建虚拟机从而为那些共享同一物理硬件平台资源的服务应用提供独立的 功能和性能。虚拟机能够提高系统范围内的利用率降低整个系统的操作开销。虚拟机监视器(Virtual Machine Monitor: VMM)是一个用于协调管理在同一宿主机内虚拟机的软件层, 它通常通过硬件或者是软件部件的帮组来强化虚拟机之间的独立性。例如开源虚拟机监视器 Xen,它是由剑桥大学开发的开源的,它提供一种称之为半虚拟化技术,使得虚拟机能够获得 接近宿主机的高性能。Xen监视器(Hypervisor)运行在系统特权最高级,有一个可信的虚 拟机称为domain 0来协助管理其他处于非特权级的虚拟机。从安全的角度来看,加强虚拟机之间的独立性是十分重要的。但是独立性也会成为在同 一宿主机内的虚拟机之间通信的障碍。目前在同一物理机上的虚拟机采用前端-后端驱动进行 通信。参阅图1所示,在目前Xen通信结构中将网络驱动分为两部分,前端驱动和后端驱动。 后端驱动位于domain 0中,前端驱动位于客户虚拟机中。虛拟机之间的通信放弃了低层次的 实际物理网络硬件进行通信,而是通过高层次的抽象网络驱动进行通信。这样做可以使得虚 拟机只需要知道使用的是网络驱动,而不用去关心使用的是什么样的网络驱动。虚拟机之间 要进行通信时,通信一方将通信数据通过前端驱动将数据发送给位于domain 0中的后端驱动。 在Xen结构中只有domain 0能够实际访问所有的物理设备资源,后端驱动在接收到数据包后, 根据数据包中的地址再经由物理网卡转发到目的IP。由于我们研究的是位于同一物理机上虚 拟机之间的通信,因此前面是经过物理网卡的一个回路,将数据包发送到了该宿主机上的另 一个虚拟机的前端驱动,然后交由应用处理。通过上面对现有的位于同一宿主机上的虚拟机通信流程分析,不难发现通信通路很长,4需要第三方的参与(domain 0的参与)才能完成通信。位于同一宿主机内的虚拟机之间通信 方法和位于网络中不同宿主机的虚拟机通信方法一样。该方法忽略了位于同一宿主虚拟机实 际上是共享了共同的物理资源,如内存、CPU等。从而造成虚拟机之间通信效率低,通信资 源利用率。在很多应用场景下需要用到虚拟机之间的通信,其通信效率直接影响到整体性能。 比如,分布式高性能计算机应用可能有两个进程位于同一物理机上的不同虚拟机,它们之间 可能因为要使用MPI库进行通信。在网络服务中,为了满足一个用户的事件请求,运行在一 个虚拟机内的服务程序可能需要和在另一个虚拟机内的数据库服务程序进行通信。在这些应 用中,都希望能够最大化通信吞吐量最小化延迟。虚拟机之间的独立性是虚拟化技术的关键所在,这一特性直接影响了位于同一宿主机上 虚拟机之间的通信性能。随着虚拟技术的广泛应用,虚拟机之间的通信性能提高的需求增大, 研究高性能的虚拟机之间的通信方法是十分必要和迫切的。为了提高虚拟机之间的通信性能, 有必要对虚拟机的特性进行分析,结合虚拟机共享物理资源的特性设计新的通信方法。因此, 本专利技术提出的基于共享内存的虚拟机通信方法对提高虚拟机通信性能、合理有效地使用虚拟 机网络资源具有非常重要的意义。
技术实现思路
本专利技术以提供直接、高效的虚拟机通信为目标,以共享内存为核心思想,解决虚拟机通信性能低的问题。具体包括1. 在物理资源层,以共享内存环结构为基础,设计无锁的可异步并发访问的共享内存访问 方法。该方法思想在于虚拟机中多个进程对该结构访问时,不需要进行明显的同步操作。2. 在虚拟资源层,以事件通道为基础,建立虚拟机之间的通信通路,同时在虚拟机内部设 计了虚拟处理器的动态绑定事件通道方法,实现虚拟机之间的通信通路。在虚拟机监视 器中设计事件通道表,给虚拟机间通信提供必要的信息。3. 在可信虚拟机中(domain 0),设计虚拟机动态发现机制以及虚拟机信息维护方法。虚拟 机动态发现机制在于当有新的虚拟机创建或是有虚拟机迁移或销毁时,可信虚拟机能够 及时发现,并记录相关信息。虚拟机信息维护是将在同一宿主机内的虚拟机的信息进行 收集和整理。4. 在客户虚拟机,设计虚拟机通信管理方法,该方法主要用于和可信虚拟机进行一些必要 的信息通信,以及和其他虚拟机进行通信前的必要通信通路准备工作。与现有技术相比,本专利技术的创新之处在于抓住在同一宿主机的虚拟机共享物理资源的特性,基于共享内存实现高效的虚拟机通信。具体体现在1. 虚拟机发现,让虚拟机感知到位于同一宿主机上的其他虚拟机。对于位于不同宿主机上的虚拟机之间的通信只能采用传统的通信方法,对于同一宿主机的虚拟机可以采用更直接高效的通信方法,但是首先需要让虚拟机感知到其他虚拟机的存在。2. 相比传统通信通路需要第三方的参与,本专利技术提供直接的、高效的通信通路。当虚拟机要进行通信时,通过和通信方建立通信通道,直接进行数据通信。本专利技术提出,该方法在具有如下结构的系统上实现:该系统具有Xen监视器,该Xen监视器作为虚拟机监视器监管其他运行在实际物理机上的虚拟机,该系统具有特权虚拟机,该特权虚拟机拥有所有权限,可以直接访问物理资源,该系统还具有多个客户虚拟机,客户虚拟机之间进行通信,该方法的特征在于包括如下步骤1) 在Xen监视器中维护一张事件通道表,用于记录物理机上所有客户虚拟机的信息,在每个客户虚拟机内维护 一份事件通道表拷贝;2) Xen监视器为新创建的客户虚拟机及与其通信的一客户虚拟机创建一对实际物理共享内存环形队列第一实际物理内存环形队列和第二实际物理内存环形队列,所述实际物理共享内存环形队列用于客户虚拟机之间的数据通信;3) 在参与通信的两个客户虚拟机本地各自设置两个虚拟共享内存环形队列虚拟数据发送共享内存环形队列和虚拟数据接收共享内存环形队列,两个客户虚拟机各自将本地虚拟共享内存环形队列映射到其所属的实际物理共享内存环形队列;在映射过程中,第一客户虚拟机的虚拟数据发送共享内存环形队列和第二客户虚拟机的虚拟数据接收共享内存环形队列共同映射到第一实际物理共享内存环形队列;第一客户虚拟机的虚拟数据接收共享内存环形队列和第二客户虚拟机的虚拟数据发送共享内存环形队列共同映射到第二实际物理共享内存环形队列;4) 所述新建客户虚拟机为与其通信的客户虚拟机创建一事件通道,并将该事件通道信息发送给与所述新建客户虚拟机通信的虚拟客户机,事件通道用于在通信的两个虚拟机之间传送信号告知事件发生;5) 当虚拟机之间需要通信时,通讯发起方根据通信目的IP地址査询本地事件通道表从而知道通信目的是否是在同一宿主机上,如在同一宿主机上,客户虚拟机将要发送的数据写入本地虚拟数据发送共享内存环形队列;通信目的客户虚拟机会从事件通道得知数据到来,从本地虚拟数据接收共享内存环形队列读取数据。事件通道表包含三个属性Domain、 IP、 Port, Do本文档来自技高网
...

【技术保护点】
一种基于共享内存的虚拟机通信方法,该方法在具有如下结构的系统上实现:该系统具有Xen监视器,该Xen监视器作为虚拟机监视器监管其他运行在实际物理机上的虚拟机,该系统具有特权虚拟机,该特权虚拟机拥有所有权限,可以直接访问物理资源,该系统还具有多个客户虚拟机,客户虚拟机之间进行通信,该方法的特征在于包括如下步骤:  1)在Xen监视器中维护一张事件通道表,用于记录物理机上所有客户虚拟机的信息,在每个客户虚拟机内维护一份事件通道表拷贝;  2)Xen监视器为新创建的客户虚拟机及与其通信的一客户虚拟机创建一对实际物理共享内存环形队列:第一实际物理内存环形队列和第二实际物理内存环形队列,所述实际物理共享内存环形队列用于客户虚拟机之间的数据通信;  3)在参与通信的两个客户虚拟机本地各自设置两个虚拟共享内存环形队列:虚拟数据发送共享内存环形队列和虚拟数据接收共享内存环形队列,两个客户虚拟机各自将本地虚拟共享内存环形队列映射到其所属的实际物理共享内存环形队列;在映射过程中,第一客户虚拟机的虚拟数据发送共享内存环形队列和第二客户虚拟机的虚拟数据接收共享内存环形队列共同映射到第一实际物理共享内存环形队列;第一客户虚拟机的虚拟数据接收共享内存环形队列和第二客户虚拟机的虚拟数据发送共享内存环形队列共同映射到第二实际物理共享内存环形队列;  4)所述新建客户虚拟机为与其通信的客户虚拟机创建一事件通道,并将该事件通道信息发送给与所述新建客户虚拟机通信的虚拟客户机,事件通道用于在通信的两个虚拟机之间传送信号告知事件发生;  5)当虚拟机之间需要通信时,通讯发起方根据通信目的IP地址查询本地事件通道表从而知道通信目的是否是在同一宿主机上,如在同一宿主机上,客户虚拟机将要发送的数据写入本地虚拟数据发送共享内存环形队列;通信目的客户虚拟机会从事件通道得知数据到来,从本地虚拟数据接收共享内存环形队列读取数据。...

【技术特征摘要】

【专利技术属性】
技术研发人员:白跃彬罗成张良
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利