CN104615485B - 一种虚拟机域间通信模式的动态透明切换方法 - Google Patents

一种虚拟机域间通信模式的动态透明切换方法 Download PDF

Info

Publication number
CN104615485B
CN104615485B CN201510092457.4A CN201510092457A CN104615485B CN 104615485 B CN104615485 B CN 104615485B CN 201510092457 A CN201510092457 A CN 201510092457A CN 104615485 B CN104615485 B CN 104615485B
Authority
CN
China
Prior art keywords
symbiosis
client computer
communication
submodule
local communication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510092457.4A
Other languages
English (en)
Other versions
CN104615485A (zh
Inventor
任怡
吴庆波
刘仁仕
戴华东
孔金珠
管剑波
邵立松
阳国贵
高珑
史佩昌
刘晓东
吕品
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201510092457.4A priority Critical patent/CN104615485B/zh
Publication of CN104615485A publication Critical patent/CN104615485A/zh
Application granted granted Critical
Publication of CN104615485B publication Critical patent/CN104615485B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种虚拟机域间通信模式的动态透明切换方法,目的是解决现有切换方法要么不能保证用户透明性、要么通信效率较低的问题。技术方案是在客户机操作系统中构造由初始化、系统调用截获、共生VM集合维护、共生VM判定、通信优化功能注销5个子模块构成的域间通信优化内核模块;在宿主机操作系统中构造由共生VM动态发现子模块与共生VM发布子模块构成的共生VM动态发现与发布模块;由域间通信优化内核模块和共生VM动态发现与发布模块优化虚拟机域间通信,通过动态发现共生VM、截获网络请求相关的系统调用等手段实现虚拟机域间通信时本地模式与远程模式之间的透明切换,提高了通信效率,且支持VM在线迁移、无需修改操作系统内核。

Description

一种虚拟机域间通信模式的动态透明切换方法
技术领域
本发明涉及云计算、操作系统、网络通信虚拟化领域中基于系统调用截获的虚拟机域间通信模式的动态透明切换方法。
背景技术
虚拟化技术已成为云计算环境IaaS(Infrastructure as a Service)层的重要使能技术之一。它通过虚拟机监控器VMM(Virtual Machine Monitor)软件对物理计算机的CPU、内存、I/O等设备进行虚拟化,在一台物理计算机(简称物理机)上虚拟出多个虚拟机VM(Virtual Machine,也称虚拟机域),每个VM都运行一个客户操作系统(Guest OS,客户机)。VMM与一个特权虚拟机域(Dom0或Host OS,宿主机)协调,保证位于同一物理计算机上的VM之间的相互隔离,支持无需宕机的前提下将VM从一台物理机在线迁移(Live Migration)到另一台物理机。虚拟化技术在VM功能和性能隔离、基于VM在线迁移的负载均衡和系统容错、应用移植性、提高资源利用率、降低运维难度和成本等方面的优势使其被广泛应用于以Amazon为代表的大型数据中心和云计算环境的IaaS平台中,其典型应用涵盖高性能计算、大规模分布式计算、Web事务处理,等等,对于这类应用,网络通信是其负载的重要组成部分。
通常将位于同一物理机上的VM称为共生(co-located)VM。导致VM间通信性能折损的一个重要原因在于基于VMM的VM间通信并不区分数据传输请求是否来自于共生VM,即并不判断通信双方是否具有共生关系。这就使得无论通信双方VM是否位于同一物理机上,都将采用基于TCP/IP的虚拟网络远程通信模式,通信数据的发送和接收均需经过多层网络协议栈,通信路径比较长,且各VM与Dom0/VMM之间的上下文切换比较频繁,通信性能开销较大。而共生VM间的通信已成为虚拟网络通信负载中不可忽视的组成部分,对于位于同一物理机上的共生VM间通信而言,基于TCP/IP的远程通信模式会产生不必要的性能损耗。因此,如何面向共生VM进行通信优化成为一个值得关注的问题。一类现有的方法是建立共生关系感知(Co-location Aware)的虚拟机域间通信优化机制,即通过判断通信双方VM是否在同一台物理机上来区别处理:对于共生VM域间的通信,采用本地共享内存机制建立共享内存通道,以取代通信路径较长的基于TCP/IP的通信路径,从而降低通信开销,该通信模式称为本地模式;对于不在同一台物理机上的非共生VM,仍采用基于TCP/IP的传统方式进行通信,该通信模式称为远程模式。该方法支持面向共生VM的域间通信优化,可有效缩短基于TCP/IP的虚拟网络通信路径长度、并减少上下文切换次数,从而提高运行在VM中的以Web系统、高性能Grid应用、在线事务处理、分布和并行计算系统等为代表的网络通信密集型应用的通信效率。
VM在线迁移是虚拟化技术的重要特性,VM在线迁移是指在不中断服务的前提下,将正在运行的VM从一台物理机移植到另一台物理机上,该特性能够有效支持系统负载平衡、容错恢复、降低能耗及提高可管理性,设计良好的共生关系感知的虚拟机域间通信优化机制在提高虚拟机域间通信效率的同时不应破坏该特性,这就为该类机制的构建带来了一定难度,为了保持VM在线迁移特性,需支持虚拟机域间通信的本地模式和远程模式之间的透明切换。如何在保证通信模式切换对用户透明的前提下,支持VM在线迁移、共生VM动态发现和共生VM集合维护、以及虚拟机域间通信模式的切换,且以较小的性能开销实现虚拟机域间通信模式切换,是本领域技术人员极为关注的技术问题。
目前,已有的支持VM在线迁移的共生关系感知的虚拟机域间通信机制有IVC(Inter-VM Communication)、XWAY、XenLoop和MMNet(Memory-Mapped Network)。然而,IVC和XWAY采用预先设置的方式来静态确定参与通信的各台物理机上的共生VM集合,能够支持共生VM之间本地通信模式与非共生VM之间远程通信模式之间的自动切换,但由于VM在线迁移发生的时机并不总是预先确定的,这类方法不能支持两种通信模式之间对用户的透明切换。而XenLoop和MMNet均支持VM在线迁移、共生VM动态发现和共生VM集合维护、以及虚拟机域间通信模式的透明切换。但XenLoop和MMNet都是IP层之下完成网络请求的截获,由于其请求截获机制在TCP/IP网络协议栈中所处层次较低,与更高层次的截获方法相比,数据传输需要经过更长的通信路径,且需要在所经过的网络协议栈中逐层进行数据封装或解封,带来的性能开销较大。
鉴于此,本发明提出一种新的支持VM在线迁移的共生关系感知且开销更小的虚拟域间通信机制。
发明内容
本发明要解决的技术问题是:针对目前Linux系统中共生关系感知的虚拟机域间通信模式切换方法的不足,即要么不能在支持在线迁移的同时保证用户透明性、要么实现层次偏底层、通信效率较低,提出一种基于系统调用截获的虚拟机域间通信模式的透明切换方法,该方法通过动态发现共生VM、以及截获网络请求相关的系统调用(系统调用是由操作系统实现提供的所有系统调用所构成的集合即程序接口或应用编程接口,是应用程序同系统之间的接口)的手段来实现虚拟机域间通信时本地模式与远程模式之间的透明切换,使得用户透明性和通信效率得以兼顾,同时,该方法还具有支持VM在线迁移、无需修改操作系统内核等特点。
其基本思想是:为网络通信相关的系统调用分别构造对应的自定义处理函数,将系统调用的原有缺省处理函数替换为自定义函数,自定义函数根据在截获网络通信相关系统调用请求时所获取的通信双方VM信息、利用已构造的共生VM动态发现和发布、共生VM集合维护机制来判定通信双方VM是否是共生VM,若是共生VM,则采用基于共享内存的本地通信模式,否则,重定向到操作系统中原有的面向TCP/IP的缺省处理函数进行处理。
本发明的技术方案是:在客户机操作系统中构建域间通信优化内核模块,在宿主机中构建共生VM动态发现与发布模块,该模块由共生VM动态发现和共生VM发布两个子模块组成。
在描述本发明的具体思想之前,首先对本发明所用到的几大重要数据结构及其操作进行说明。
1.系统调用表(sys_call_table):Linux系统分为内核态和用户态,用户程序无法直接运行内核态的函数,必须借助系统调用实现,如建立网络连接,发送网络数据,接收网络数据等。系统调用表是Linux系统内核中固有的数据结构,由系统调用号和处理函数地址组成,在用户程序进行系统调用时,首先会传入系统调用号和参数,系统再通过系统调用号在系统调用表中找到相应的处理函数地址,最后找到相应的处理函数对参数进行处理。本发明的技术方案针对系统调用表的操作主要有:
a)更改系统调用表所在页的读写属性:为了安全起见,系统调用表的初识属性是只读,为了能够替换处理函数地址,需要将系统调用表的属性更改为可写属性。
b)备份原处理函数地址:即将原处理函数地址值取出,赋给函数备份指针。
c)替换处理函数地址:将系统调用表中的处理函数地址更改为自定义的处理函数地址。
d)恢复系统调用原处理函数地址:将原处理函数备份指针重新写到系统调用表相应位置。
在本发明技术方案中,要截获的系统调用是网络请求相关系统调用,主要有:建立网络连接,发送网络数据,接收网络数据,关闭网络连接。
2.宿主机共生VM列表:存放的是本物理机上存在共生关系的VM,每个列表项由<DomID,IP>二元组组成,DomID是指客户机的ID,IP是客户机的IP地址,若系统中有n个存在共生关系的VM,则宿主机共生VM列表有n个列表项,第i项代表的是VMi。本发明的技术方案针对宿主机共生VM列表的操作主要有:
a)初始化:仅从内存中申请一段空间,列表项数目为零。
b)插入:当发现系统中有新的共生VM,则获取它的DomID和IP,插入到宿主机共生VM列表中,宿主机共生VM列表项数目加一。
c)删除:当发现系统中有共生VM销毁,或者停止使用域间通信优化功能,则将这一VM对应的列表项删除,列表项数目减一。
d)销毁:将宿主机共生VM列表的内存空间释放,返还给系统。
3.客户机共生VM列表:存放的是与客户机存在共生关系的VM,每个列表项由<DomID,IP>二元组和一个Hash表指针组成,二元组如上所述,Hash表指针指向一个本地通信连接Hash表。若系统中存在n个共生VM,则每个客户机中的共生VM列表中有n-1项,第i项代表代表第i个共生VM,表项中的Hash表指针指向客户机与VMi之间的本地通信连接Hash表。对于客户机共生VM列表的操作,主要有:
a)初始化:向系统申请一段内存空间,列表数目为0。
b)插入:将列表中不存在的二元组<DomID,IP>插入到客户机共生VM列表中,并初始化一张本地通信连接Hash表,再将新插入的列表项中Hash表指针指向Hash表地址,最后客户机共生VM列表项数目加1。
c)删除:找到要删除的列表项,先将列表项中Hash表指针所指向的本地通信连接Hash表销毁,再将列表项删除,最后客户机共生VM列表项数目减1。
d)销毁:先删除所有的列表项,再将客户机共生VM列表所占内存空间释放。
e)查找:传入通信的ip地址,查找列表项中是该ip地址对应的项在哪,若找到,则将列表项位置返回,否则返回“-1”,代表该ip地址代表的机器与本客户机不存在共生关系。
4.本地通信连接Hash表:Hash表中存放的每一项代表本VM与某共生VM之间的一组本地通信连接,若本VM与VMi(两者为共生VM关系)存在n组本地通信连接,则客户机共生VM列表第i项Hash表指针所指向的Hash表就存在n项。Hash表项以通信端口号为关键字做Hash运算并存放以下数据:通信端口号;发送缓冲区地址和大小、接收缓冲区地址和大小。本发明技术方案中,针对本地通信连接Hash表的操作主要有:
a)初始化:为本地通信连接Hash表申请一段内存空间,返回值是这段内存空间的首地址。此时Hash表项数目为0。
b)插入:当要建立一组本地通信连接的时候,会对本地通信连接Hash表进行插入操作。插入之前,应先建立本地通信连接,建立本地通信连接过程如下:本地通信连接发起者(某VM)首先向VMM申请数据发送缓冲区、数据接收缓冲区和事件缓冲区,再将所申请的这三个缓冲区的地址及通信端口号发送给本地通信连接响应者(另一VM),响应者新建Hash表项,在新建的Hash表项中存放缓冲区地址和端口号,数据缓冲区大小初始值为缓冲区大小,然后对端口号进行Hash运算,再插入到自己的本地通信连接Hash表中,响应者Hash表项数目加1,然后发送一个响应消息给本地通信连接发起者,发起者接到消息后,将这一本地通信连接插入发起者本地通信连接Hash表中,发起者Hash表项数目加1。
c)删除:在关闭本地通信连接之后将该通信连接所在的Hash表项删除,删除后,Hash表项数目减1。本地通信连接关闭过程如下:首先,关闭发起方通知响应方欲关闭通信连接并设置一个时钟,响应方收到消息后,处理遗留数据后将对应的Hash表项删除,发送响应消息给关闭连接的发起方,发起方将本地通信连接中的各个缓冲区释放,最后发起方将对应的Hash表项删除,考虑到响应方销毁的情况,此时发起方会在时钟到来时直接将本地通信连接中的各个缓冲区释放,最后将对应的Hash表项删除。
d)销毁:在Hash表所对应的共生VM销毁或停止使用共生VM域间通信优化功能时,客户机要将客户机共生VM列表中的列表项删除,删除之前先要将列表项中Hash表指针所指向的Hash表销毁。销毁过程就是先将所有的本地通信连接Hash表项删除,再释放Hash表的内存空间。
e)查找:传入通信端口号,对通信端口号进行Hash运算快速定位对应的本地通信连接表项,若存在,则将表项地址返回,若不存在,则返回“空”指针。
第一步,在客户机操作系统中构造域间通信优化内核模块,该模块由客户机共生VM列表、本地通信连接Hash表、初始化子模块、系统调用截获子模块、共生VM集合维护子模块、共生VM判定子模块、通信优化功能注销子模块组成:
初始化子模块在VM成功启动且加载域间通信优化内核模块之后被触发,该子模块负责构建并初始化客户机共生VM列表、获取系统调用表地址、备份系统调用表中网络请求相关的各个系统调用的缺省处理函数地址、用系统调用截获子模块中入口处理组件中的自定义的处理函数地址替换系统调用缺省处理函数地址,与宿主机共生VM动态发现子模块、通信优化功能注销子模块、系统调用截获子模块连接,将本客户机使用了共生VM域间通信优化功能这一消息发送给宿主机共生VM动态发现子模块,将备份的缺省处理函数地址送给通信优化功能注销子模块,从系统调用截获子模块收到入口处理组件,用入口处理组件中自定义的处理函数地址替换系统调用缺省处理函数地址。系统调用表在操作系统内核中也是对应一段连续的内存,系统调用表地址即这段内存的起始地址。
系统调用截获子模块由入口处理组件、本地通信连接管控组件、数据发送与接收组件组成。入口处理组件与通信优化功能注销子模块、共生VM判定子模块连接,负责触发本地通信连接管控组件或数据发送与接收组件,将自定义的处理函数地址送给通信优化功能注销模块,将请求的数据发送或接收地址送给共生VM判定模块。本地通信连接管控组件与共生VM集合维护子模块、数据发送与接收组件连接,负责建立或关闭通信双方VM间的基于共享内存的连接,它从共生VM集合维护子模块中接收当前共生VM集合的变化信息,更新通信双方VM间的基于共享内存的连接状态,将基于共享内存的连接状态送给数据发送与接收组件。数据发送与接收组件与共生VM集合维护子模块、入口处理组件及本地通信连接管控组件连接,负责处理数据发送或接收请求,它从入口处理组件接收数据接收或者发送的请求地址及数据,将其送给本地通信管控组件;从共生VM集合维护子模块收到共生VM变更信息,将共生VM变更信息送给本地通信管控组件。
共生VM判定子模块与共生VM集合维护子模块和系统调用截获子模块的入口处理组件相连,负责判定通信双方VM是否是共生VM。共生VM判定子模块从系统调用入口处理组件接收请求的IP信息,从共生VM集合维护子模块接收最新的客户机共生VM列表,对客户机共生VM列表执行查找操作,将查找结果送给入口处理组件。
共生VM集合维护子模块与宿主机、系统调用截获子模块的本地通信连接管理组件相连,负责更新本客户机中客户机共生VM列表中共生VM集合成员信息。共生VM集合维护子模块接收来自宿主机的共生VM集合成员变更事件和对应的VM的<DomID,IP>、更新本客户机的客户机共生VM列表。
通信优化功能注销子模块负责在用户通过rmmod命令(Linux系统用于卸载模块的标准命令)卸载域间通信优化内核模块时注销当前VM的域间通信优化功能,使得VM间通信重新采用基于TCP/IP的远程模式。通信优化功能注销子模块与初始化子模块、宿主机、系统调用截获子模块的本地通信管控组件连接,从初始化子模块收到系统调用缺省处理函数地址,将这些函数地址重写到系统调用表中,将注销消息送给宿主机的共生VM动态发现子模块,将关闭所有共生VM连接的消息发送给本客户机的本地通信连接管控组件。
第二步,在宿主机操作系统中构造共生VM动态发现与发布模块。该模块由共生VM动态发现子模块与共生VM发布子模块构成。共生VM动态发现子模块负责创建并维护宿主机共生VM列表,它与客户机的初始化子模块、客户机通信优化功能注销子模块连接,将该客户机的DomID和IP添加到宿主机共生VM列表中;从客户机通信优化功能注销子模块接收客户机注销了域间通信优化功能的消息,将该客户机从共生VM列表中删除。共生VM发布子模块负责将共生VM列表发布给本物理机上加载了域间通信优化内核模块的客户机,它与客户机的共生VM集合维护子模块连接,将最新共生VM列表送给客户机的共生VM集合维护子模块。
第三步,采用客户机中的域间通信优化内核模块和宿主机中的共生VM动态发现与发布模块优化虚拟机域间通信,具体步骤为:
3.1在客户机中使用insmod命令(Linux系统内核动态加载模块的标准命令)加载虚拟域间通信优化内核模块:
3.1.1客户机触发域间通信优化内核模块中的初始化子模块,初始化子模块进行以下初始化:
3.1.1.1将本客户机“使用了共生VM域间通信优化功能”这一消息发送给宿主机。
3.1.1.2构建并初始化客户机共生VM列表。即向系统申请一段内存空间,列表数目为0。
3.1.1.3获取本客户机操作系统中的系统调用表地址,备份系统调用表中网络请求相关的各个系统调用的缺省处理函数地址,将系统调用表所在内存页映射到一片新的可写的虚地址空间。
3.1.1.4将系统调用截获模块的入口处理组件的地址(即在入口处理组件中重新定义的网络通信系统调用的函数地址)写入所映射到的内核内存页面中的系统调用表中网络通信请求相关的各表项中,以替换系统调用的原有缺省处理函数地址。
3.1.1.5请求操作系统预留连续的虚地址空间,并向VMM发出请求,由其建立共享内存缓冲区,用于存放相互通信的VM的本地通信连接、待传输的数据和待处理的事件。
3.2在宿主机中使用insmod命令加载共生VM动态发现与发布模块:
3.2.1宿主机触发共生VM动态发现子模块。
3.2.1.1共生VM动态发现子模块初始化宿主机共生VM列表,即向系统申请一段内存空间,列表数目为0。
3.2.1.2共生VM动态发现子模块请求从VMM获取宿主机共生VM列表中的相关客户机的<DomID,IP>映射关系项,以及监测各个客户机的客户机事件:VM创建、VM重启、VM迁入、VM迁出、VM销毁(在VMM中存放有各VM当前状态的数据库,通过对这个数据库进行监测可以得到各VM的DomID、IP和当前状态)。
3.2.2宿主机触发共生VM发布子模块,向所有共生VM列表中的客户机发布最新的<DomID,IP>映射关系项以及宿主机共生VM列表中VM发生的客户机事件。
3.3客户机中共生VM集合维护子模块接收宿主机共生VM发布子模块发来的信息,针对动态VM的更新事件执行以下步骤:
3.3.1若收到的事件是VM创建或者VM重启,将创建或重启的VM对应的<DomID,IP>插入到客户机共生VM列表中,并为该列表项初始化一张本地通信连接Hash表。即为本地通信连接Hash表申请一段内存空间,返回值是这段内存空间的首地址。此时Hash表项数目为0;
3.3.2若收到的事件是VM迁入,将迁入的VM所对应的<DomID,IP>插入到客户机共生VM列表,为插入的列表项初始化一张本地通信连接Hash表,同时检测迁入前该客户机是否跟本客户机存在通信,若存在,则建立本地连接,同时关闭TCP/IP连接。
3.3.3若收到的事件是VM迁出,检测迁出的客户机是否跟本客户机存在本地通信连接,若存在,则保存并处理遗留数据(尚未完成传输的数据),建立TCP/IP连接,删除客户机共生VM列表中迁出的VM所对应的的列表项。
3.3.4若收到的共生VM集合成员变更事件为VM销毁,则:关闭同被销毁的VM相关的所有通信连接(本地通信连接及基于TCP/IP的连接);删除客户机共生VM列表中的对应的列表项。
3.4客户机接收应用程序的系统调用和外部命令,针对系统调用或外部命令做如下处理:若是网络通信相关的系统调用,则触发系统调用截获子模块进行处理;若是卸载域间通信优化内核模块的命令,则触发通信优化内核注销子模块进行处理;若是其他系统调用或命令,域间通信优化内核模块不对其做任何处理。具体方法为:
3.4.1若系统调用是建立网络连接,则:系统调用截获子模块中的本地通信连接管控组件根据参数IP地址和端口号,首先在客户机共生VM列表中查找IP地址,若得到返回值“-1”,则说明进行非共生VM通信,交由缺省处理函数处理;若得到非负返回值,则说明是共生VM通信,对于共生VM通信,通过返回值得到IP地址所在的客户机共生VM列表项,再通过客户机共生VM列表项中Hash表指针所指向的本地通信连接Hash表中查找端口号对应的本地通信连接的位置,如果找到,则返回找到的位置值,代表已经建立,转3.4;否则,返回“-1”,意味未建立,则创建本地通信连接并将本地通信连接插入到本地通信连接Hash表,转3.4,创建本地通信连接和插入Hash表操作如下:本地通信连接发起者(某VM)首先向VMM申请数据发送缓冲区、数据接收缓冲区和事件缓冲区,再将所申请的这三个缓冲区的地址及通信端口号发送给本地通信连接响应者(另一VM),响应者新建Hash表项,在新建的Hash表项中存放缓冲区地址和端口号,数据缓冲区大小初始值为缓冲区大小,然后对端口号进行Hash运算,再插入到自己的本地通信连接Hash表中,响应者Hash表项数目加1,然后发送一个响应消息给本地通信连接发起者,发起者接到消息后,将这一本地通信连接插入到发起者本地通信连接Hash表中,发起者Hash表项数目加1。
3.4.2若系统调用的类别是数据发送,则:触发系统调用截获子模块中的本地通信连接管控组件,本地通信连接管控组件根据参数IP地址和端口号,查找是否存在通信双方VM对应的本地通信连接,若不存在,则表明当前通信双方已不在同一台物理机上,按操作系统常规流程基于TCP/IP连接来发送数据,否则基于第3.4.1步所建立的本地通信连接进行本地数据发送;
3.4.3若系统调用的类别是数据接收,则:触发系统调用截获子模块中的本地通信连接管控组件,本地通信连接管控组件根据参数IP地址和端口号,查找是否存在通信双方VM对应的本地通信连接,若不存在,则表明当前通信双方已不在同一台物理机上,按操作系统常规流程基于TCP/IP连接来接收数据,否则由系统调用截获子模块中的数据发送与接收组件进行基于共享内存的本地数据接收;
3.4.4若系统调用的类别是关闭网络连接,则:触发系统调用截获子模块中的本地通信连接管控组件,本地通信连接管控组件首先根据参数IP和端口号,找到相应的本地通信连接Hash列表项,再对这个列表项执行删除操作,转3.4。对列表项的删除操作如下:在关闭本地通信连接之后将该通信连接所在的Hash表项删除,删除后,Hash表项数目减1。本地通信连接关闭过程如下:首先,关闭发起方通知响应方欲关闭通信连接并设置一个时钟,响应方收到消息后,处理遗留数据后将对应的Hash表项删除,发送响应消息给关闭连接的发起方,发起方将本地通信连接中的各个缓冲区释放,最后发起方将对应的Hash表项删除,考虑到响应方销毁的情况,此时发起方会在时钟到来时直接将本地通信连接中的各个缓冲区释放,最后将对应的Hash表项删除。
3.4.5若客户机中的域间通信优化内核模块接收到卸载该内核模块的调用请求或外部命令(如rmmod),则注销该客户机的通信优化功能,其后的网络通信操作相关的系统调用请求将采用常规的基于TCP/IP的通信模式来处理,无论通信双方VM是否在同一台物理机上;注销方法为:
3.4.5.1触发通信优化功能注销子模块,若当前VM的共生VM正在进行本地通信,则首先完成当前本地数据传输,同时挂起新到的网络通信操作相关请求,调用本地通信连接管控组件关闭此本地通信连接,接着对系统调用表执行恢复系统调用原处理函数地址操作,然后终止将系统调用表属性更改为只读,防止非法进程篡改系统调用表,最后处理挂起的网络通信操作相关请求;
3.4.5.2客户机将“注销了通信优化功能”这一消息送给宿主机操作系统中的共生VM动态发现与发布模块,宿主机将要注销通信优化功能的客户机从宿主机共生VM列表中删除,然后将这一事件发布给所有本物理机上的客户机,其他客户机将会各自删除各自通信优化内核模块中客户机共生VM列表中的对应于注销了通信优化功能这一客户机的列表项。
第四步,卸载宿主机中的共生VM动态发现与发布模块:若共生VM动态发现与发布模块收到卸载该内核模块的调用请求或外部命令(rmmod命令),首先通知该宿主机中中共生VM列表中VM对应的各个客户机卸载其域间通信优化内核模块,然后销毁宿主机共生VM列表,最后停止共生VM动态发现与发布模块的运行。
采用本发明能够达到如下的技术效果:
本发明支持虚拟机域间通信模式的动态切换(如第二步和第3.2步所示,各个客户机可以动态感知共生VM集合的状态变化)。与IVC、XWAY相比,无需为使能本地通信模式而预先配置共生VM集合,支持共生VM的动态发现,共生VM的发现和管理对用户透明,共生VM集合的维护和更新无需人工干预,且允许通信过程中VM的共生关系发生动态变化,能够保证VM动态加入或退出当前物理机(发生VM创建、销毁、在线迁移、失效等事件)时本地和远程两种通信模式切换的正确性。
本发明的实现对客户机的应用层、内核层透明。由1.2可知,本发明未对用户编程接口和用户库作出任何更改,应用程序仍然使用标准的网络接口进行通信,即用户不感知底层支撑机制,且无需修改应用编程和使用模式,即可利用本发明对虚拟机域间通信进行优化;由3.1和3.2可知本发明遵循标准的操作系统内核模块开发接口,在用户层和IP层之间构建了自包含可动态加载的内核模块,未对操作系统内核的已有组成做出改变,因此,无需修改操作系统内核代码并进行重新编译和链接。
采用本发明能够极大地优化虚拟机域间通信性能。基于TCP/IP的虚拟机域间远程通信不区分通信双方是否是共生VM,VMM和客户机之间的切换次数以及数据拷贝次数比较多,性能损失较大;基于共享内存的虚拟机域间本地通信能够有效减少VM与客户机之间的切换、以及数据拷贝次数,能有效提高通信效率。更进一步,与现有共生关系感知的虚拟机域间通信优化方法相比,该方法不但支持VM在线迁移等情况下通信模式的动态透明切换、能够保证客户机的应用层、内核层透明,而且本发明中在用户层和IP层之间截获系统调用的方法与在IP层之下截获网络报文的XenLoop方法相比,数据发送和接收无需穿过多层网络协议栈,缩短了数据传输路径,同时可避免不必要的数据封装和解封的操作,能够有效减少时间开销。
附图说明
图1为背景技术中XenLoop的网络报文截获方案的示意图;
图2为本发明总体流程图;
图3为本发明第一步构造的宿主机中的共生VM动态发现与发布模块及客户机域间通信优化内核模块在Linux操作系统内核网络层次中所处位置的示意图;
图4为本发明第一步所构建的支持虚拟机域间通信本地模式和远程模式动态透明切换所需的虚拟机系统的结构图;
图5为本发明第3.1.1.2步所初始化的客户机共生VM列表和3.3.1及3.3.2步中所初始化的本地通信连接Hash表数据结构示意图。
图6为本发明第3.1.1.3和3.1.1.4步备份及截获系统调用操作示意图;
具体实施方式
图1是背景技术中XenLoop的网络报文截获方案原理的示意图。该图中客户机1和客户机2表示正在进行网络通信的两个VM,两者运行于VMM之上,自下而上均由虚拟网络驱动前端、XenLoop层、网络层、传输层、Socket层和应用层组成。其中,XenLoop层各包含一个内核模块,该内核模块基于IP层之下的第三方钩子软件netfilter实现,用于截获数据包,获取其头(header)信息并作相应分析和处理:当通信双方是共生VM时,数据以本地通信模式经由共享内存通道进行传输,数据缓冲区A和B用于数据发送/接收;当通信双方不是共生VM,即不位于同一台物理机上时,数据仍以基于TCP/IP网络协议的远程通信模式传输,在该模式下,数据经过多层网络协议栈之后被IP层之下的XenLoop层内核模块转发到虚拟网络驱动前端,虚拟网络驱动前端与宿主机中的驱动后端通信,数据经由以太网桥和驱动后端转发给接收方的虚拟网络驱动前端,然后通过XenLoop层内核模块以及多层网络协议栈,最终达到应用层。
图2为本发明总体流程图。
第一步,构造客户机操作系统中的域间通信优化内核模块,方法是遵循标准的Linux操作系统内核模块开发接口,在用户层和IP层之间添加一个自包含可加载的域间通信优化内核模块,该内核模块由初始化、系统调用截获、共生VM判定、共生VM集合维护、通信优化功能注销五个子模块组成。
第二步,构造宿主机操作系统中的共生VM动态发现与发布模块,共生VM动态发现与发布模块由共生VM动态发现子模块和动态发布子模块组成。
第三步,采用第一步客户机中构造的域间通信优化内核模块和第二步宿主机中构造的共生VM动态发现与发布模块优化虚拟机域间通信。方法是:
3.1在客户机操作系统中使用insmod命令加载第一步构建的域间通信优化内核模块。
3.2在宿主机操作系统中使用insmod命令共生VM动态发现与发布模块。
3.3客户机操作系统中所加载的域间通信优化内核模块中的共生VM集合维护子模块与宿主机操作系统中的共生VM动态发现与发布模块相互协作,动态感知本物理机上共生VM的状态变更情况。
3.4客户机接收应用程序的系统调用和外部命令,针对系统调用或外部命令做如下处理:若是网络通信相关的系统调用,则触发系统调用截获子模块进行处理:即通过系统调用截获,将共生VM网络通信从原TCP/IP数据传递方式旁路为共享内存数据传递方式;若是卸载域间通信优化内核模块的命令,则触发通信优化内核注销子模块进行处理,即先完成当前VM上的遗留本地连接数据传输,再关闭本地通信连接,恢复系统调用表,最后发送“注销了本地通信优化功能”这一消息给宿主机的共生VM动态发现与发布模块。
第四步,当共生VM动态发现与发布模块接收到停止运行的外部命令时,首先通知共生VM列表中各个VM对应的客户机卸载其域间通信优化内核模块,然后销毁共生VM列表,最后停止共生VM动态发现与发布模块的运行。
图3为本发明第一步构造的域间通信优化内核模块在Linux内核网络层次中所处位置的示意图。该图中客户机1和客户机2表示正在进行网络通信的两个VM,两者运行于VMM之上,自下而上均由虚拟网络驱动前端、IP层以下、网络层、传输层、Socket层和应用层组成。其中,客户机1和客户机2在socket层和传输层之间各包含一个域间通信优化内核模块,对于共生VM之间的数据传输,该模块替换原传输层,将原Socket层向传输层传递的数据旁路到本地通信连接上。当某个VM准备使用共生关系感知的虚拟机域间通信优化功能时,首先加载域间通信优化内核模块。该模块通过截获系统调用并分析网络通信操作相关请求的参数来感知当前网络通信操作请求是否发生在共生VM之间:若双方是共生VM,数据以本地通信模式经由共享内存通道进行传输,数据缓冲区A和数据缓冲区B用于数据发送/接收;当通信双方不是共生VM,数据仍然通过较长的TCP/IP路径(客户机socket层->客户机传输层->客户机IP层->客户机虚拟网络前端->宿主机网络驱动后端->远程计算机)以远程通信模式传输,该模式需要宿主机的介入,意味着更频繁的上下文切换和数据拷贝次数。当发生VM创建、迁入、迁出、销毁、失效等共生VM集合成员变更事件时,域间通信优化内核模块与Dom0中的共生VM动态发现与发布模块相互配合,进行共生VM信息维护、遗留数据处理,必要时进行本地模式和远程模式之间的透明切换。
图4为在本发明第一步和第二步构建的支持虚拟机域间通信本地模式和远程模式动态透明切换所需的虚拟机系统的结构图。整个虚拟机系统从下至上被分成三个部分:底层是物理计算机的硬件;中间层是第三方提供的虚拟机监控器VMM;上层是宿主机操作系统以及客户机操作系统(VM)。
客户机操作系统中的域间通信优化内核模块由初始化子模块、系统调用截获子模块、共生VM判定子模块、共生VM集合维护子模块、通信优化功能注销子模块组成:
1)初始化子模块与宿主机共生VM发现与发布系统相连,负责将已使用共生VM通信优化机制这一消息送给宿主机共生VM发现与发布系统;与系统调用截获子模块系统调用截获入口组件连接,用系统调用截获子模块入口组件中的自定义处理函数地址替换原来的网络通信请求相关的系统调用。
2)系统调用截获子模块负责实现共生VM通信优化核心流程,由入口处理、本地通信连接管控、数据发送与接收三个组件构成。各组件连接关系及工作流程如下:
a.入口处理组件,该组件在操作系统内核接收到系统调用请求时被触发。连接关系如下:
1.与共生VM判定子模块连接,负责将参数IP送给共生VM判定子模块,然后收到共生VM判定子模块返回的客户机共生VM列表项位置。
2.与入口处理组件与初始化子模块连接,在非共生VM间通信时将截获的参数传给初始化子模块备份的缺省处理函数。
3.与本地通信连接管控组件连接,将参数IP,端口号等参数和系统调用事件传送给本地通信连接管控子组件,收到通信连接管控组件送来的本地通信连接Hash表项地址。与数据发送和接收组件连接,将数据参数送给数据发送和接收组件处理,收到数据发送和接收组件返回的数据或出错信息等返回值。
b.本地通信连接管控组件。该组件负责建立或关闭通信双方VM间的基于共享内存的连接,连接关系如下:
1.与入口处理组件连接,收到入口处理组件送来的IP、端口号等通信请求信息,创建或关闭连接。
2.与数据发送与接收组件连接,收到数据发送与接收组件送来的信息,创建或关闭连接。
3.与共生VM集合维护子模块连接,用于创建及回收数据缓冲区,建立、关闭基于共享内存的本地通信连接,以及进行本地通信连接与远程通信连接间的切换;当共生VM集合成员变更事件产生时,被共生VM集合维护子模块调用,完成共生VM表中相应连接信息的增删或更新。
c.数据发送与接收组件。连接关系如下:
1.与入口处理组件连接,收到入口处理组件的请求参数,进行数据发送或接收。
2.与共生VM集合维护子模块连接,收到共生VM集合维护子模块发来的请求信息,进行遗留数据处理。
3)共生VM判定子模块负责对该子模块被系统调用截获子模块的入口处理组件所调用,负责判定通信双方VM是否是共生VM。连接关系如下:
1.与系统调用截获子模块的入口处理组件连接,送出socket描述符,收到通信另一方VM的IP地址。
2.与共生VM集合维护子模块连接,送出IP地址,收到IP地址在客户机共生VM列表中的位置。
4)共生VM集合维护子模块。共生VM集合维护子模块负责接收来自共生VM动态发现与发布模块的共生VM集合成员变更事件和对应的VM的<DomID,IP>、管理和更新当前VM的共生VM表信息。连接关系如下:
1.与宿主机中的共生VM动态发现与发布模块调用连接,收到共生VM集合成员变更事件类型和对应的VM的<DomID,IP>,维护和更新共生VM信息。
2.与系统调用截获子模块的本地通信连接管控组件,将变更事件送给本地通信连接管控组件建立、关闭连接或者变更连接信息。
3.与共生VM判定子模块连接,收到共生VM表信息,用以判断通信双方VM是否是共生VM,从而确定是采用本地通信模式还是远程通信模式。
5)通信优化功能注销子模块负责停止本客户机上的共生VM通信优化,在内核模块被卸载时触发,连接关系如下:
1.与本地通信连接管控组件连接,发送关闭命令给连接管控组件。
2.与初始化子模块连接,收到初始化子模块备份的原缺省处理函数备份地址,将系统调用表所在内存页以可写的方式映射到一片新的虚地址空间,用备份地址对系统调用表重写,恢复原来的处理方式。
3.与宿主机中的共生VM动态发现与发布模块连接,本客户机停止使用共生VM通信优化机制的这一消息给宿主机的共生VM动态发现子模块。
宿主操作系统中构造了共生VM动态发现和发布模块。该模块由共生VM动态发现子模块与共生VM发布子模块构成。共生VM动态发现子模块负责创建并维护宿主机共生VM列表,它与客户机的初始化子模块、客户机通信优化功能注销子模块、连接,将该客户机的DomID和IP添加到宿主机共生VM列表中;从客户机通信优化功能注销子模块接收客户机注销了域间通信优化功能的消息,将该客户机从共生VM列表中删除。共生VM发布子模块负责将共生VM列表发布给本物理机上加载了域间通信优化内核模块的客户机,它与客户机的共生VM集合维护子模块连接,将最新共生VM列表送给客户机的共生VM集合维护子模块。
图5本发明第3.1.1.2步所初始化的客户机共生VM列表和3.3.1及3.3.2步中所初始化的本地通信连接Hash表数据结构示意图。客户机共生VM列表由共生VM集合维护子模块进行维护和管理,该表中每个表项由<DomID、IP地址>对和一个指针组成,DomID和IP地址用于唯一标识某个VM,指针指向一个Hash表,Hash表中每一项都代表一组本VM与某共生VM(该共生VM由<DomID、IP地址>标识)之间的本地通信连接,本地通信连接由系统调用截获子模块的本地通信连接管控组件维护和管理。本地通信连接包含以下信息:通信端口号;发送缓冲区地址和大小、接收缓冲区地址和大小。
图6为本发明第3.1.1.3和3.1.1.4步备份及截获系统调用操作示意图。替换方法是:备份系统调用表中网络通信相关系统调用对应各项的缺省处理函数的地址;将系统调用截获子模块的入口处理组件的地址写入系统调用表的对应表项中。在客户机操作系统中的域间通信优化内核模块被卸载时,其通信优化功能注销子模块将恢复系统调用原有缺省处理函数,方法是将备份了的各项缺省处理函数的地址写回系统调用表的对应表项中。

Claims (5)

1.一种虚拟机域间通信模式的动态透明切换方法,其特征在于包括以下步骤:
第一步,在客户机操作系统中构造域间通信优化内核模块,该模块由客户机共生VM列表、本地通信连接Hash表、初始化子模块、系统调用截获子模块、共生VM集合维护子模块、共生VM判定子模块、通信优化功能注销子模块组成:
初始化子模块在VM成功启动且加载域间通信优化内核模块之后被触发,负责构建并初始化客户机共生VM列表、获取系统调用表地址、备份系统调用表中网络请求相关的各个系统调用的缺省处理函数地址、用系统调用截获子模块中入口处理组件中的自定义的处理函数地址替换系统调用缺省处理函数地址,与宿主机共生VM动态发现子模块、通信优化功能注销子模块、系统调用截获子模块连接,将本客户机使用了共生VM域间通信优化功能这一消息发送给宿主机共生VM动态发现子模块,将备份的缺省处理函数地址送给通信优化功能注销子模块,从系统调用截获子模块收到入口处理组件,用入口处理组件中的自定义的处理函数地址替换系统调用缺省处理函数地址;
所述系统调用表是Linux系统内核中固有的数据结构,由系统调用号和处理函数地址组成,在用户程序进行系统调用时,首先会传入系统调用号和参数,系统再通过系统调用号在系统调用表中找到相应的处理函数地址,最后找到相应的处理函数对参数进行处理,系统调用表在操作系统内核中对应一段连续的内存,系统调用表地址即这段内存的起始地址;
所述客户机共生VM列表存放与客户机存在共生关系的VM,每个列表项由<DomID,IP>二元组和一个Hash表指针组成,DomID是共生VM的ID,IP是共生VM的IP地址,Hash表指针指向一个本地通信连接Hash表;若系统中存在n个共生VM,则每个客户机中的共生VM列表中有n-1项,第i项代表第i个共生VM,表项中的Hash表指针指向客户机与VMi之间的本地通信连接Hash表;
所述本地通信连接Hash表中存放的每一项代表Hash表所在的客户机与某共生VM之间的一组本地通信连接,若客户机与VMi存在n组本地通信连接,则客户机共生VM列表第i项Hash表指针所指向的Hash表就存在n项;Hash表项以通信端口号为关键字做Hash运算并存放以下数据:通信端口号;发送缓冲区地址和大小、接收缓冲区地址和大小;
系统调用截获子模块由入口处理组件、本地通信连接管控组件、数据发送与接收组件组成;入口处理组件与通信优化功能注销子模块、共生VM判定子模块连接,负责触发本地通信连接管控组件或数据发送与接收组件,将自定义的处理函数地址送给通信优化功能注销模块,将请求的数据发送或接收地址送给共生VM判定模块;本地通信连接管控组件与共生VM集合维护子模块、数据发送与接收组件连接,负责建立或关闭通信双方VM间的基于共享内存的连接,它从共生VM集合维护子模块中接收当前共生VM集合的变化信息,更新通信双方VM间的基于共享内存的连接状态,将基于共享内存的连接状态送给数据发送与接收组件;数据发送与接收组件与共生VM集合维护子模块、入口处理组件及本地通信连接管控组件连接,负责处理数据发送或接收请求,它从入口处理组件接收数据接收或者发送的请求地址及数据,将其送给本地通信管控组件;从共生VM集合维护子模块收到共生VM变更信息,将共生VM变更信息送给本地通信管控组件;
共生VM判定子模块与共生VM集合维护子模块和系统调用截获子模块的入口处理组件相连,负责判定通信双方VM是否是共生VM;共生VM判定子模块从系统调用入口处理组件接收请求的IP信息,从共生VM集合维护子模块接收最新的客户机共生VM列表,对客户机共生VM列表执行查找操作,将查找结果送给入口处理组件;
共生VM集合维护子模块与宿主机、系统调用截获子模块的本地通信连接管理组件相连,负责更新本客户机中客户机共生VM列表中共生VM集合成员信息;共生VM集合维护子模块接收来自宿主机的共生VM集合成员变更事件和对应的VM的<DomID,IP>、更新本客户机的客户机共生VM列表;
通信优化功能注销子模块负责在用户卸载域间通信优化内核模块时注销当前客户机的域间通信优化功能,使得客户机与共生VM之间通信重新采用基于TCP/IP的远程模式;通信优化功能注销子模块与初始化子模块、宿主机、系统调用截获子模块的本地通信管控组件连接,从初始化子模块收到原系统调用缺省处理函数地址,将这些函数地址重写到系统调用表中,将注销消息送给宿主机的共生VM动态发现子模块,将关闭所有共生VM连接的消息发送给客户机的本地通信连接管控组件;
第二步,在宿主机操作系统中构造共生VM动态发现与发布模块,该模块由共生VM动态发现子模块与共生VM发布子模块构成;共生VM动态发现子模块负责创建并维护宿主机共生VM列表,它与客户机的初始化子模块、客户机通信优化功能注销子模块连接,将该客户机的DomID和IP添加到宿主机共生VM列表中;从客户机通信优化功能注销子模块接收客户机注销了域间通信优化功能的消息,将该客户机从共生VM列表中删除;共生VM发布子模块负责将共生VM列表发布给本物理机上加载了域间通信优化内核模块的客户机,它与客户机的共生VM集合维护子模块连接,将最新共生VM列表送给客户机的共生VM集合维护子模块;
第三步,采用客户机中的域间通信优化内核模块和宿主机中的共生VM动态发现与发布模块优化虚拟机域间通信,具体步骤为:
3.1在客户机中加载虚拟域间通信优化内核模块:
3.1.1客户机触发域间通信优化内核模块中的初始化子模块,初始化子模块进行以下初始化:
3.1.1.1将本客户机“使用了共生VM域间通信优化功能”这一消息发送给宿主机;
3.1.1.2构建并初始化客户机共生VM列表,即向系统申请一段内存空间,列表数目为0;
3.1.1.3获取本客户机操作系统中的系统调用表地址,备份系统调用表中网络请求相关的各个系统调用的缺省处理函数地址,将系统调用表所在内存页映射到一片新的可写的虚地址空间;
3.1.1.4将系统调用截获模块的入口处理组件的地址写入所映射到的内核内存页面中的系统调用表中网络通信请求相关的各表项中,以替换系统调用的原有缺省处理函数地址;
3.1.1.5请求操作系统预留连续的虚地址空间,并向VMM发出请求,由其建立共享内存缓冲区,用于存放相互通信的VM的本地通信连接、待传输的数据和待处理的事件;
3.2在宿主机中加载共生VM动态发现与发布模块:
3.2.1宿主机触发共生VM动态发现子模块;
3.2.1.1共生VM动态发现子模块初始化宿主机共生VM列表,即向系统申请一段内存空间,列表数目为0;
3.2.1.2共生VM动态发现子模块请求从VMM获取宿主机共生VM列表中的相关客户机的<DomID,IP>映射关系项,以及监测客户机事件:VM创建、VM重启、VM迁入、VM迁出、VM销毁;
3.2.2宿主机触发共生VM发布子模块,向所有共生VM列表中的客户机发布最新的<DomID,IP>映射关系项以及客户机事件;
3.3客户机中共生VM集合维护子模块接收宿主机共生VM发布子模块发来的信息,针对客户机事件执行以下步骤:
3.3.1若收到的事件是VM创建或者VM重启,将创建或重启的VM对应的<DomID,IP>插入到客户机共生VM列表中,并为该列表项初始化一张本地通信连接Hash表,即为本地通信连接Hash表申请一段内存空间,返回值是这段内存空间的首地址,此时Hash表项数目为0;
3.3.2若收到的事件是VM迁入,将迁入的VM所对应的<DomID,IP>插入到客户机共生VM列表,为插入的列表项初始化一张本地通信连接Hash表,同时检测迁入前该客户机是否跟本客户机存在通信,若存在,则建立本地连接,同时关闭TCP/IP连接;
3.3.3若收到的事件是VM迁出,检测迁出的客户机是否跟本客户机存在本地通信连接,若存在,则保存并处理遗留数据,建立TCP/IP连接,删除客户机共生VM列表中迁出的VM所对应的列表项;
3.3.4若收到的共生VM集合成员变更事件为VM销毁,则:关闭同被销毁的VM相关的所有通信连接,删除客户机共生VM列表中对应的列表项;
3.4客户机接收应用程序的系统调用和外部命令,针对系统调用或外部命令做如下处理:若是网络通信相关的系统调用,则触发系统调用截获子模块进行处理;若是卸载域间通信优化内核模块的命令,则触发通信优化内核注销子模块进行处理;若是其他系统调用或命令,域间通信优化内核模块不对其做任何处理;具体方法为:
3.4.1若系统调用是建立网络连接,则:系统调用截获子模块中的本地通信连接管控组件根据参数IP地址和端口号,首先在客户机共生VM列表中查找IP地址,若得到返回值“-1”,则说明进行非共生VM通信,交由缺省处理函数处理;若得到非负返回值,则说明是共生VM通信,对于共生VM通信,通过返回值得到IP地址所在的客户机共生VM列表项,再通过客户机共生VM列表项中Hash表指针所指向的本地通信连接Hash表中查找端口号对应的本地通信连接的位置,如果找到,则返回找到的位置值,代表已经建立,转3.4;否则,返回“-1”,意味未建立,则创建本地通信连接并将本地通信连接插入到本地通信连接Hash表,转3.4;
3.4.2若系统调用的类别是数据发送,则:触发系统调用截获子模块中的本地通信连接管控组件,本地通信连接管控组件根据参数IP地址和端口号,查找是否存在通信双方VM对应的本地通信连接,若不存在,则表明当前通信双方已不在同一台物理机上,基于TCP/IP连接发送数据,否则基于第3.4.1步所建立的本地通信连接进行本地数据发送;
3.4.3若系统调用的类别是数据接收,则:触发系统调用截获子模块中的本地通信连接管控组件,本地通信连接管控组件根据参数IP地址和端口号,查找是否存在通信双方VM对应的本地通信连接,若不存在,则表明当前通信双方已不在同一台物理机上,基于TCP/IP连接接收数据,否则由系统调用截获子模块中的数据发送与接收组件进行基于共享内存的本地数据接收;
3.4.4若系统调用的类别是关闭网络连接,则:触发系统调用截获子模块中的本地通信连接管控组件,本地通信连接管控组件首先根据参数IP和端口号,找到相应的本地通信连接Hash列表项,再对这个列表项执行删除操作;
3.4.5若客户机中的域间通信优化内核模块接收到卸载该内核模块的调用请求或外部命令,则注销客户机的通信优化功能,其后的网络通信操作相关的系统调用请求采用常规的基于TCP/IP的通信模式来处理;
第四步,卸载宿主机中的共生VM动态发现与发布模块:若共生VM动态发现与发布模块收到卸载该内核模块的调用请求或外部命令,首先通知该宿主机中共生VM列表中VM对应的各个客户机卸载其域间通信优化内核模块,然后销毁宿主机共生VM列表,最后停止共生VM动态发现与发布模块的运行。
2.如权利要求1所述的一种虚拟机域间通信模式的动态透明切换方法,其特征在于卸载域间通信优化内核模块使用rmmod命令,加载虚拟域间通信优化内核模块使用insmod命令,加载共生VM动态发现与发布模块使用insmod命令。
3.如权利要求1所述的一种虚拟机域间通信模式的动态透明切换方法,其特征在于3.4.1步中所述创建本地通信连接和插入Hash表操作是:本地通信连接发起者首先向VMM申请数据发送缓冲区、数据接收缓冲区和事件缓冲区,再将所申请的这三个缓冲区的地址及通信端口号发送给本地通信连接响应者,响应者新建Hash表项,在新建的Hash表项中存放缓冲区地址和端口号,数据缓冲区大小初始值为缓冲区大小,然后对端口号进行Hash运算,再插入到自己的本地通信连接Hash表中,响应者Hash表项数目加1,然后发送一个响应消息给本地通信连接发起者,发起者接到消息后,将这一本地通信连接插入到发起者本地通信连接Hash表中,发起者Hash表项数目加1。
4.如权利要求1所述的一种虚拟机域间通信模式的动态透明切换方法,其特征在于3.4.4步中所述对列表项的删除操作是:在关闭本地通信连接之后将该通信连接所在的Hash表项删除,删除后,Hash表项数目减1;本地通信连接关闭过程如下:首先,关闭发起方通知响应方欲关闭通信连接并设置一个时钟,响应方收到消息后,处理遗留数据后将对应的Hash表项删除,发送响应消息给关闭连接的发起方,发起方将本地通信连接中的各个缓冲区释放,最后发起方将对应的Hash表项删除,考虑到响应方销毁的情况,此时发起方会在时钟到来时直接将本地通信连接中的各个缓冲区释放,最后将对应的Hash表项删除。
5.如权利要求1所述的一种虚拟机域间通信模式的动态透明切换方法,其特征在于3.4.5步中所述注销客户机的通信优化功能的方法为:
3.4.5.1触发通信优化功能注销子模块,若当前VM的共生VM正在进行本地通信,则首先完成当前本地数据传输,同时挂起新到的网络通信操作相关请求,调用本地通信连接管控组件关闭此本地通信连接,接着对系统调用表执行恢复系统调用原处理函数地址操作,然后终止将系统调用表属性更改为只读,防止非法进程篡改系统调用表,最后处理挂起的网络通信操作相关请求;
3.4.5.2客户机将“注销了通信优化功能”这一消息送给宿主机操作系统中的共生VM动态发现与发布模块,宿主机将要注销通信优化功能的客户机从宿主机共生VM列表中删除,然后将这一事件发布给所有本物理机上的客户机,其他客户机将会各自删除各自通信优化内核模块中客户机共生VM列表中的对应于注销了通信优化功能这一客户机的列表项。
CN201510092457.4A 2015-03-02 2015-03-02 一种虚拟机域间通信模式的动态透明切换方法 Active CN104615485B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510092457.4A CN104615485B (zh) 2015-03-02 2015-03-02 一种虚拟机域间通信模式的动态透明切换方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510092457.4A CN104615485B (zh) 2015-03-02 2015-03-02 一种虚拟机域间通信模式的动态透明切换方法

Publications (2)

Publication Number Publication Date
CN104615485A CN104615485A (zh) 2015-05-13
CN104615485B true CN104615485B (zh) 2017-07-14

Family

ID=53149941

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510092457.4A Active CN104615485B (zh) 2015-03-02 2015-03-02 一种虚拟机域间通信模式的动态透明切换方法

Country Status (1)

Country Link
CN (1) CN104615485B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105704217B (zh) * 2016-01-15 2018-09-25 中国人民解放军国防科学技术大学 一种透明的基于事件驱动的共生虚拟机动态发现方法
CN117851133B (zh) * 2024-03-07 2024-05-17 成都云祺科技有限公司 Xen半虚拟化的无代理实时备份方法、系统及恢复方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101859263A (zh) * 2010-06-12 2010-10-13 中国人民解放军国防科学技术大学 一种支持在线迁移的虚拟机间快速通信方法
CN102137167A (zh) * 2011-04-29 2011-07-27 中国人民解放军国防科学技术大学 不间断运行的虚拟机迁移方法及装置
US8381209B2 (en) * 2007-01-03 2013-02-19 International Business Machines Corporation Moveable access control list (ACL) mechanisms for hypervisors and virtual machines and virtual port firewalls
CN103077071A (zh) * 2012-12-31 2013-05-01 北京启明星辰信息技术股份有限公司 一种kvm虚拟机进程信息的获取方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594582B2 (en) * 2009-01-05 2017-03-14 International Business Machines Corporation Detection and management of dynamic migration of virtual environments

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8381209B2 (en) * 2007-01-03 2013-02-19 International Business Machines Corporation Moveable access control list (ACL) mechanisms for hypervisors and virtual machines and virtual port firewalls
CN101859263A (zh) * 2010-06-12 2010-10-13 中国人民解放军国防科学技术大学 一种支持在线迁移的虚拟机间快速通信方法
CN102137167A (zh) * 2011-04-29 2011-07-27 中国人民解放军国防科学技术大学 不间断运行的虚拟机迁移方法及装置
CN103077071A (zh) * 2012-12-31 2013-05-01 北京启明星辰信息技术股份有限公司 一种kvm虚拟机进程信息的获取方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种支持在线迁移的虚拟机间快速通信方法;任怡;《解放军理工大学学报》;20121031;第511-515页 *

Also Published As

Publication number Publication date
CN104615485A (zh) 2015-05-13

Similar Documents

Publication Publication Date Title
US11500670B2 (en) Computing service with configurable virtualization control levels and accelerated launches
US9575894B1 (en) Application aware cache coherency
US9348627B1 (en) Distributed dynamic federation between multi-connected virtual platform clusters
US8875134B1 (en) Active/active storage and virtual machine mobility over asynchronous distances
US10509686B2 (en) Distributable computational units in a continuous computing fabric environment
CN105426227B (zh) 向云迁移私有构架服务
JP5183802B2 (ja) 仮想化された計算機システム用の分散仮想スイッチ
CN101859263B (zh) 一种支持在线迁移的虚拟机间快速通信方法
US9015121B1 (en) Unified virtual machine and data storage snapshots
CN101765225B (zh) 一种虚拟化的集群管理方法和集群节点
US8438565B2 (en) Virtual machine migration managing method, computer using the method, virtualizer using the method and computer system using the method
US9454417B1 (en) Increased distance of virtual machine mobility over asynchronous distances
CN105429776B (zh) 一种虚拟化网络功能管理的方法和系统
CN105245523B (zh) 应用于桌面虚拟化场景的存储服务平台及其实现方法
US8726083B1 (en) Synchronized taking of snapshot memory images of virtual machines and storage snapshots
US20130332927A1 (en) System and method for managing resources in virtualized environment
CN102594861A (zh) 一种多服务器负载均衡的云存储系统
CN103065086A (zh) 应用于动态虚拟化环境的分布式入侵检测系统及方法
WO2020113670A1 (zh) 防脑裂的OpenStack虚拟机高可用系统
US8682852B1 (en) Asymmetric asynchronous mirroring for high availability
US11294931B1 (en) Creating replicas from across storage groups of a time series database
US10965616B2 (en) Nonstop computing fabric arrangements
CN105468429A (zh) 一种高效虚拟化集群管理方法和集群节点
CN104615485B (zh) 一种虚拟机域间通信模式的动态透明切换方法
CN106612314A (zh) 基于虚拟机实现软件定义存储的系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant