首页> 中国专利> 基于相对位置动态确定连接建立机制的装置和方法

基于相对位置动态确定连接建立机制的装置和方法

摘要

本发明涉及基于相对位置动态确定连接建立机制的装置和方法,具体地,公开了一种根据虚拟机所处的位置动态地确定虚拟机之间的连接建立机制的装置和方法,所述装置包括:通信代理单元,用于接收与虚拟机所处的位置有关的消息;以及控制单元,用于基于接收到的消息,确定虚拟机之间的连接建立机制,并控制根据所确定的连接建立机制建立虚拟机之间的连接。使用本发明,能够通过判断两台虚拟机是否处于同一台物理主机上来在不断开连接的同时动态地进行两种连接建立机制之间的无缝切换,从而使系统性能始终达到最佳,并与现有的应用程序兼容,从而大大降低产品的成本。

著录项

  • 公开/公告号CN101631110A

    专利类型发明专利

  • 公开/公告日2010-01-20

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN200810133904.6

  • 发明设计人 韩竹;郑凯;梁志勇;邵凌;

    申请日2008-07-15

  • 分类号

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人鲍进

  • 地址 美国纽约

  • 入库时间 2023-12-17 23:18:41

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-01-02

    授权

    授权

  • 2010-03-24

    实质审查的生效

    实质审查的生效

  • 2010-01-20

    公开

    公开

说明书

技术领域

本发明涉及服务器虚拟化技术,更具体地,涉及一种在虚拟环境中根据虚拟机(Virtual Machine,简称为“VM”)所处的相对位置动态地确定虚拟机之间的连接建立机制的装置和方法及系统。

背景技术

由于人们越来越强地认识到服务器资源的利用率低下以及服务器整合的必要性,并且多核处理器的出现让单台服务器的性能越来越强大,服务器虚拟化开始吸引更多厂商的关注。通过将物理服务器资源分配到多个虚拟机,服务器虚拟化支持不同的应用,甚至不同的操作系统(Operation System,简称为“OS”)能在同一企业级服务器上同时运行。每个虚拟机就像一台独立的服务器,但实际上可能就是在同一物理服务器内运行。在一台服务器上运行多个应用能够提高服务器效率,并减少需要管理和维护的服务器数量。当应用需求增加时,可以迅速创建更多虚拟机,从而无需增加物理服务器即可灵活地响应不断变化的需求。

近来,服务器虚拟化成为系统研究和解决方案领域中的热门话题之一。服务器虚拟化的方向之一是把若干个分散的物理服务器(以下也称为“物理主机”)虚拟为一个大的逻辑服务器。而且,利用这种虚拟技术,IT管理员可以在物理服务器之间移动正在运行的虚拟机,同时保持虚拟服务器持续可用。服务器虚拟化的一个重要特征就是虚拟机的动态迁移。动态迁移就是在“带电”情况下,将一个虚拟机从一个物理主机移动到另一个物理主机的过程。动态迁移过程不会对最终用户造成明显的影响,这是由于动态迁移可以使得停机时间为毫秒级,这对用户而言很难觉察,从而使得管理员能够在不影响用户正常使用的情况下,对物理服务器进行离线维修、升级、配置、负载平衡、或者管理等等。图1示意性地示出了在通过LAN(局域网)连接多台物理服务器的虚拟环境中虚拟机从一台物理主机(即,物理主机1)迁移到另一台物理主机(即,物理主机2)的情况。图1仅仅是说明性的,本领域技术人员应当理解可以根据需要调整LAN中物理服务器的数量以及每台物理服务器上的虚拟机的数量。

通常,一台虚拟机上的某些应用需要通过高性能专用信道与其它虚拟机上的应用通信,这些应用诸如是IDS(入侵检测系统)和防火墙应用、防火墙和VPN(虚拟专用网)应用。最常见的情况是通过以太网来连接不同虚拟机,并且要连接的不同应用之间的流量要经过TCP/IP栈。当将不同的应用整合到一个物理主机上时,专用信道可以被优化。也就是说,由于所有流量都是在RAM(随机存储器)中移动,所以可以在无需TCP/IP(传输控制协议/网际协议)栈中的校验和保护、按序传送、拥塞控制和净荷封装的情况下建立专用信道。从而,通过使用省略了由TCP/IP栈导致的大部分开销的薄协议层(以下称之为“轻量级协议”),大大提高了专用信道的性能其中,本领域所谓的轻量级协议指的是利用共享内存机制,在同一物理主机上进行通信的开销较小的一类通信方式或者/及其实现的总称。

图2示意性示出了现有技术中的两台虚拟机之间通过TCP/IP协议进行通信的系统的示意图。在图2所示的情况下,无论虚拟机是否在同一物理主机上,虚拟机之间的通信都采用本领域公知的TCP/IP协议来建立连接并在建立的连接上进行彼此之间的消息传送。采用TCP/IP协议建立虚拟机之间的信道的好处在于实现了最佳的灵活性,即使在连接建立之后发生了虚拟机迁移,也不会使两台虚拟机之间的连接断开。此外,由于TCP/IP协议是现有计算机网络中普遍采用的协议,所以无需对虚拟机中的TCP/IP协议栈实现做任何改变,从而实现了与现有应用的良好兼容。但是另一方面,采用TCP/IP协议建立虚拟机之间的信道的缺陷在于:当虚拟机位于同一物理主机上时,使用TCP/IP协议导致系统开销大,这是由于所有流量都是在RAM中移动,从而使得TCP/IP协议规定必须实现的校验和保护、按序传送、拥塞控制和多层净荷封装是无用的。

图3示意性示出了现有技术中的在同一物理主机上的两台虚拟机之间通过轻量级协议进行通信的系统的示意图。轻量级协议诸如是共享内存或通过固件实现的其它轻量级协议。采用轻量级协议建立虚拟机之间的信道的好处在于实现了系统的最佳性能,即系统开销小、处理速度快、运行应用占用的物理资源小。采用轻量级协议建立虚拟机之间的信道的另一缺陷在于当已经通过轻量级协议建立了连接的两个虚拟机中的任一个发生迁移时,都会导致连接的断开,这是由轻量级协议固有的特性导致的。因此,轻量级协议连接缺少灵活性。

例如,Wei Huang等人于2007年11月10-16日在Proceedings ofthe 2007 ACM/IEEE Conference on Supercomputing上发表的标题为“Virtual Machine Aware Communication Libraries for HighPerformance Computing”的论文已经公开了当两台虚拟机在同一物理机器上时如何建立起高效的通信方式。具体而言,该论文提出了一种虚拟机知道的通信库来支持同一物理主机上的计算处理之间的高效共享内存通信。显然,该论文也没有涉及当已经建立连接的虚拟机发生动态迁移之后,如何进行处理。因此,该文献没有解决现有的轻量级技术存在的缺陷。

因此,需要一种能够根据虚拟机所处的位置动态地确定虚拟机之间的连接建立机制的装置和方法及系统。

发明内容

考虑到现有技术中存在的上述问题,而做出本发明。本发明的一个目的是提供一种根据虚拟机所处的位置动态地确定虚拟机之间的连接建立机制的装置和方法及系统。

为了实现上述目的,提供了一种根据虚拟机所处的位置动态地确定虚拟机之间的连接建立机制的装置,包括:通信代理单元,用于接收与虚拟机所处的位置有关的消息;以及控制单元,用于基于接收到的消息,确定虚拟机之间的连接建立机制,并控制根据所确定的连接建立机制建立虚拟机之间的连接。

为了实现上述目的,提供了一种根据虚拟机所处的位置动态地确定虚拟机之间的连接建立机制的方法,包括步骤:接收与虚拟机所处的位置有关的消息;基于接收到的消息,确定虚拟机之间的连接建立机制;以及控制根据所确定的连接建立机制建立虚拟机之间的连接。

为了实现上述目的,提供了一种用于在虚拟化层中确定虚拟机所处的位置的方法,包括:确定与虚拟机所处的位置有关的信息;以及向虚拟机发送包括所确定的信息的消息。

为了实现上述目的,提供了一种用于在虚拟化层中确定虚拟机所处的位置的装置,包括用于实现上述方法中的各个步骤的部件。

通过使用本发明,可以根据虚拟机的位置动态地确定连接建立机制,使得当两台虚拟机都在同一物理主机上的时候使用轻量级协议,而当虚拟机发生动态迁移而使得两台虚拟机不在同一物理主机上的时候仍然使用普通的TCP/IP协议栈,从而解决了开销大和不能保持连接性的问题,并使系统性能始终保持最佳。此外,由于TCP/IP协议和轻量级协议本身是现有技术中已经实现的,所以可以最大程度地兼容现有应用程序,从而可以为用户节省成本。

附图说明

从下面结合附图的详细描述中,本发明将会更易于理解,其中,相同的附图标记表示相同的结构元素,并且,附图中:

图1是示出了现有技术中的在通过LAN连接多台物理主机的虚拟环境中虚拟机从一台物理主机迁移到另一台物理主机的图。

图2是示出了现有技术中的两台虚拟机之间通过TCP/IP协议进行通信的系统的示意图。

图3是示出了现有技术中的在同一物理主机上的两台虚拟机之间通过轻量级协议进行通信的系统的示意图。

图4是示意性示出了根据本发明的根据虚拟机所处的位置动态地确定虚拟机之间的连接建立机制的虚拟系统的框图。

图5是举例说明在如上所述建立虚拟机之间的轻量级连接后发生虚拟机迁移的情况下将连接建立机制切换到TCP/IP协议的情况的系统图。

图6是举例说明在如上所述建立虚拟机之间的TCP/IP连接后发生虚拟机迁移的情况下将连接建立机制切换到轻量级协议的情况的系统图。

图7是示出了根据本发明的、在虚拟机与虚拟化层之间交换的消息的形式的示意图。

图8是示出了根据本发明的在虚拟化层中确定虚拟机所处的位置的方法的流程图。

图9是示出了图8所示的步骤802的具体步骤的流程图。

图10是示出了根据本发明的根据虚拟机所处的位置动态地确定虚拟机之间的连接建立机制的方法的流程图。

具体实施方式

现在将以具体的、示例性的实施例描述本发明。应该理解,本发明不限于所披露的示例性实施例。还应该理解,目前所披露的在虚拟环境中根据虚拟机所处的位置无缝切换虚拟机之间的连接建立机制的方法和装置及系统的每一个特征,并非都是实现所附权利要求任一具体项要求保护的发明所必不可少的。描述设备的多个元件和特征是为了使本发明完全能够得以实现。还应该理解的是,在本说明书中,在表示或者描述处理或方法之处,方法的步骤可以按照任何顺序执行或者同时执行,除非从上下文中显然可以看出一个步骤依赖于先前执行的另一步骤。

本发明的核心思想是:在建立连接时首先检测两台虚拟机所处的位置,如果要建立连接的两台虚拟机处于同一物理主机上,则使用轻量级协议来建立连接,而如果要建立连接的两台虚拟机处于不同的物理主机上,则使用TCP/IP协议来建立连接。此外,在同一物理主机上的两台虚拟机已经通过轻量级协议建立连接之后其中一台虚拟机发生动态迁移从而去到另一物理主机上时,在保持连接的同时将所使用的连接建立机制从轻量级协议无缝切换到TCP/IP协议,而在不同物理主机上的两台虚拟机已经通过TCP/IP协议建立连接之后其中一台虚拟机发生动态迁移从而去到另一虚拟机所在的物理主机上时,在保持连接的同时将所使用的连接建立机制从TCP/IP协议无缝切换到轻量级协议,所谓的“无缝”指的是底层通信机制的改变对于高层应用是透明的。由于这个切换过程对高层应用而言是不可察觉的,所以本发明克服了现有技术中存在的开销大和不能保持连接性的缺陷,并获得了最佳系统性能和实现了与现有技术的最佳兼容,降低了用户的成本。

图4是示意性示出了根据本发明的根据虚拟机所处的位置动态地确定虚拟机之间的连接建立机制的虚拟系统的框图。虽然在图4所示的虚拟系统中仅仅示出了一台物理主机,但是本领域技术人员可以理解图4中所示的虚拟系统可以存在具有相同配置的两台或更多台物理主机。此外,虽然在图4中示出了仅仅两个虚拟机存在于一台物理主机上,但是本领域技术人员可以理解在该物理主机上可以存在更多个虚拟机。

如图4所示,在虚拟系统中存在物理主机400和全局库480。物理主机400可以是诸如Sun公司、IBM公司、Dell公司等等的各个厂商出品的主机。在虚拟系统中还存在全局库480,用于存储与虚拟系统中的各个物理主机上的虚拟机有关的信息,这在下文中将详细进行介绍。

全局库480可以实现为某一物理主机上存储的或者在LAN上分布式存储的数据库、文件、二进制信息,或者任何其它能够存储与虚拟机有关的信息的数据结构。

物理主机400从下向上分别为硬件、虚拟化层、虚拟机和多个应用。硬件是实现主机各项功能的基础,它由各个厂商提供,但是本发明不涉及对硬件的任何改变,在此不对其进行任何描述。

在虚拟化层中包括通信代理模块470和控制逻辑模块471。通信代理模块470是用于在虚拟化层与其上的各个虚拟机进行通信的模块,其是现有技术中已经实现的,例如,在采用半虚拟化技术的XEN上,利用Hypercall技术实现的通信代理模块;在采用全虚拟化技术的VMWARE上,采用特殊硬件中断实现的通信代理模块;在Intel和AMD最新的芯片上,也提供VMCALL等特殊指令来实现通信代理模块。因此在本文中,不再对通信代理模块470的实现作更进一步的描述。

控制逻辑模块471用于确定与虚拟机的相对位置有关的信息。此外控制逻辑模块471还用于在全局库480中注册和注销各个虚拟机。

控制逻辑模块471通过通信代理模块470从虚拟机中的控制单元接收到连接建立请求时,基于所接收的请求中包括的连接目标虚拟机的IP地址查询全局库480以获得目标虚拟机的虚拟化层ID(标识符),即HVID,通过将目标虚拟化层ID与自身虚拟化层ID相比较,确定目标虚拟机与请求虚拟机是否都在本物理主机上。随后,控制逻辑模块471通过通信代理模块470以消息的形式将结果返回给虚拟机中的控制单元。

控制逻辑模块471还接收物理主机系统检测到的虚拟机发生动态迁移的信息,该信息可以是本物理主机上的虚拟机迁移出本物理主机,也可以是其它物理主机上的虚拟机迁移入本物理主机。在收到本物理主机上的虚拟机迁移出本物理主机的信息后,控制逻辑模块471通过通信代理模块470以消息的形式将包括发生迁移的虚拟机的IP地址/ID的该信息通知给没有发生迁移的所有其它虚拟机。

虚拟机的注册可以发生在每个虚拟机启动的时候。在启动时,虚拟机中的控制单元403将包括其自身ID、IP地址的注册请求发送给虚拟化层中的控制逻辑模块471,并由控制逻辑模块471在全局库480中注册虚拟机自身的ID(即,VMID)和IP地址(即,VMIP)、以及虚拟机所在的虚拟化层的ID(即,HVID)。

可替换地,虚拟机的注册也可以发生在该虚拟机要建立与其它虚拟机的连接的时候。在建立连接之前,虚拟机中的控制单元403将包括其自身ID、IP地址的注册请求发送给虚拟化层中的控制逻辑模块471,并由控制逻辑模块471在全局库480中注册虚拟机自身的ID(即,VMID)和IP地址(即,VMIP)、以及虚拟机所在的虚拟化层自身的ID(即,HVID)。除上述情况之外,虚拟机的注册可以发生在任何时候。显然,可以多次注册同一虚拟机。

VMID对于虚拟机始终是唯一的,HVID对于虚拟化层始终也是唯一的。由于每台物理主机上只有一个虚拟化层,所以通过查询VMID和对应的HVID,控制逻辑模块471就可以判断出两个虚拟机是不是在同一个虚拟化层上,也就是,是否在同一物理主机上。全局库480以三元组(VMID,VMIP,HVID)形式或者任何可以实现相同或等同功能的形式,存储每一台虚拟机的信息。

当虚拟机发生迁移时,控制逻辑模块471基于虚拟机ID从全局库中注销该虚拟机,即删除所有包括VMID的记录。

虚拟机1中包括供外部应用调用的接口单元401-1、卸载引擎单元402-1、控制单元403-1、通信代理单元405-1和数据复用器406-1。

虚拟机2中包括供外部应用调用的接口单元401-2、卸载引擎单元402-2、控制单元403-2、通信代理单元405-2和数据复用器406-2。

下面以虚拟机1中的各个模块为例进行说明,但是应当理解:其它虚拟机中的对应单元具有相同的功能,例如,虚拟机2中的控制单元403-2具有与虚拟机1中的控制单元403-1相同的功能。

通信代理单元405-1是用于在虚拟机1与其下层的虚拟化层之间进行数据传送的模块,其是现有技术中已经实现的,在此不对其进行进一步描述。

控制单元403-1接收与虚拟机的相对位置有关的消息,基于接收到的消息确定连接建立机制,并基于所确定的连接建立机制建立连接。控制单元403-1通过通信代理单元405-1从虚拟化层接收消息,该消息可以是向控制单元403-1通知虚拟机1与其要与之建立连接的目标虚拟机是否在同一物理主机上、本物理主机上的另一虚拟机迁移出本物理主机、或者另一虚拟机迁移入本物理主机等。如果接收到的消息是用于指示虚拟机1与其要与之建立连接的目标虚拟机是否在同一物理主机上的消息,控制单元403-1根据接收到的消息确定要使用的连接建立机制,即轻量级协议或TCP/IP协议。如果接收到的消息是用于指示本物理主机上的另一虚拟机迁移出本物理主机或者另一虚拟机迁移入本物理主机的消息,控制单元403-1根据接收到的消息中包含的信息,诸如虚拟机的ID、IP地址等,确定虚拟机1是否与发生迁移的另一虚拟机已经建立了连接,如果存在已经建立的连接,控制单元403-1确定在虚拟机迁移后要使用的连接建立机制,控制数据复用器406-1将其中的发送队列和接收队列锁定,在切换到所确定的连接建立机制并基于该连接建立机制建立连接之后,控制数据复用器406-1将其中的发送队列和接收队列解锁并将其附接到所建立的连接上。

控制单元403-1包括记录表404-1,用于存储与每个连接有关的信息,诸如,连接双方虚拟机的ID、IP地址和端口号、已接收的分组数、已发送的分组数等等。这些信息仅仅是示意性的,本领域技术人员根据其需求,可以对这些内容进行添加、删除、和/或修改。此外,记录表404-1可以实现为虚拟机上存储的数据库、文件、二进制信息,或者任何其它能够存储上述信息的结构。

控制单元403-1根据接收到的消息中包含的对方虚拟机的IP地址或ID,查询记录表,如果记录表中有相应的记录,则说明虚拟机1与对方虚拟机具有已经建立的连接,有多少条记录就有多少个连接,否则,则说明虚拟机1与对方虚拟机没有建立任何连接,在此情况下,虚拟机1不做任何动作,丢弃该接收到的消息。

控制单元403-1在虚拟机1启动或要建立连接时以及其他需要注册虚拟机1的时候将虚拟机1的ID及其IP地址通过通信代理单元405-1和通信代理模块470发送给虚拟化层中的控制逻辑模块471以便注册虚拟机1。

数据复用器406-1用于在控制单元403-1的控制下将数据附接到已建立的连接上。具体而言,数据复用器406-1包括用于每个已建立连接的发送队列和接收队列,分别用于缓存要发送和已接收的数据。数据复用器406-1在控制单元403-1的控制下,将通过接口单元401-1从应用接收到的数据切换到基于轻量级协议或TCP/IP协议建立的连接。

此外,数据复用器406-1用于在控制单元403-1的控制下锁定和/或解锁其中的队列。具体而言,在被通知虚拟机发生迁移时,控制单元403-1控制数据复用器406-1首先锁定发送队列和接收队列,并且在控制单元403-1通知数据复用器406-1要切换到的连接已经建立成功的情况下,数据复用器406-1才对发送队列和接收队列进行解锁,从而继续数据的发送和接收。这个切换过程对于应用而言是透明的。由于数据在断开当前连接之前被锁定并且在要切换到的连接已建立之后才解锁,所以数据不会有任何丢失,对于应用而言就像连接没有断开一样,也就是说,保持了连接。应用在这个切换过程中最多感觉性能有所下降,但是由于切换所花费的时间是毫秒级的,所以大多数情况下应用感觉不到性能有什么变化。

卸载引擎单元402-1用于在从轻量级协议切换到TCP/IP协议时,提供建立TCP/IP连接所需的TCP/IP栈信息。在使用常规的TCP/IP协议建立通信时,需要在连接的双方进行三次握手过程来协商TCP控制块中的各项信息,诸如起始序列号、顺序号、重传列表和乱序列表、发送窗口和接收窗口的大小、定时器的超时值和往返时间RTT等。

但是本发明不需要这种握手过程。本发明使用试探法来建立这些值。例如,起始序列号使用基于NTP(Network Time Protocol,网络时间协议)值的散列值,这个值的计算对于本领域技术人员是公知的。起始序列号还可以是由发生迁移的虚拟机的IP地址获得的散列值,或者由物理主机或LAN预先设定的缺省值,例如,10000,只要将建立TCP/IP连接的虚拟机双方能够对起始序列号达成一致即可。顺序号为起始序列号与记录表404-1中记录的已发送分组数/已接收分组数的和。清空重传列表和乱序列表,也就是说,在建立TCP/IP连接时不使用重传,并且使用顺序传送。将发送窗口和接收窗口的大小设置成一个中间值,诸如,8K,或者虚拟机可以接受的其它值。把所有定时器的超时值设置成TCP/IP协议中规定的缺省值,并把RTT值估计为一个较大的值,诸如500ms。

然后,把这样获得的TCP控制块提交给现有技术中已有的、用于实现TCP/IP栈的TCP/IP栈实现模块(未示出),并由TCP/IP栈实现模块来建立TCP/IP连接,在连接建立后,TCP/IP栈实现模块将接口单元附接到已建立的TCP/IP连接。随后双方通过该TCP/IP连接发送ACK分组,在接收到对方发送的ACK分组后,双方确认TCP/IP连接已经建立完成,并将连接建立成功报告给控制单元403。虽然在初始建立TCP/IP连接时性能可能不够好,但是现有TCP/IP栈实现模块能够在通信过程中自适应地调整其自身的设置,诸如放大窗口大小,缩小RTT时间等。

下面,参照图4举例说明两个虚拟机之间初始建立连接的过程。

当虚拟机2要建立与虚拟机1的连接时,VM2中的控制单元403-2为该连接分配一个端口号,PortID2,并在记录表404中为该连接建立一条记录,用VM1和VM2的IP地址和PortID2更新该条记录,该条记录的其它项使用缺省值,诸如NULL或其它值。

然后,控制单元403-2通过通信代理单元405-2将VM1和VM2的IP地址和端口号发送到虚拟化层中的控制逻辑模块471。

控制逻辑模块471经由通信代理模块470接收到来自VM2的VM1和VM2的IP地址后,基于VM1的IP地址从全局库480中检索VM1的VMID1和HVID1。

如果控制逻辑模块471不能从全局库480中检索出VM1的HVID1,则默认为VM1和VM2存在于不同的物理主机上。如果控制逻辑模块471从全局库480中检索到VM1的VMID1和HVID1,则将VM1的HVID1与其自身的HVID比较,而如果二者不同,则认为VM1和VM2存在于不同的物理主机上。

随后,控制逻辑模块471将VM1和VM2的IP地址和端口号以及VM1和VM2处于不同物理主机上的结果通过通信代理模块470和通信代理单元405-2告知控制单元403-2。该告知可以基于虚拟化层提供的机制以任意形式来实现。

在接收到该告知消息后,控制单元403-2基于该告知消息中包括的VM1与VM2不在同一物理主机上的信息,确定要使用的连接建立机制为TCP/IP协议。控制单元403-2将VM2的IP地址和端口号以及VM1的IP地址和端口号发送给TCP/IP栈实现模块并由TCP/IP栈实现模块建立VM1和VM2之间的TCP/IP连接。控制单元403-2在从TCP/IP栈实现模块接收到连接建立成功的确认后,控制数据复用器406-2将发送队列和接收队列中的数据连接到已建立的TCP/IP连接上。如果控制单元403-2从TCP/IP栈模块接收到连接建立失败的确认,则基于VM1和VM2的IP地址和端口号从记录表404-2中清除用于该连接的记录,并将连接建立失败报告给相应的应用。

如果控制逻辑模块471从全局库480中检索到VM1的VMID1和HVID1,则将VM1的HVID1与其自身的HVID比较,如果二者相同,则认为VM1和VM2存在于同一物理主机上,并将VM1和VM2的IP地址和端口号以及VM1和VM2处于同一物理主机上的结果连同VM1的VMID1告知控制单元403-2。该告知可以基于虚拟化层提供的机制以任意形式来实现。

在接收到该告知消息后,控制单元403-2基于该告知消息中包括的VM1与VM2处于同一物理主机上的信息,确定要使用的连接建立机制为轻量级协议。并基于接收到的VM1和VM2的IP地址和端口号以及VM1的ID将相应记录中的VM1的ID默认值更新为接收到的消息中包含的ID值。

然后,控制单元403-2将VM1和VM2的VMID1和VMID2发送给现有技术中已经实现的、用于建立轻量级连接的轻量级协议引擎模块(未示出)并由轻量级协议引擎模块建立VM1和VM2之间的轻量级连接,并将连接建立成功报告给控制单元403-2。控制单元403-2在从轻量级协议引擎模块接收到连接建立成功的确认后,控制数据复用器406-2将发送队列和接收队列中的数据连接到已建立的轻量级连接。如果控制单元403-2从协议引擎模块接收到连接建立失败的确认,则基于接收到的VM1和VM2的IP地址和端口号从记录表404-2中清除用于该连接的记录,并将连接建立失败报告给相应的应用。

下面,参照图5和6举例说明在如上所述建立虚拟机之间的轻量级连接后发生虚拟机迁移的情况下切换连接建立机制的过程。

首先参照图5,假设虚拟机2与虚拟机1处于同一台物理主机,例如物理主机400上,且虚拟机2与虚拟机1之间已经建立了轻量级连接,并且VM2要迁移到另一物理主机,例如物理主机500。在VM2实际进行迁移之前,VM2中的控制单元403-2首先命令数据复用器406-2锁定其中的所有发送队列和接收队列。然后,VM2开始迁移。

物理主机400中的虚拟化层一接收到VM2发生迁移的消息,就通知控制逻辑模块471并由控制逻辑模块471基于VM2的VMID2从全局库480中检索VM2的IP地址,并基于VM2的VMID2删除VM2在全局库480中的全部记录。

在VM2成功迁移之后,物理主机500中的虚拟化层给VM2分配新的VMID,并由其控制逻辑模块571再次在全局库480中注册VM2,即,以(VMID,VMIP,HVID)的形式在全局库480中存储物理主机500给虚拟机VM2分配的ID、VM2的IP地址和物理主机500的虚拟化层的ID。

物理主机400的虚拟化层中的控制逻辑模块471提供包括VM2的IP地址和不在同一物理主机的信息的消息给通信代理模块470。该消息可以具有任何形式,只要能够实现通知VMIP2和不在同一物理主机上的功能即可。通信代理模块470基于虚拟化层自身已有的机制(该机制对于本领域技术人员而言是公知的),将上述消息提供给物理主机1上除VM2之外的其它虚拟机中的控制单元。

下面以VM1为例,举例说明物理主机400上的其它虚拟机接收到上述消息之后执行的动作。在接收到该告知消息后,VM1中的控制单元403-1基于该告知消息中包括的不在同一物理主机上的信息,确定与具有该IP地址的虚拟机之间要使用的连接建立机制为TCP/IP协议。VM1中的控制单元403-1基于VM2的IP地址检索其中的记录表404-1以查看有没有与该IP地址相关的记录。如果没有找到任何记录,则说明VM1与VM2没有建立任何轻量级协议连接,丢弃该消息并且不做任何动作。如果找到了相应记录,则说明VM1与VM2建立了轻量级协议连接。有多少条记录就表明有多少个已建立的连接。控制单元403-1控制数据复用器406-1锁定与这些连接相关的发送队列和接收队列,并基于当前队列的状态更新记录中的各个项,诸如,已接收的分组数、已发送的分组数。

在锁定队列之后,在VM1和VM2中的控制单元403-1和403-2都控制各自的卸载引擎单元402-1和402-2开始基于记录表404-1和404-2中的相关信息,诸如,双方的IP地址和端口号、已接收的分组数、已发送的分组数,使用试探法建立TCP控制块,并将已建立的TCP控制块发送到TCP/IP栈实现模块(图中未示出)。TCP/IP栈实现模块基于接收的TCP控制块建立TCP/IP连接之后,将连接建立成功消息返回给控制单元403-1和403-2。

收到连接建立成功消息后,VM2和VM1各自的控制单元403-1和403-2控制数据复用器406-1和406-2解除发送队列和接收队列的锁定。响应于控制单元403-1和403-2的控制,数据复用器406-1和406-2解除对发送队列和接收队列的锁定,并开始通过该TCP/IP连接发送数据。

参照图6,假设物理主机400上的虚拟机VM1与物理主机500上的虚拟机VM2之间已经建立了TCP/IP连接,并且VM2要迁移到VM1所在的物理主机400上。在VM2实际进行迁移之前,VM2中的控制单元403-2首先命令数据复用器406-2锁定其中的所有发送队列和接收队列。然后,VM2开始迁移。

物理主机500中的虚拟化层一接收到VM2发生迁移的消息,就通知控制逻辑模块571并由控制逻辑模块571基于VM2的VMID2从全局库480中检索VM2的IP地址,并基于VM2的VMID2删除VM2在全局库480中的全部记录。

然后,VM2开始迁移。在VM2成功地从物理主机500迁移到物理主机400之后,物理主机400给VM2分配VMID2’,随后,VM2中的的控制单元403-2发起注册过程,如上文中所述的那样。物理主机400中的虚拟化层中的控制逻辑模块471再次在全局库480中注册VM2,即,以(VMID,IP,HVID)的形式在全局库480中存储物理主机400给虚拟机VM2分配的ID、VM2的IP地址和物理主机400的虚拟化层的ID。

在给VM2分配了VMID2’之后,物理主机400的虚拟化层中的控制逻辑模块471提供包括VM2的IP地址、VMID2’和在同一物理主机内的信息的消息给通信代理模块470。该消息可以具有任何形式,只要能够实现通知VMIP2、VMID2’和在同一物理主机上的功能即可。通信代理模块470基于虚拟化层自身已有的机制(该机制对于本领域技术人员而言是公知的),将上述消息提供给除VM2之外的其它虚拟机中的控制单元。

下面以VM1为例,举例说明其它虚拟机接收到上述消息之后执行的动作。

在接收到该告知消息后,VM1中的控制单元403-1基于该告知消息中包括的在同一物理主机上的信息,确定与具有该IP地址的虚拟机之间要使用的连接建立机制为轻量级协议。VM1中的控制单元403-1基于VM2的IP地址检索其中的记录表404-1以查看有没有与该IP相关的记录。如果没有找到任何记录,则说明VM1与VM2没有建立任何TCP/IP协议连接,丢弃该消息并不做任何动作。如果找到了相应记录,则说明VM1与VM2建立了TCP/IP协议连接,并用VMID2’更新记录中的VM2的ID。有多少条记录就表明有多少个已建立的TCP/IP连接。控制单元403-1控制数据复用器406-1锁定与这些连接相关的发送队列和接收队列,并基于当前队列的状态更新记录中的各个项,诸如,已接收的分组数、已发送的分组数。

然后,VM1中的控制单元403-1将VM2的ID发送到轻量级协议引擎模块(图中未示出)中,以便建立VM1和VM2之间的轻量级协议连接。轻量级协议引擎模块在成功建立了轻量级连接之后,将连接建立成功消息返回给控制单元403。

接收到连接建立成功消息之后,VM2和VM1各自的控制单元403-1和403-2控制数据复用器406解除发送队列和接收队列的锁定。响应于控制单元403的控制,数据复用器406解除对发送队列和接收队列的锁定,并开始通过轻量级连接发送/接收数据。

图7示出了根据本发明的、在虚拟机与虚拟化层之间交换的消息的形式。但是,本发明不限于此,而是可以采用任何实现相同或等同功能的形式的消息。如果消息中的某一字段没有值,优选地,将其设为NULL。例如,注册请求消息(01,VMID1,VMIP1,NULL,NULL,NULL,NULL);连接建立请求消息是(01,NULL,VMIP1,PortID1,NULL,VMIP2,PortID2);响应于连接建立请求返回给虚拟机的消息是:(10,VMID1,VMIP1,PortID1,NULL,VMIP2,PortID2)或者(11,NULL,VMIP1,PortID1,NULL,VMIP2,PortID2);响应于动态迁移返回给虚拟机的消息是(10,NULL,NULL,NULL,VMID2,VMIP2,NULL)或者(11,NULL,NULL,NULL,NULL,VMIP2,NULL)。当然,如图7所示,消息中还可以包括其他信息,也可以采用更多的消息类型。

图8是示出了根据本发明的在虚拟化层中确定虚拟机所处的位置的方法的流程图。

根据本发明的方法在步骤800开始。

在步骤802,确定与虚拟机所处的位置有关的信息。

在步骤804,向虚拟机发送包括所确定的信息的消息。

在步骤806,本方法结束。

图9是示出了图8所示的步骤802的具体步骤的流程图。

在步骤902,判断是否接收到连接建立请求。如果没有,则处理前进到步骤912,否则,处理前进到步骤904。

在步骤904,基于连接建立请求中包含的信息,诸如,IP地址,查询全局库。如果未获得查询结果,例如连接对方虚拟机所在的虚拟化层的ID,则处理前进到908,否则,处理前进到步骤906。

在步骤906,判断查询结果与虚拟化层自身的信息是否匹配。如果匹配,则处理前进到910,否则,处理前进到步骤908。

在步骤908,确定虚拟机不在同一物理主机上。然后处理去到图8的步骤804。

在步骤910,确定虚拟机在同一物理主机上。然后处理去到图8的步骤804。

在步骤912,判断是否接收到系统信息。如果没有接收到系统信息,则处理返回到步骤902,否则,处理前进到步骤914。

在步骤914,判断接收到系统信息指示虚拟机迁移入本物理主机还是迁移出本物理主机。如果指示迁移入本物理主机,则处理前进到步骤910,否则,处理前进到步骤908。

以上各步骤的实现细节在上文中对于虚拟化层中的各个部件的描述中已经进行了详述,在此不再赘述。

图10是示出了根据本发明的根据虚拟机所处的位置动态地确定虚拟机之间的连接建立机制的方法的流程图。

根据本发明的方法在步骤1000开始。

在步骤1002,接收与虚拟机所处的位置有关的消息。然后,处理前进到步骤1004。

在步骤1004,基于接收到的消息,确定虚拟机之间的连接建立机制。如果接收到的消息是如果接收到的信息是来自虚拟化层的、指示不在同一物理主机上的消息,则确定连接建立机制为TCP/IP协议;如果接收到的信息是来自虚拟化层的、指示在同一物理主机上的消息,则确定连接建立机制为轻量级协议。然后,处理前进到步骤1006。

在步骤1006,控制根据所确定的连接建立机制建立虚拟机之间的连接。如果在虚拟机之间已经建立连接的情况下由于虚拟机的迁移而使得所确定的连接建立机制不同于正在使用的连接建立机制,则在切换连接建立机制之前需要锁定数据的发送和接收。在连接建立成功之后,需要对数据的发送和接收解锁。

在步骤1008,根据控制,将发送/接收数据附接到建立的连接上。

以上各步骤的实现细节在上文中对于虚拟化层中的各个部件的描述中已经进行了详述,在此不再赘述。

本发明通过根据虚拟机所处的位置动态地确定连接建立机制,使得本发明能够充分利用轻量级协议和TCP/IP协议的优势,避开了其缺陷,从而使得系统的性能始终保持最佳。

对本领域的技术人员来说将显而易见的是,可在本发明中作出各种修改,而不会背离本发明的精神和范围。由此,意图使本发明涵盖此发明的修改和变化,只要它们在所附权利要求及其等价物的范围内即可。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号