一种虚拟机系统及其通信处理方法转让专利

申请号 : CN200610165459.2

文献号 : CN101207604B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘建成

申请人 : 联想(北京)有限公司

摘要 :

本发明公开了一种虚拟机系统及其通信处理方法,其中该虚拟机系统的虚拟机监视器包括一虚拟机监视器端数据包处理模块,用于接收来自服务操作系统或客户操作系统的源IP地址和目的IP地址分别为第一IP地址与第二IP地址的数据包,并用于在调换所述数据包的源IP地址和目的IP地址后根据第二IP地址唯一对应的通信通道将数据包发送给接收方。本发明可以实现使用相同IP地址的多个OS之间的正常网络通信,且不受通信OS更改了名字或IP地址的影响,不仅解决了使用相同IP地址不同虚拟机无法通讯的问题,而且用特定DNS名字替代IP地址,更易于记忆和使用。

权利要求 :

1.一种虚拟机系统,包括服务操作系统、至少一个客户操作系统、虚拟机监视器及硬件,所述服务操作系统和客户操作系统的真实IP地址为第一IP地址,其特征在于:所述虚拟机监视器包括一虚拟机监视器端数据包处理模块,用于接收来自服务操作系统或客户操作系统的源IP地址和目的IP地址分别为第一IP地址与第二IP地址的数据包,并用于在调换所述数据包的源IP地址和目的IP地址后根据第二IP地址唯一对应的通信通道将数据包发送给接收方;

所述第二IP地址为虚拟的第二IP地址;

所述通信通道为服务操作系统与客户操作系统之间的通信通道或客户操作系统与客户操作系统之间的通信通道。

2.根据权利要求1所述的虚拟机系统,其特征在于,所述虚拟机监视器还包括:通信关系保存模块,用于保存服务操作系统和客户操作系统之间或客户操作系统和客户操作系统之间的通信通道与第二IP地址的对应关系;

访问请求响应模块,用于根据访问请求的发送方和访问请求中包括的需要访问的服务操作系统或客户操作系统从通信关系保存模块中查找到对应的第二IP地址,并将该第二IP地址返回给发送访问请求的服务操作系统或客户操作系统。

3.根据权利要求2所述的虚拟机系统,其特征在于,所述服务操作系统和客户操作系统中包括:访问请求发送模块,用于向访问请求响应模块发送访问请求;

OS端数据包处理模块,用于接收访问请求响应模块返回的第二IP地址,并构造源IP地址为第一IP地址,目的IP地址为第二IP地址的数据包后发送给虚拟机监视器端数据包处理模块,同时用于接收虚拟机监视器端数据包处理模块发送的源IP地址为第二IP地址,目的IP地址为第一IP地址的数据包。

4.根据权利要求2或3所述的虚拟机系统,其特征在于,所述访问请求中包括需要访问的操作系统的计算机名或域名。

5.一种虚拟机系统的通信处理方法,所述虚拟机系统包括服务操作系统、至少一个客户操作系统、虚拟机监视器及硬件,所述服务操作系统和客户操作系统的真实IP地址为第一IP地址,其特征在于,包括:第二数据包处理步骤,所述虚拟机监视器接收来自服务操作系统或客户操作系统的源IP地址和目的IP地址分别为第一IP地址与第二IP地址的数据包,并调换数据包的源IP地址和目的IP地址后,根据第二IP地址唯一对应的通信通道将数据包发送给接收方;

所述第二IP地址为虚拟的第二IP地址;

所述通信通道为服务操作系统与客户操作系统之间的通信通道或客户操作系统与客户操作系统之间的通信通道。

6.根据权利要求5所述的虚拟机系统的通信处理方法,其特征在于,所述虚拟机监视器接收来自服务操作系统或客户操作系统的目的IP地址不是第二IP地址时,将数据包转发至真实网卡。

7.根据权利要求5所述的虚拟机系统的通信处理方法,其特征在于,还包括:第二IP地址获取步骤,根据第一OS的访问请求以及第二IP地址与通信通道的对应关系获取需要采用的第二IP地址;

第一数据包处理步骤,第一OS构造源IP地址为第一IP地址,目的IP地址为第二IP地址的数据包后发送给虚拟机监视器;

第三数据包处理步骤,第二OS接收到数据包后返回正常的TCP/IP连接数据包给虚拟机监视器;

所述第二数据包处理步骤位于所述第一数据包处理步骤和第三数据包处理步骤之间;

所述接收方为所述第二OS,所述第一OS为发送所述源IP地址和目的IP地址分别为第一IP地址与第二IP地址的数据包的所述服务操作系统或客户操作系统。

8.根据权利要求7所述的虚拟机系统的通信处理方法,其特征在于,所述访问请求中包括需要访问的操作系统的计算机名或域名。

说明书 :

一种虚拟机系统及其通信处理方法

技术领域

[0001] 本发明涉及虚拟机系统,特别是一种虚拟机系统的通信处理方法及虚拟机系统。

背景技术

[0002] 虚拟机通讯是虚拟机系统必须提供的功能之一,这既包括GOS(GuestOperation System,客户操作系统)和VMM(Virtual Machine Monitor,虚拟机监视器)之间的通信,GOS和SOS(Service Operation System,服务操作系统)之间的通信,也包括GOS之间的通信。
[0003] 目前虚拟机通讯采用两种方法实现,即:使用专用通信程序进行通信和使用网络Socket进行通信。
[0004] 使用专用通信程序进行通信时,需要在通信的两端(例如,GOS和SOS之间)虚拟机上安装专用的APP和驱动,这种方式增加了系统负担,使用起来比较繁琐,同时,当通信的双方为不同的操作系统的时候,还需要开发、安装不同版本的APP和驱动。
[0005] 由于使用专用通信程序进行虚拟机通信存在上述的问题,因此又出现了另外一种虚拟机通信方法,即使用网络Socket进行虚拟机通信,这种方法简单易用,不用安装额外的APP和Driver,为用户所推崇。
[0006] 然而,使用网络Socket进行通信时,通信的双方需要使用不同的IP地址,如果使用相同的IP地址,操作系统的IP协议层会认为是一个环回地址,不会向低层网卡驱动发数据包。因此,如果一台计算机上安装有多个虚拟机,那么就要占用多个IP地址,这在很多情况下都是不可接受的。此外,不同的IP地址不仅分配、管理复杂(例如,IP地址更改),也不便于记忆和使用。

发明内容

[0007] 本发明的目的在于提供一种虚拟机系统及其通信处理方法,在使用网络通信的情况下,只需使用一个真实IP地址即可实现虚拟机之间的通信。
[0008] 为实现上述目的,本发明提供了一种虚拟机系统,包括服务操作系统、至少一个客户操作系统、虚拟机监视器及硬件,所述服务操作系统和客户操作系统的真实IP地址为第一IP地址,其中,
[0009] 所述虚拟机监视器包括一虚拟机监视器端数据包处理模块,用于接收来自服务操作系统或客户操作系统的源IP地址和目的IP地址分别为第一IP地址与第二IP地址的数据包,并用于在调换所述数据包的源IP地址和目的IP地址后根据第二IP地址唯一对应的通信通道将数据包发送给接收方。
[0010] 上述的虚拟机系统,其中,所述虚拟机监视器还包括:
[0011] 通信关系保存模块,用于保存服务操作系统和客户操作系统之间或客户操作系统和客户操作系统之间的通信通道与第二IP地址的对应关系;
[0012] 访问请求响应模块,用于根据访问请求的发送方和访问请求中包括的需要访问的服务操作系统或客户操作系统从通信关系保存模块中查找到对应的第二IP地址,并将该第二IP地址返回给发送访问请求的服务操作系统或客户操作系统。
[0013] 上述的虚拟机系统,其中,所述服务操作系统和客户操作系统中包括:
[0014] 访问请求发送模块,用于向访问请求响应模块发送访问请求;
[0015] OS端数据包处理模块,用于接收访问请求响应模块返回的第二IP地址,并构造源IP地址为第一IP地址,目的IP地址为第二IP地址的数据包后发送给虚拟机监视器端数据包处理模块,同时用于接收虚拟机监视器端数据包处理模块发送的源IP地址为第二IP地址,目的IP地址为第一IP地址的数据包。
[0016] 上述的虚拟机系统,其中,所述访问请求中包括需要访问的操作系统的计算机名或域名。
[0017] 为更好的实现上述目的,本发明还提供了一种虚拟机系统的通信处理方法,所述虚拟机系统包括服务操作系统、至少一个客户操作系统、虚拟机监视器及硬件,所述服务操作系统和客户操作系统的真实IP地址为第一IP地址,其中,包括:
[0018] 第二数据包处理步骤,所述虚拟机监视器接收来自服务操作系统或客户操作系统的源IP地址和目的IP地址分别为第一IP地址与第二IP地址的数据包,并调换数据包的源IP地址和目的IP地址后,根据第二IP地址唯一对应的通信通道将数据包发送给接收方。
[0019] 上述的虚拟机系统的通信处理方法,其中,所述虚拟机监视器接收来自服务操作系统或客户操作系统的目的IP地址不是第二IP地址时,将数据包转发至真实网卡。
[0020] 上述的虚拟机系统的通信处理方法,其中,还包括:
[0021] 第二IP地址获取步骤,根据操作系统的访问请求以及第二IP地址与通信通道的对应关系获取需要采用的第二IP地址;
[0022] 第一数据包处理步骤,第一OS构造源IP地址为第一IP地址,目的IP地址为第二IP地址的数据包后发送给虚拟机通信处理模块;
[0023] 第三数据包处理步骤,第二OS接收到数据包后返回正常的TCP/IP连接数据包给虚拟机通信处理模块。
[0024] 上述的虚拟机系统的通信处理方法,其中,所述访问请求中包括需要访问的操作系统的计算机名或域名。
[0025] 本发明通过使用一虚拟的第二IP地址对应唯一的通信通道,同时将第二IP地址作为数据包的目的地址使用,VMM在接收到数据包后即调换数据包的源IP地址和目的IP地址,并根据第二IP地址将数据包发送到正确的接收方,而在接收方,由于目的IP地址为接收方的真实IP地址,因此数据包可得到正确处理,这样利用一个真实IP地址即可实现使用相同IP地址的多个OS之间的正常网络通信。
[0026] 同时,本发明利用计算机名或域名访问,因此不受虚拟机操作系统更改IP地址的影响,方便了用户的使用。

附图说明

[0027] 图1为本发明的虚拟机系统的结构示意图;
[0028] 图2为本发明的虚拟机系统中的虚拟机通信处理模块的结构示意图;
[0029] 图3为本发明的虚拟机系统的通信处理方法的流程图。

具体实施方式

[0030] 本发明的系统和方法中,SOS和GOS对外均使用相同的IP地址,在此,为方便描述,将SOS和GOS使用的相同的真实IP地址命名为第一IP地址。
[0031] 同时,在虚拟机系统内部的SOS和GOS之间通信、GOS和GOS之间进行通信的时候,涉及到源IP地址和目的IP地址,但由于SOS和GOS的真实IP地址均为相同的第一IP地址,因此本发明的方法中还涉及一虚构的IP地址,该IP地址包括多个,分别与SOS和GOS之间或GOS和GOS之间的一个通信通道相对应,为方便描述,将其命名为第二IP地址。
[0032] 同时,为方便描述,将发起通信服务请求的OS(SOS或GOS)命名为第一OS,而该第一OS请求通信的对方OS(SOS或GOS)命名为第二OS。
[0033] 为方便理解,下面以具体的范例进行说明。
[0034] 假设本发明的虚拟机系统内部包括SOS、第一GOS和第二GOS3个操作系统,第一IP地址为1.0.0.1,第二IP地址为3个,分别为1.0.0.2、1.0.0.3、1.0.0.4,其中:
[0035] SOS与第一GOS的通信,数据包使用1.0.0.1和1.0.0.2这个IP地址对;
[0036] SOS与第二GOS的通信,数据包使用1.0.0.1和1.0.0.3这个IP地址对;
[0037] 第一GOS与第二GOS的通信,数据包使用1.0.0.1和1.0.0.4这个IP地址对。
[0038] 下面以一个SOS和两个GOS这种具有代表性的情况为例对本发明的系统和方法进行详细说明,因为其中既包括SOS和GOS的通信,也包括GOS与GOS之间的通信。
[0039] 本发明的虚拟机系统如图1所示,包括:服务操作系统SOS、至少一个GOS(图1中以2个为例进行说明,为方便说明,分别命名为第一GOS和第二GOS),设置有虚拟机通信处理模块的VMM及硬件,其中:
[0040] 客户操作系统GOS使用计算机名或域名来访问服务操作系统SOS,和/或使用计算机名或域名与另外一个客户操作系统GOS进行网络通信;
[0041] SOS和GOS中设置有与虚拟机通信处理模块交互的SOS通信驱动模块和GOS通信驱动模块。
[0042] 该虚拟机通信处理模块如图2所示,包括:
[0043] 通信关系保存模块,用于保存服务操作系统SOS和客户操作系统GOS之间或客户操作系统GOS和客户操作系统GOS之间的通信通道与第二IP地址的对应关系;
[0044] 访问请求响应模块,用于接收服务操作系统SOS或客户操作系统GOS的通信驱动模块发送的访问请求,并根据该访问请求的发送方和访问请求消息中包括的需要访问的服务操作系统SOS或客户操作系统GOS的计算机名/域名从通信关系保存模块中查找到对应的第二IP地址,并将该第二IP地址返回给发送访问请求的服务操作系统SOS或客户操作系统GOS的通信驱动模块;
[0045] 虚拟机监视器端数据包处理模块,用于接收通过服务操作系统SOS或客户操作系统GOS的通信驱动模块发送的源IP地址为第一IP地址,目的IP地址为第二IP地址的数据包,并将源IP地址和目的IP地址进行调换,根据发送方和第二IP地址发送给对应的服务操作系统SOS或客户操作系统GOS的通信驱动模块。
[0046] 而通信驱动模块(包括SOS通信驱动模块和GOS通信驱动模块)包括:
[0047] 访问请求发送模块,用于根据应用程序的请求向虚拟机通信处理模块发送访问请求,该访问请求中包括的需要访问的服务操作系统SOS和/或客户操作系统GOS的计算机名或域名;
[0048] OS端数据包处理模块,用于接收访问请求响应模块返回的第二IP地址,并构造源IP地址为第一IP地址,目的IP地址为第二IP地址的数据包后发送给虚拟机监视器端数据包处理模块,同时用于接收虚拟机监视器端数据包处理模块发送的源IP地址为第二IP地址,目的IP地址为第一IP地址的数据包后获取其中的数据传送给应用程序。
[0049] 下面结合图1对本发明的虚拟机系统进行通信的方法进行详细描述,包括如下步骤:
[0050] 第二IP地址获取步骤,根据通信双方的信息及第二IP地址与通信通道的对应关系获取需要采用的第二IP地址;
[0051] 第一数据包处理步骤,第一OS构造源IP地址为第一IP地址,目的IP地址为第二IP地址的数据包后发送给虚拟机通信处理模块;
[0052] 第二数据包处理步骤,虚拟机通信处理模块将接收到的数据包的源IP地址和目的IP地址进行调换后,根据第二IP地址对应的通信通道将地址调换后的数据包发送给第二OS;
[0053] 第三数据包处理步骤,第二OS接收到数据包后,返回正常的TCP/IP连接数据包给虚拟机通信处理模块;
[0054] 第四数据包处理步骤,虚拟机通信处理模块将接收到的数据包的源IP地址和目的IP地址进行调换后,根据第二IP地址对应的通信通道将地址调换后的数据包发送给第一OS。
[0055] 下面结合图1,同时假设SOS与第一GOS的通信,数据包使用1.0.0.1和1.0.0.2这个IP地址对这种情况说明如何利用本发明的方法实现第一GOS与SOS的通信。
[0056] 利用本发明的方法,第一GOS与SOS的通信包括如下步骤:
[0057] 步骤A1,第一GOS需要与SOS通信,访问请求发送模块发送访问请求消息到虚拟机通信处理模块的访问请求响应模块;该访问请求消息中包括SOS的计算机名或域名;
[0058] 步骤A2,访问请求响应模块接收到访问请求消息后,根据需要通信的双方(第一GOS以及SOS)从通信关系保存模块中查找到对应的第二IP地址1.0.0.2后返回给第一GOS的OS端数据包处理模块;
[0059] 步骤A3,第一GOS的OS端数据包处理模块获知该第二IP地址(1.0.0.2)后构造源IP地址为1.0.0.1,目的IP地址为1.0.0.2的数据包后发送给虚拟机监视器端数据包处理模块;在此,由于目的地址不是GOS的真实IP地址1.0.0.1,所以可以向下发送到虚拟机监视器端数据包处理模块;
[0060] 步骤A4,虚拟机监视器端数据包处理模块接收到数据包后,调换数据包的源IP地址和目的IP地址,并根据第二IP地址对应的通信通道(第一GOS与SOS)和数据包的发送方(第一GOS)将数据包发送给SOS的OS端数据包处理模块;
[0061] 步骤A5,SOS的OS端数据包处理模块接收源IP地址为1.0.0.2,目的IP地址为1.0.0.1的数据包后,由于目的IP地址为SOS的真实IP地址,所以按正常处理流程处理该数据包;
[0062] 步骤A6,SOS的OS端数据包处理模块返回正常的TCP/IP连接数据包(源IP地址为1.0.0.1,目的IP地址为1.0.0.2)给虚拟机通信处理模块;在此,由于目的地址为1.0.0.2,不是GOS的真实IP地址1.0.0.1,所以可以向下发送到虚拟机监视器端数据包处理模块;
[0063] 步骤A7,虚拟机监视器端数据包处理模块接收到数据包后,调换数据包的源IP地址和目的IP地址,并根据第二IP地址对应的通信通道(第一GOS与SOS)和数据包的发送方(SOS)将数据包发送给第一GOS的OS端数据包处理模块;
[0064] 步骤A8,第一GOS的OS端数据包处理模块接收接收源IP地址为1.0.0.2,目的IP地址为1.0.0.1的数据包后,由于目的IP地址为SOS的真实IP地址,所以按正常处理流程处理该数据包后完成一次数据的交互;
[0065] 步骤A9,重复步骤A3~A8。
[0066] 当然,在上述的步骤A1中,如果GOS需要访问其他外部的网络,则访问请求响应模块无法找到对应的第二IP地址,此时,会通知VMM按正常流程处理该请求。
[0067] 同时,步骤A4中,虚拟机监视器端数据包处理模块接收到数据包后,如果发现目的IP地址不是第二IP地址,则按正常流程处理,将数据包发送到真实网卡。
[0068] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。