基于虚拟机的虚拟网络报文处理方法和系统转让专利

申请号 : CN200910088013.8

文献号 : CN101605084B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡春明刘新刚李沁李建欣李岑

申请人 : 北京航空航天大学

摘要 :

本发明公开了一种基于虚拟机的虚拟网络报文处理方法和系统,方法包括:当接收方数据转发组件检测到接收方虚拟机处于迁移开始状态时,向信息公告板发送申请锁定请求;所述信息公告板根据所述申请锁定请求锁定所述信息公告板的节点信息表中所述接收方虚拟机对应的记录,并缓存所述记录对应的更新请求;所述接收方数据转发组件根据本地的迁移信息表判断接收到的数据报文的类型,并根据所述数据报文的类型对数据报文进行转发和缓存。系统包括锁定申请模块、锁定模块和第一数据报文转发和缓存模块。本发明保障了虚拟机迁移过程中通信地址的无缝切换,实现了虚拟网络中通信的持续可靠性运行,同时提高了信息的获取效率和数据报文的转发效率。

权利要求 :

1.一种基于虚拟机的虚拟网络报文处理方法,其特征在于,包括:

当接收方数据转发组件检测到接收方虚拟机处于迁移开始状态时,向信息公告板发送申请锁定请求;

所述信息公告板根据所述申请锁定请求锁定所述信息公告板的节点信息表中所述接收方虚拟机对应的记录,并缓存所述记录对应的更新请求;

所述接收方数据转发组件根据本地的迁移信息表判断接收到的数据报文的类型,并根据所述数据报文的类型对数据报文进行转发和缓存。

2.根据权利要求1所述的方法,其特征在于,还包括:

当所述接收方数据转发组件检测到所述接收方虚拟机处于迁移结束状态时,向所述信息公告板发送解除锁定请求;

所述信息公告板根据缓存的所述更新请求更新所述节点信息表中所述接收方虚拟机对应的记录,并向虚拟网络中的所有数据转发组件发送解除锁定请求;

所述接收方数据转发组件根据接收到的所述解除锁定请求将缓存的数据报文发送到迁移后的接收方虚拟机。

3.根据权利要求1所述的方法,其特征在于,所述接收方数据转发组件根据本地的迁移信息表判断接收到的数据报文的类型,并根据所述数据报文的类型对数据报文进行转发和缓存包括:所述接收方数据转发组件根据接收到的数据报文查询所述本地的迁移信息表;

当查询结果为所述数据报文中携带的目的地址记录在所述迁移信息表的真实物理地址项中时,所述接收方数据转发组件按照所述目的地址将所述数据报文转发到所述接收方虚拟机,并缓存预设的时间段内的数据报文;

当查询结果为所述数据报文中携带的目的地址记录在所述迁移信息表的虚假物理地址项中时,所述接收方数据转发组件按照所述目的地址在所述迁 移信息表中对应的真实目的地址将数据报文转发到所述接收方虚拟机,并缓存预设的时间段内的数据报文。

4.根据权利要求3所述的方法,其特征在于,还包括:

通过所述信息公告板中的节点信息表维护虚拟节点的物理地址与虚拟节点的IP地址之间的对应关系,以及所述虚拟节点所在的虚拟机容器的标识信息;和/或通过所述信息公告板中的宿主机信息表维护宿主机的标识信息、所述宿主机的IP地址以及所述宿主机的端口号之间的对应关系。

5.根据权利要求3所述的方法,其特征在于,还包括:

发送方虚拟机与所述接收方虚拟机位于同一虚拟机容器中时,当所述接收方数据转发组件检测到所述接收方虚拟机处于迁移开始状态时,所述接收方数据转发组件冒充所述接收方虚拟机向所述虚拟机容器中的所有节点发送虚假非请求地址解析协议报文,在所述虚假非请求地址解析协议报文中携带所述接收方虚拟机的虚假物理地址。

6.根据权利要求4所述的方法,其特征在于,还包括:

当检测到虚拟机在虚拟网络中启动时,所述虚拟机对应的数据转发组件向所述信息公告板发送信息注册请求,在所述信息注册请求中携带所述虚拟机的物理地址、IP地址和所在的宿主机的标识,所述信息公告板根据所述虚拟机的物理地址、IP地址和所在的宿主机的标识更新所述节点信息表,并根据所述虚拟机的IP地址和端口信息更新所述宿主机信息表;和/或当检测到虚拟机退出虚拟网络时,所述虚拟机对应的数据转发组件向所述信息公告板发送信息删除请求,根据所述信息删除请求删除所述虚拟机在所述信息公告板中的记录;

和/或

当检测到虚拟机的信息发生变化时,所述虚拟机对应的数据转发组件向所述信息公告板发送信息更新请求,根据所述信息更新请求更新所述虚拟机在所述信息公告板中的记录。

7.根据权利要求1所述的方法,其特征在于,还包括:

当检测到虚拟机处于迁移开始状态时,所述虚拟机对应的数据转发组件在所述迁移信息表中添加所述虚拟机对应的记录;

当检测到虚拟机处于迁移结束状态时,所述虚拟机对应的数据转发组件删除所述虚拟机在所述迁移信息表中对应的记录。

8.一种基于虚拟机的虚拟网络报文处理系统,其特征在于,包括:

锁定申请模块,用于当接收方数据转发组件检测到接收方虚拟机处于迁移开始状态时,向信息公告板发送申请锁定请求;

锁定模块,用于所述信息公告板根据所述申请锁定请求锁定所述信息公告板的节点信息表中所述接收方虚拟机对应的记录,并缓存所述记录对应的更新请求;

第一数据报文转发和缓存模块,用于所述接收方数据转发组件根据本地的迁移信息表判断接收到的数据报文的类型,并根据所述数据报文的类型对数据报文进行转发和缓存。

9.根据权利要求8所述的系统,其特征在于,还包括:

解除锁定申请模块,用于当所述接收方数据转发组件检测到所述接收方虚拟机处于迁移结束状态时,向所述信息公告板发送解除锁定请求;

锁定解除模块,用于所述信息公告板根据缓存的所述更新请求更新所述节点信息表中所述接收方虚拟机对应的记录,并向虚拟网络中的所有数据转发组件发送解除锁定请求;

第二数据报文转发和缓存模块,用于所述接收方数据转发组件根据接收到的所述解除锁定请求将缓存的数据报文发送到迁移后的接收方虚拟机。

10.根据权利要求8所述的系统,其特征在于,所述第一数据报文转发和缓存模块包括:查询单元,用于所述接收方数据转发组件根据接收到的报文查询所述本地的迁移信息表; 第一数据报文转发单元,用于根据所述查询单元的查询结果为所述数据报文中携带的目的地址记录在所述迁移信息表的真实物理地址项中时,所述接收方数据转发组件按照所述目的地址将所述数据报文转发到所述接收方虚拟机;

第二数据报文转发单元,用于根据所述查询单元的查询结果为所述数据报文中携带的目的地址记录在所述迁移信息表的虚假物理地址项中时,所述接收方数据转发组件按照所述目的地址在所述迁移信息表中对应的真实目的地址将数据报文转发到所述接收方虚拟机;

数据报文缓存单元,用于所述接收方数据转发组件缓存预设的时间段内的数据报文。

说明书 :

基于虚拟机的虚拟网络报文处理方法和系统

技术领域

[0001] 本发明涉及虚拟网络技术,尤其涉及一种基于虚拟机的虚拟网络报文处理方法和系统。

背景技术

[0002] 随着计算机和网络技术的飞速发展以及应用的不断深入,包括计算资源、数据资源、软件资源以及服务资源等的各类资源大量涌现。如何实现各种资源的聚合和高效共享成为网络计算中的重要科学问题,虚拟化技术则成为解决该问题开辟了新的方向。虚拟机(Virtual Machine;以下简称:VM)作为一种系统级的虚拟化技术,在硬件与软件之间引入虚拟层,屏蔽底层硬件的异构性,为上层系统与软件提供独立隔离的运行环境,方便了各类资源的聚合,从而提高了硬件资源的利用率。目前,随着任务的规模和求解模式的不断发展,虚拟化技术逐渐发展为虚拟网络技术,如因特网安全协议(Internet Protocol Security;以下简称:IPSec)、虚拟专用网(Virtual Private Network;以下简称:VPN)等。虚拟网络的基本原理是将虚拟网络设备的数据转发给一个转发代理,该转发代理将数据进行封装,再通过真实的网络传送到目标主机上,目标主机上的转发代理将收到的数据进行解封装,然后转发给相应的虚拟网络设备,以实现虚拟网络设备的逻辑连通。 [0003] 现有虚拟网络中进行信息管理和数据转发的方式通常包括集中式和分布式,但这两种方式各存利弊,集中式信息管理尽管较为方便,且具有良好的信息一致性,获取信息快捷等优点,但伸缩性较差,灵活性不高;分布式信息管理则获取信息的效率较低,信息更新速率较慢;集中式数据转发虽然实现结构简单,但由于复杂转发与路由工作均由服务器处理,因此服务器成为制约节点间数据传输效率的瓶颈。当虚拟机在通信过程中出现迁移时,迁移的源端和目的端会同时出现两个相同的虚拟机镜像,即源虚机和目的虚机,源虚机和目的虚机的IP地址和物理地址均相同。在迁移开始时,源虚机处于运行状态,而目的虚机处于暂停状态,而且虚拟网络中的其他虚拟节点不能获知该虚拟机的迁移状态,当其他虚拟节点向该在迁虚拟机发送数据报文时,则数据报文可能发送到处于暂停状态的目的虚机,导致数据报文丢失。在迁移过程中,源虚机和目的虚机通过网络不断同步内存状态,但在最后一次内存同步时,源虚机停机,目的虚机在完成同步后切换到运行状态,当此其他虚拟节点向该在迁虚拟机发送数据报文时,则由于源虚机停机会导致数据报文丢失,造成虚拟网络中断。

发明内容

[0004] 本发明的目的在于提供一种基于虚拟机的虚拟网络报文处理方法和系统,考虑基于虚拟机的虚拟计算环境的特点,解决在虚拟机迁移过程中数据报文出现丢失的问题,保障虚拟机迁移过程中通信地址的无缝切换,保证数据报文准确地送达到正确的虚拟机,实现虚拟网络中通信的持续可靠性运行,同时提高信息的获取效率和数据报文的转发效率。 [0005] 为了实现上述目的,本发明提供了一种基于虚拟机的虚拟网络报文处理方法,包括:
[0006] 当接收方数据转发组件检测到接收方虚拟机处于迁移开始状态时,向信息公告板发送申请锁定请求;
[0007] 所述信息公告板根据所述申请锁定请求锁定所述信息公告板的节点信息表中所述接收方虚拟机对应的记录,并缓存所述记录对应的更新请求;
[0008] 所述接收方数据转发组件根据本地的迁移信息表判断接收到的数据报文的类型,并根据所述数据报文的类型对数据报文进行转发和缓存。
[0009] 本发明还提供了一种基于虚拟机的虚拟网络报文处理系统,包括: [0010] 锁定申请模块,用于当接收方数据转发组件检测到所述接收方虚拟机处于迁移开始状态时,向所述信息公告板发送申请锁定请求;
[0011] 锁定模块,用于所述信息公告板根据所述申请锁定请求锁定所述信息公告板的节点信息表中所述接收方虚拟机对应的记录,并缓存所述记录对应的更新请求; [0012] 第一数据报文转发和缓存模块,用于所述接收方数据转发组件根据本地的迁移信息表判断接收到的数据报文的类型,并根据所述数据报文的类型对数据报文进行转发和缓存。
[0013] 本发明提供的一种基于虚拟机的虚拟网络报文处理方法和系统,针对虚拟机的虚拟计算环境的特点,设置信息公告板锁定机制、存储重发机制、报文重定向机制以及迁移信息表,当虚拟机发生迁移时,通过对信息公告板中对应的记录进行锁定,并缓存该记录的更新请求,根据迁移信息表的查询结果对数据报文进行转发和缓存,实现了虚拟机迁移过程中通信地址的无缝切换,保证了网络数据准确地送达正确的虚拟机,透明地实现了数据报文的存储重传,保障了虚拟节点在迁移过程中的通信不中断,同时保障了虚拟网络的持续可靠性运行。同时,本发明通过信息公告板对虚拟节点的信息进行集中式管理,实现了通过信息公告板对虚拟网络中所有虚拟节点的信息进行集中发布、统一管理和维护,不仅提高了信息的获取效率,而且能及时反映虚拟网络的变化,通过数据转发组件对数据报文进行分布式转发,解除了集中式报文转发产生的速度瓶颈,大大提高了数据报文的转发效率。 附图说明
[0014] 图1为本发明基于虚拟机的虚拟网络报文处理方法第一实施例的流程图; [0015] 图2为本发明基于虚拟机的虚拟网络报文处理方法第一实施例中虚拟网络的体系结构图;
[0016] 图3为本发明基于虚拟机的虚拟网络报文处理方法第一实施例中物理地址的获取流程图;
[0017] 图4为本发明基于虚拟机的虚拟网络报文处理方法第二实施例的流程图; [0018] 图5为本发明基于虚拟机的虚拟网络报文处理方法第三实施例的流程图; [0019] 图6为本发明基于虚拟机的虚拟网络报文处理方法第四实施例的流程图; [0020] 图7为本发明基于虚拟机的虚拟网络报文处理方法第五实施例的流程图; [0021] 图8为本发明基于虚拟机的虚拟网络报文处理方法第五实施例中的第一信息交互示意图;
[0022] 图9为本发明基于虚拟机的虚拟网络报文处理方法第五实施中的第二信息交互示意图;
[0023] 图10为本发明基于虚拟机的虚拟网络报文处理方法第六实施例的流程图; [0024] 图11为本发明基于虚拟机的虚拟网络报文处理方法第六实施例中的第一信息交互示意图;
[0025] 图12为本发明基于虚拟机的虚拟网络报文处理方法第六实施例中的第二信息交互示意图;
[0026] 图13为本发明基于虚拟机的虚拟网络报文处理系统实施例的结构图。 具体实施方式
[0027] 下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。 [0028] 虚拟化技术作为一种有效聚合资源、实现高效共享的技术,不仅可以实现动态负载均衡,还可以在底层硬件设备变化甚至失效时,保证软件不间断地运行,从而 提高系统的可用性和可靠性。目前,虚拟化技术已经成为当前的热点技术,学术界与产业界对此展开了大量的研发并取得了积极进展,代表性的工作包括Xen、KVM、Vmware和Virtual PC等。随着任务的规模任务的规模与求解模式的不断发展为了更好适应新的应用需求,必需有虚拟网络技术的支持,将虚拟机封装的资源聚合起来,动态组建所需的虚拟计算环境。例如,Amazon的Elastic Compute Cloud(EC2)云计算系统就是通过虚拟化技术封装资源,然后利用网络将这些资源组织起来,为用户提供可定制的虚拟计算环境。研究人员已经提出了多种虚拟网络技术,如IPSec技术和各种VPN技术。其中,OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,它是一套成熟的开源虚拟专用网解决方案,利用它能够在复杂的网络环境(如支持穿透NAT,穿越防火墙)中建立一条虚拟通道,将位于通道两端的节点或网络连接起来,组建所需的网络环境.OpenVPN使用TUN/TAP驱动程序,将二层或者三层网络数据包传送到用户态应用程序,然后使用SSL/TLS技术加密传输,从而实现隧道功能,可以很好的保证数据的安全性。OpenVPN技术采用C/S结构,需要部署一个服务器,各客户端接连到服务器,所有的数据都通过服务器集中转发,进而实现节点间的相互连通。WOW是佛罗里达大学的研究项目,目的是利用虚拟机、层叠网与P2P技术将分布在广域网下的资源聚合起来,组建成一个可伸缩的高性能虚拟工作站。WOW首先利用虚拟机将分布的资源进行封装,然后利用IPOP技术将这些资源聚合起来。IPOP负责WOW的网络虚拟化,是它的核心技术之一。IPOP采用TUN/TAP作为基础,转发三层网络数据,即IP数据包.与OpenVPN不同,IPOP采取P2P结构。IPOP没有中心服务器,它采用Brunet P2P overlay技术管理虚拟网络中的节点,维护节点间的转发信息。IPOP中的每个转发代理本身是一个P2P结点.当需要转发IP数据包时,转发代理首先从层叠网中取得转发信息,然后将数据包进行封装,再转发出去。而N2N是另一个基于P2P技术的虚拟网络项目,其与IPOP不同,N2N在转发数据时在三层数据包中封装二层数据包(layer two over layer three),组建的是二层的虚拟局域网。此外,N2N采取的是有结构的P2P技术,与IPOP中有所不同。 [0029] 虚拟网络技术的基本原理是将虚拟网络设备的数据转发给一个转发代理,这个代理程序将这些数据进行封装,再通过真实的网络将其送达到目标主机上,目标主机上的转发代理将收到的数据解封装后转发给相应的虚拟网络设备,实现虚拟网络设备的逻辑连通。传统的虚拟网络技术是在真实物理网络上组建所需的虚拟网络环境, 其将分布的资源聚合到同一个网络中。本发明提供的虚拟网络报文处理方法则针对基于虚拟机的虚拟计算环境的特点,考虑虚拟机可能发生的迁移等状况,以下分别以具体的实施例对本发明的技术方案进行详细的介绍。
[0030] 图1为本发明基于虚拟机的虚拟网络报文处理方法第一实施例的流程图,如图1所示,本实施例为在一般情况下虚拟网络中虚拟节点间进行通信的方法流程,此处所指的一般情况即为虚拟网络中的虚拟机未进行迁移的情况,本发明提出的虚拟机迁移情况下的虚拟节点间通信是基于一般情况下的通信流程的,因此,此处先对一般情况下虚拟节点间的通信进行介绍。本实施例提供的基于虚拟机的虚拟网络报文处理方法可以具体包括如下步骤:
[0031] 步骤101,发送方虚拟机向接收方虚拟机发送数据报文。
[0032] 由于虚拟网络中各虚拟节点分布在各个不同的虚拟机容器中,则虚拟网络中各虚拟机之间进行的数据报文转发可以包括虚拟机容器内的数据报文转发和虚拟机容器间的数据报文转发。其中,虚拟机容器(Virtual Machine Container;以下简称:VMC)为安装在计算资源上的基础组件,对硬件资源进行封装,屏蔽资源的异构性。每个容器节点都具备运行多个虚拟机实例的能力,并提供远程调用和管理接口,通过这些接口可以对这个节点的上运行的虚拟机实例进行控制,如远程部署、启动、停止、调整运行参数等。而虚拟机也称为虚拟机实例,其负责封装计算资源,从资源使用者的角度来说,虚拟机便是一台可供使用的计算机,与真实物理机没有区别。本实施例分别对虚拟机容器内和虚拟机容器间这两种数据报文转发方式进行具体的介绍。
[0033] 图2为本发明基于虚拟机的虚拟网络报文处理方法第一实施例中虚拟网络的体系结构图,如图2所示,假设在虚拟网络中设置有VMC1和VMC2两个虚拟机容器,其中,VMC1中的虚拟节点包括虚拟机vm1、虚拟网桥vBridge1和数据转发组件iVic-VPN1,VMC2中包括虚拟机vm2和vm3、虚拟网桥vBridge2和数据转发组件iVic-VPN2,同一虚拟机容器中的虚拟节点通过虚拟网桥连接,各数据转发组件在虚拟网桥之间建立一个二层的通信隧道,将各个分布的虚拟网桥连通,组成一个虚拟网络。信息公告板统一维护和管理虚拟网络中各个虚拟节点的信息,为各数据转发组件进行数据转发提供信息支持。其中,数据转发组件作为一种用户态应用程序安装在虚拟机容器中,主要负责不同虚拟机容器间虚拟机节点通信时的报文转发,同时,也是实现网络报文存储转发的核心组件之一。信息公告板是虚拟网络的基础设 备,其独立部署在虚拟网络中,负责发布并维护虚拟网络中各虚拟节点的信息,为数据报文的转发提供信息支持。本发明提供的信息公告板负责管理与维护虚拟网络中的节点信息,协助数据转发组件iVic-VPN完成数据报文的转发。这些节点信息可以包括:虚拟节点的MAC地址与IP地址的对应关系,虚拟节点所在的虚拟机容器,以及虚拟机容器中数据转发组件iVic-VPN转发虚拟网络数据时所用的IP地址与端口的信息。具体地,BBS信息公告板通过节点信息表(记作NI表)和宿主机信息表(记作HI表)来将这些信息组织起来。其中,NI表维护虚拟节点MAC地址与IP地址的对应关系,以及该节点所在的虚拟机容器(又称作宿主机)的ID信息,如下表1所示为节点信息表的示例。HI表用于维护宿主机的信息,记录宿主机的ID编号以及运行在该宿主机上的数据转发组件VM-VPN转发虚拟网络数据所用的IP地址与端口,如下表2所示为宿主机信息表的示例。
[0034] 表1节点信息表
[0035]Mac地址 IP地址 宿主机ID
00:15:58:09:C8:70 192.168.32.3 1
00:19:B9:41:74:7F 192.168.32.6 2
00:1C:25:98:ED:7F 192.168.32.9 2
[0036] 表1宿主机信息表
[0037]宿主机ID IP地址 端口
1 192.168.1.26 5003
2 192.168.1.31 6007
[0038] 虚拟网桥是当前各种虚拟机项目的基本网络组件,是一种透明的二层网络设备,负责转发二层数据报文,其可以在混杂模式下工作,动态地维护一个地址与网桥端口的对应表(记为AP表);根据接收到的数据报文的源地址建立和更新AP表;根据接收到的数据报文的目的地址查询AP表,根据查询结果做出转发决定;当接收到未知目的地址的数据报文时,则向每个接收到该数据报文的端口转发该数据报文;在本发明的技术方案中利用虚拟网桥连接位于同一虚拟机容器内的虚拟节点。
[0039] 在虚拟网络中的两个虚拟机节点间进行数据报文的转发时,数据报文由一个虚拟机发送到另一个虚拟机,在本实施例中,发送方虚拟机为发送数据报文的虚拟机,接收方虚拟机为接收数据报文的虚拟机。
[0040] 步骤102,发送方数据转发组件根据接收到的数据报文中携带的目的MAC地址查询信息公告板中的节点信息表,根据查询结果判断接收方虚拟机所在的宿主机是否与发送方虚拟机所在的虚拟机容器相同,如果相同,则执行步骤103,否则执行步骤104。 [0041] 当发送方虚拟机在虚拟网络中进行ARP报文广播之后,发送方数据转发组件接收到该ARP报文,发送方数据转发组件根据该ARP报文查询信息公告板中的节点信息NI表,其中,发送方数据转发组件为发送方虚拟机所在的虚拟机容器中对应的数据转发组件。发送方数据转发组件根据查询结果判断接收方虚拟机所在的宿主机是否与发送方虚拟机所在的虚拟机容器相同,如果二者相同,则执行步骤103,否则转向执行步骤104。假设发送方虚拟机所在的虚拟机容器为VMC1,接收方虚拟机的IP地址为192.168.32.3,则发送方数据转发组件根据该IP地址查询上述表1,获取到该IP地址对应的宿主机ID为1,则表明接收方虚拟机所在的虚拟机容器也为VMC1,即经过判断,接收方虚拟机所在的宿主机与发送方虚拟机所在的虚拟机容器相同,则执行后续容器内节点通信的步骤流程。假设发送方虚拟机所在的虚拟机容器为VMC1,接收方虚拟机的IP地址为192.168.32.6,则发送方数据转发组件根据该IP地址查询上述表1,获取到该IP地址对应的宿主机ID为2,则表明接收方虚拟机所在的虚拟机容器为VMC2,即经过判断,接收方虚拟机所在的宿主机与发送方虚拟机所在的虚拟机容器不同,则执行后续容器间节点通信的步骤流程。
[0042] 进一步地,在发送方虚拟机向接收方虚拟机进行数据报文的发送之前,需要先获得接收方虚拟机的MAC地址,具体获取目的MAC地址可以采用如图3所示的步骤,如图3为本发明基于虚拟机的虚拟网络报文处理方法第一实施例中物理地址的获取流程图,具体包括如下步骤:
[0043] 步骤301,在向接收方虚拟机发送数据报文之前,发送方虚拟机在本地缓存中查找与接收方虚拟机对应的MAC地址,如果查找到对应的MAC地址,则执行步骤302,否则执行步骤303。
[0044] 步骤302,发送方虚拟机根据查找到的MAC地址,将要发送的数据报文封装成数据帧发送出去。
[0045] 步骤303,发送方虚拟机向同一虚拟机容器中的所有虚拟节点广播发送ARP报文。 [0046] 步骤304,发送方数据转发组件接收到ARP报文后,根据该ARP报文中携带的目的IP地址,在信息公告板的NI表中查询该目的IP地址对应的宿主机标识,根据查 询结果判断接收方虚拟机所在的宿主机与发送方虚拟机所在的虚拟机容器是否相同,如果是,则执行步骤305,否则执行步骤306。
[0047] 步骤305,通过虚拟网桥将接收方虚拟机的MAC地址转发到发送方虚拟机,并完成数据报文的转发。
[0048] 步骤306,发送方数据转发组件代替接收方虚拟机向发送方虚拟机发送一个ARP响应报文,其中该ARP响应报文中携带有接收方虚拟机对应的MAC地址。 [0049] 步骤103,由发送方虚拟网桥将发送方虚拟机发送的数据报文转发到接收方虚拟机。
[0050] 本步骤为经过判断,宿主机与发送方虚拟机所在的虚拟机容器相同,执行的容器内节点通信的步骤流程。本步骤中进行通信的两个虚拟机位于同一虚拟机容器中,因此本步骤中的发送方虚拟网桥与接收方虚拟网桥是相同的,利用该虚拟机容器中的虚拟网桥对完成数据报文的转发工作。当发送方虚拟机在向虚拟网络广播发送ARP报文时,虚拟网桥也接收到该ARP报文,虚拟网桥向所有其他端口(除接收该ARP报文的端口外)转发该ARP报文,同时,虚拟网桥根据ARP报文中携带的ARP报文的源地址信息,以及接收该ARP报文的端口信息,更新AP表。同时,接收方虚拟机也接收到该ARP报文,通过查询信息公告板的NI表,接收方虚拟机发现该ARP报文中携带的IP地址对应的MAC地址为自身的MAC地址时,向发送方虚拟机返回ARP响应报文。发送方虚拟机接收到ARP响应报文后,根据该ARP响应报文获得接收方虚拟机的MAC地址,并更新本地缓存。同时,虚拟网桥也接受到接收方虚拟机向发送方虚拟机返回的ARP报文,虚拟网桥根据该ARP响应报文的目的地址查询AP表,将该ARP响应报文转发到该目的地址对应的端口,并更新AP表。然后,发送方虚拟机将获取到的MAC地址作为目的地址,将数据报文封装成数据帧向接收方虚拟机发送。该数据帧先转发到虚拟网桥,虚拟网桥根据数据帧中的目的地址查询AP表,将其转发到接收方虚拟机对应的端口,由该端口向接收方虚拟机转发。接收方虚拟机则从对应的虚拟网桥端口接收到数据帧,并作出回应,实现双方的相互通信。
[0051] 步骤104,发送方数据转发组件接收到发送方虚拟机发送的数据报文后,根据数据报文查询信息公告板中的节点信息表和宿主机信息表,获取接收方虚拟机所在的宿主机的IP地址和端口号,并将数据报文转发到宿主机中。
[0052] 本步骤为经过判断,宿主机与发送方虚拟机所在的虚拟机容器不同,执行的容器间节点通信的步骤流程。在本步骤中,两个虚拟机所在的虚拟机容器不相同,各 自对应的数据转发组件和虚拟网桥也不相同,其中,发送方数据转发组件为发送方虚拟机所在虚拟容器中对应的数据转发组件,发送方虚拟网桥为发送方虚拟机所在虚拟容器中对应的虚拟网桥,而接收方数据转发组件为接收方虚拟机所在虚拟容器中对应的数据转发组件,接收方虚拟网桥为接收方虚拟机所在虚拟容器中对应的虚拟网桥。在本步骤中,数据转发组件需要承担数据报文的转发工作,与虚拟网桥一起共同完成两个虚拟机之间的数据报文的转发工作。当发送方虚拟机发送数据报文后,发送方数据转发组件接收到该数据报文,根据数据报文中携带的目的IP地址,查询信息公告板中的NI表,获取到该目的IP地址对应的宿主机标识,再根据宿主机标识查询信息公告板中的HI表,获取到该宿主机对应的端口号。发送方数据转发组件通过发送方虚拟网桥将数据报文从宿主机对应的端口号转发到宿主机中,具体可以通过真实的网络以UDP或TCP报文的方式将数据报文发送给对应的宿主机,完成数据转发。其中,宿主机即为接收方虚拟机所在的虚拟机容器。
[0053] 步骤105,接收方虚拟机所在的宿主机中的数据转发组件和虚拟网桥将数据报文转发到接收方虚拟机。
[0054] 在将数据报文转发到接收方虚拟机所在的宿主机后,宿主机中的数据转发组件接收到发送方数据转发组件转发的数据报文,对该数据报文进行解封装,得到发送方虚拟机发送的数据帧。然后数据转发组件将该数据帧转到宿主机中的虚拟网桥,由该虚拟网桥将数据帧转发到接收方虚拟机,完成不在同一VMC中的发送方虚拟机和接收方虚拟机之间的通信。
[0055] 具体地,在根据数据报文查询信息公告板中的节点信息表和宿主机信息表,获取接收方虚拟机所在的宿主机的IP地址和端口号之前,还可以包括如下步骤:首先,发送方数据转发组件代替接收方虚拟机向发送方虚拟机发送地址解析协议响应报文。发送方数据转发组件在接收到发送方虚拟机广播的ARP报文后,通过查询信息公告板中的NI表,获知接收方虚拟机与发送方虚拟机不在同一虚拟机容器中,则发送方数据转发组件代替接收方虚拟机向发送方虚拟机返回ARP响应报文。发送方虚拟机接收到该ARP响应报文后,获知接收方虚拟机的MAC地址。发送方虚拟网桥根据地址解析协议响应报文,将发送方虚拟机发送到接收方虚拟机的数据报文,转发到发送方数据转发组件。发送方虚拟网桥根据发送方虚拟机接收到的ARP响应报文,自动学习到与接收方虚拟机的MAC地址对应的端口号,并将发送到接收方虚拟机的 所有数据报文都转发到该端口上,通过该端口将所有发送到接收方虚拟机的数据报文均转发到发送方数据转发组件,由发送方数据组件进行进一步的转发。
[0056] 本实施例提供了一种基于虚拟机的虚拟网络报文处理方法,当两个虚拟机之间进行数据报文的转发时,通过发送方数据组件查询信息公告板中的NI表,获知发送方虚拟机和接收方虚拟机所在的虚拟机容器是否相同,根据查询结果的不同进行相应的不同报文处理;对于同一虚拟机容器中两个虚拟机之间进行的通信,通过该虚拟容器中的虚拟网桥对数据报文进行转发,对于不同虚拟机容器中两个虚拟机之间进行的通信,通过两个虚拟机容器中的数据转发组件和虚拟容器共同配合完成对数据报文进行转发,通过集中式信息管理和分布式数据转发,实现了通过信息公告板对虚拟网络中所有虚拟节点的信息进行集中发布、统一管理和维护,不仅提高了信息的获取效率,而且能及时反映虚拟网络的变化,同时,通过数据转发组件对数据报文进行分布式转发,解除了集中式报文转发产生的速度瓶颈,大大提高了数据报文的转发效率。
[0057] 图4为本发明基于虚拟机的虚拟网络报文处理方法第二实施例的流程图,如图4所示,本实施例为针对虚拟机出现迁移时虚拟网络中虚拟节点之间的通信。在虚拟网络中,虚拟机均运行在一个虚拟机容器中,当虚拟机开始迁移时,同一时刻在迁移的源端和目的端会出现两个相同的虚拟机镜像,分别称之为源虚机和目的虚机。源虚机和目的虚机具有相同的配置,如它们拥相同的IP地址和MAC地址。当虚拟机迁移开始时,源虚机处于运行状态,目的虚机处于暂停状态。当虚拟机迁移开始后,目的虚机通过网络不断与源虚机同步内存状态。在最后一次内存同步时,源虚机停机,目的虚机在同步完成后切换到运行状态继续运行,完成迁移过程。迁移前后,虚拟机一直在持续运行,只是其宿主机发生了变化。在虚拟机进行迁移的过程中,可能出现如下问题:首先,虚拟机迁移过程是透明的,虚拟网络中的其它节点以及虚拟网桥等虚拟网络设施不能感知到任何不同。在虚拟机的迁移过程中,网络上会出现两个同样的虚拟机,它们处在不同的虚拟机容器中。为了保证网络应用的一致正确的运行,虚拟网络中的节点必须在迁移完成前将数据发送到源虚拟机,在迁移完成之后,将数据发送到目的虚机。然而,迁移的开始与结束时刻只有源虚机所在的虚拟机容器知晓,即使目的虚机的虚拟机容器都无法感知。因此,虚拟网络如何帮助分布的虚拟节点完成通信地址的无缝切换是实现可靠通信的挑战之一。其次,在虚拟机迁移过程中,在迁虚 拟机一直处于持续运行状态,直到最后一次内存同步时才会短暂停机。然而,就是这段停机时刻,虚拟网络中其它节点发送给它的报文就会丢失,造成虚拟网络中断。如何实现即使在虚拟机短暂停机过程中,网络报文也不丢失,网络应用能持续可靠运行是虚拟网络面临的另一个挑战。为了解决现有技术中存在的以上技术问题,本实施例提供了一种基于虚拟机的虚拟网络报文处理方法,可以具体包括如下步骤:
[0058] 步骤401,当接收方数据转发组件检测到接收方虚拟机处于迁移开始状态时,向信息公告板发送申请锁定请求。
[0059] 在本实施例中,在发送方虚拟机向接收方虚拟机发送数据报文的过程中,接收方虚拟机出现迁移。接收方数据转发组件为接收方虚拟机在迁移之前所处的虚拟机容器中的数据转发组件,与接收方目的端数据转发组件相对应,接收方目的端数据转发组件为接收方虚拟机在迁移之后所处的虚拟机容器中的数据转发组件。当接收方数据转发组件检测到接收方虚拟机处于迁移开始状态时,即接收方数据转发组件发现接收方虚拟机准备发生迁移时,接收方数据转发组件向信息公告板发送申请锁定请求,申请锁定NI表中接收方虚拟机对应的记录。同时,接收方数据转发组件开始进入迁移工作状态。
[0060] 步骤402,信息公告板根据申请锁定请求锁定节点信息表中接收方虚拟机对应的记录,并缓存记录对应的更新请求。
[0061] 信息公告板接收到申请锁定请求后,根据该申请锁定请求锁定定NI表中接收方虚拟机对应的记录,不对该记录进行更新或删除等的操作,即本发明提出的信息公告板锁定机制。由于虚拟机的迁移过程是透明的,虚拟网络中的其他节点以及网桥等虚拟网络设备不能感知到任何不同,而虚拟机在迁移过程中会在源端和目的端分别出现源虚机和目的虚机两个完全相同的虚拟机。而且在迁移完成前目的虚机一直处于暂停状态,则当数据报文转发到该虚拟机时,可能会导致数据报文不能准确地送达正确的虚拟机。因此,采用本实施的步骤对信息公告板中接收方虚拟机所对应的记录进行锁定,当接收方虚拟机开始迁移时,在目的端出现与接收方虚拟机相同的虚拟机。此时,由于虚拟网络中有新的虚拟机出现,则会向信息公告板发送对NI表中的接收方虚拟机的记录进行的更新请求,而信息公告板的NI表中有关接收方虚拟机的记录已经被锁定,该信息更新请求暂时不能被执行,信息公告板将该更新请求进行缓存。
[0062] 步骤403,接收方数据转发组件根据本地的迁移信息表判断接收到的数据报文的 类型,并根据数据报文的类型对数据报文进行转发和缓存。
[0063] 当发送方虚拟机向接收方虚拟机发送数据报文时,根据信息公开板中公布的信息,该数据报文被转发到接收方数据转发组件上,接收方数据转发组件根据迁移信息表(记为MI表)判断该数据报文的类型。当检测到接收方虚拟机处于迁移开始状态时,接收方数据转发组件在迁移信息表中添加该接收方虚拟机对应的记录。即每当有虚拟机发生迁移时,则数据转发组件便会在迁移信息表中添加一条该虚拟机对应的记录,包括该虚拟机的真实物理地址和虚假物理地址,如下表3所示为迁移信息表的示例,其中,MAC项表示在迁虚拟机的真实物理地址,而FAKE MAC项为在迁虚拟机的虚假物理地址。因此,通过查询该迁移信息表可以获知某个虚拟机是否处于迁移状态。
[0064] 表2迁移信息表
[0065]MAC FAKE MAC
00:15:58:09:C8:70 00:16:3e:03:D5:A8
[0066] 进一步地,本实施提供的基于虚拟机的虚拟网络报文处理方法还可以包括:发送方虚拟机与接收方虚拟机位于同一虚拟机容器中时,当接收方数据转发组件检测到接收方虚拟机处于迁移开始状态时,接收方数据转发组件冒充接收方虚拟机向虚拟机容器中的所有节点发送虚假非请求ARP报文,在虚假非请求ARP报文中携带接收方虚拟机的虚假物理地址。即本发明引入的报文重定向机制,在接收方数据转发组件转入迁移工作状态时,该接收方数据转发组件冒充接收方虚拟机向虚拟容器内的其他虚拟节点发送一个虚假ARP报文,将接收方虚拟机的IP地址对应到一个虚假的MAC地址。这样,各个虚拟节点在接收到该报文后便会更新自己的ARP缓存信息,所有发送给接收方虚拟机的数据报文就采用虚假的MAC地址作为目的地址。同时,接收方虚拟网桥通过学习之后,自动将数据报文转发到接收方数据转发组件,由该接收方数据转发组件对数据报文进行转发并缓存。 [0067] 具体地,步骤403可以具体为:接收方数据转发组件根据接收到的数据报文查询迁移信息表,根据查询结果判断数据报文的类型。当接收方数据转发组件检测到某个虚拟机发生迁移时,会将该虚拟机的真实物理地址添加到迁移信息表中;而当进行容器内节点通信时,则接收方数据转发组件将伪造的接收方虚拟机的虚假物理地址也添加到迁移信息表中;当虚拟机的迁移结束之后,接收方数据转发组件则将该虚拟机对应的记录进行删除。因此,接收方数据转发组件通过查询迁移信息表,可以获知转发 的数据报文的类型。即经过查询,如果在迁移信息表中未记录有数据报文中携带的目的IP地址对应的MAC地址,则表明该数据报文对应的接收方虚拟机处于正常状态,未进行迁移;如果在迁移信息表中记录有数据报文中携带的目的IP地址对应的MAC地址,且该MAC地址记录在迁移信息表的MAC项中,则表明该数据报文对应的接收方虚拟机处于迁移状态,且该接收方虚拟机与发送方虚拟机处于不同的虚拟机容器中,该数据报文的转发为容器间节点通信;如果在迁移信息表中记录有数据报文中携带的目的IP地址对应的MAC地址,且该MAC地址记录在迁移信息表的FAKE MAC项中,则表明该数据报文对应的接收方虚拟机处于迁移状态,且该接收方虚拟机与发送方虚拟机处于同一的虚拟机容器中,该数据报文的转发为容器内节点通信。 [0068] 当查询结果为数据报文中携带的目的地址记录在迁移信息表的真实物理地址项中时,接收方数据转发组件按照目的地址将数据报文转发到接收方虚拟机,并缓存预设的时间段内的数据报文。经过查询,当查询结果为转发的数据报文中携带的目的MAC地址记录在MI表中的MAC项中,则进行容器间节点通信,接收方数据转发组件按照该MAC地址将该数据报文转发到接收方虚拟机。同时,该接收方数据转发组件除了正常转发数据报文外,还将预设的时间段内的数据报文进行缓存,该预设的时间段为根据迁移过程中源虚机在与目的虚机进行最后一次内存同步后的停机时间所设定的,通常源虚机停机的时间可以测定(通常为几秒钟),因此,接收方数据转发组件将最近一段时间(通常可以设备一分钟)的报文进行缓存,防止在源虚机停机之后造成报文丢失,当信息公告板的锁定机制解除之后,再将数据报文进行转发,即本发明提出的存储重发机制。
[0069] 当查询结果为数据报文中携带的目的地址记录在迁移信息表的虚假物理地址项中时,接收方数据转发组件按照目的地址在迁移信息表中对应的真实目的地址将数据报文转发到接收方虚拟机,并缓存预设的时间段内的数据报文。经过查询,当查询结果为转发的数据报文中携带的目的MAC地址记录在MI表中的FAKE MAC项中,则进行容器内节点通信,接收方数据转发组件根据目的MAC地址查询MI表中对应的真实MAC地址,接收方数据转发组件按照该真实MAC地址将数据报文转发到接收方虚拟机。同时,接收方数据转发组件在进行正常数据报文的转发时,对预设的时间段内的数据报文进行缓存。 [0070] 步骤404,当接收方数据转发组件检测到接收方虚拟机处于迁移结束状态时,向 信息公告板发送解除锁定请求。
[0071] 步骤405,信息公告板根据缓存的更新请求更新节点信息表中接收方虚拟机对应的记录,并向虚拟网络中的所有数据转发组件发送解除锁定请求。
[0072] 步骤406,接收方数据转发组件根据接收到的解除更新请求将缓存的数据报文发送到迁移后的接收方虚拟机。
[0073] 当接收方数据转发组件检测到接收方虚拟机处于迁移结束状态时,,向信息公告板发送解除锁定请求,信息公告板根据该解除锁定请求解除对接收方虚拟机对应的记录的锁定。当锁定解除后,由于锁定过程中在信息公告板中缓存有对接收方虚拟机对应的记录的更新请求,则信息公告板此时对缓存的更新请求进行处理,根据各缓存的更新请求来更新NI表中接收方虚拟机对应的记录。同时,信息公告板向虚拟网络中的所有数据转发组件发送解除锁定请求,各数据转发组件根据该解除锁定请求更新各虚拟节点的地址信息,并将缓存的预设的时间段内的数据报文发送到钱以后的接收方虚拟机。
[0074] 进一步地,本实施例采用信息公告板对虚拟网络中各虚拟节点的信息进行集中式发布,同时还对该信息公告板中记录的信息进行统一的维护和管理,具体包括对信息公告板中的信息进行注册、更新、删除等。具体地,当检测到虚拟机在虚拟网络中启动时,虚拟机对应的数据转发组件向信息公告板发送信息注册请求,在信息注册请求中携带虚拟机的物理地址、IP地址和所在的宿主机的标识,信息公告板根据虚拟机的物理地址、IP地址和所在的宿主机的标识更新所述节点信息表,并根据虚拟机的IP地址和端口信息更新所述宿主机信息表。当检测到虚拟机退出虚拟网络时,虚拟机对应的数据转发组件向信息公告板发送信息删除请求,根据信息删除请求删除所述虚拟机在所述信息公告板中的记录。当检测到虚拟机的信息发生变化时,虚拟机对应的数据转发组件向信息公告板发送信息更新请求,根据信息更新请求更新虚拟机在信息公告板中的记录。当检测到虚拟机处于迁移开始状态时,虚拟机对应的数据转发组件在迁移信息表中添加虚拟机对应的记录。当检测到虚拟机处于迁移结束状态时,虚拟机对应的数据转发组件删除虚拟机在迁移信息表中对应的记录。
[0075] 本实施例提供了一种基于虚拟机的虚拟网络报文处理方法,针对虚拟机的虚拟计算环境的特点,当虚拟机发生迁移时,通过本发明设置的BBS锁定机制、存储重发机制、报文重定向机制以及迁移信息表。当进行容器间节点通信时,通过在虚拟 机迁移开始时,将该虚拟机在BBS中对应的记录进行锁定,在BBS中缓存针对该记录的各个更新请求,当虚拟机开始迁移时,利用iVic-VPN对数据报文进行正常转发之外,对预设的时间段内的数据报文进行缓存,当虚拟机迁移结束后,解除BBS中相关记录的锁定,并执行缓存的各个更新请求,同时将iVic-VPN缓存的预设的时间段内的数据报文转发到迁移后的虚拟机。当进行容器内节点通信时,通过在虚拟机迁移开始时,将该虚拟机在BBS中对应的记录进行锁定,在BBS中缓存针对该记录的各个更新请求,当虚拟机开始迁移时,通过iVic-VPN设置一个与数据报文的目的MAC地址对应的虚假MAC地址,根据该虚假MAC地址对数据报文进行转发,同时对预设的时间段内的数据报文进行缓存,当虚拟机迁移结束后,解除BBS中相关记录的锁定,并执行缓存的各个更新请求,同时将iVic-VPN缓存的预设的时间段内的数据报文转发到迁移后的虚拟机。本实施例通过集中式信息管理和分布式数据转发,实现了通过信息公告板对虚拟网络中所有虚拟节点的信息进行集中发布、统一管理和维护,不仅提高了信息的获取效率,而且能及时反映虚拟网络的变化,同时,通过数据转发组件对数据报文进行分布式转发,解除了集中式报文转发产生的速度瓶颈,大大提高了数据报文的转发效率。本实施例在提高虚拟网络的通信效率的同时,进一步实现了虚拟机迁移过程中通信地址的无缝切换,保证了网络数据准确地送达正确的虚拟机,透明地实现了数据报文的存储重传,保障了虚拟节点在迁移过程中的通信不中断,同时保障了虚拟网络的持续可靠性运行。 [0076] 图5为本发明基于虚拟机的虚拟网络报文处理方法第三实施例的流程图,本实施例为第一实施例的具体实施方式,以具体的例子对第一实施例中的针对同一VMC中虚拟节点之间进行的通信的情况进行详细的介绍。具体地,以上述图2为例进行说明本步骤中的同一VMC内节点通信过程,以图2中vm2和vm3进行通信为例,vm2此处为通信发起方(即发送方虚拟机),vm3此处为通信接收方(即接收方虚拟机),vBridge2为虚拟网桥。其中,vm2的IP地址为192.168.32.6,vm3的IP地址为192.168.32.9,vm2的MAC地址为
00:19:B9:41:74:7F,vm3的MAC地址为:00:1C:25:98:ED:7F。本实施例可以具体包括如下步骤:
[0077] 步骤501,vm2在本地缓存中查找与192.168.32.9对应的MAC地址,如果vm2在本地缓存查找到对应的MAC地址,则执行步骤502,否则执行步骤503。
[0078] 步骤502,vm2利用查到的MAC地址作为目的地址,将要发送的数据封装成数据 帧并发送出去。
[0079] 步骤503,vm2在同一虚拟机容器中广播发送ARP报文,请求192.168.32.9对应的MAC地址,等待其它节点的回应。
[0080] 步骤504,当iVic-VPN2接收到vm2广播发送的ARP报文时,iVic-VPN2根据该ARP报文查询BBS中的NI表,获取到其对应的MAC地址为00:1C:25:98:ED:7F,宿主机ID为2,与自身所在的虚拟机容器相同,则iVic-VPN2不对此报文进行任何响应。 [0081] 步骤505,当vBridge2接收到vm2广播发送的ARP报文时,vBridge2向所有其它端口(端口1和端口3)转发该ARP报文。同时依据该ARP报文的源MAC地址(即00:19:B9:41:74:7F)与接收到该ARP报文的端口(端口2)更新AP表。
[0082] 步骤506,当vm3接收到vm2广播发送的ARP报文时,发现该ARP报文所请求的MAC地址与自身的MAC地址相同,则vm3向vm2发送一个ARP响应报文。
[0083] 需要指出的是,上述步骤404、步骤405和步骤406之间的时序关系并不是唯一的,这两个步骤可以同时执行,也可以互换执行顺序。
[0084] 步骤507,当vBridge2收到vm3对vm2广播的ARP响应报文时,由于该报文是单播报文,所以vBridge2依据ARP响应报文的目的MAC地址(即vm2的MAC地址00:19:B9:41:74:7F)查询AP表,将其转发到该地址对应的端口(端口2)。这时,其它端口中的节点无法收到这个报文。同时,vBridge2依据数据帧的源MAC地址信息(即vm3的MAC地址00:1C:25:98:ED:7F:ED:7F和端口3)更新AP表。
[0085] 步骤508,vm2接收到ARP响应报文后,根据该ARP响应报文获得vm3的MAC地址(00:1C:25:98:ED:7F),并更新自身的本地缓存。
[0086] 步骤509,vm2利用获得的MAC地址(00:1C:25:98:ED:7F)作为目的地址,将要发送的数据封装成数据帧并发送出去。
[0087] 步骤510,当vBridge2接收到从vm2发送给vm3的数据帧时,由于这些数据帧是单播的,所以vBridge2根据数据帧的目的地址(00:1C:25:98:ED:7F),查询AP表,将其转发到vm3对应的端口3,其它端口接收不到这一数据帧。
[0088] 步骤511,当接收到vm2的数据帧时,vm3对该数据帧进行正常处理,并作出回应,双方实现相互通信。
[0089] 本实施例提供了一种基于虚拟机的虚拟网络报文处理方法,当两个虚拟机之间 进行数据报文的转发时,通过该虚拟容器中的虚拟网桥对数据报文进行转发,通过集中式信息管理和分布式数据转发,实现了通过信息公告板对虚拟网络中所有虚拟节点的信息进行集中发布、统一管理和维护,不仅提高了信息的获取效率,而且能及时反映虚拟网络的变化,同时,通过数据转发组件对数据报文进行分布式转发,解除了集中式报文转发产生的速度瓶颈,大大提高了数据报文的转发效率。
[0090] 图6为本发明基于虚拟机的虚拟网络报文处理方法第四实施例的流程图,本实施例为第一实施例的具体实施方式,以具体的例子对第一实施例中的针对不同VMC中虚拟节点之间进行的通信的情况进行详细的介绍。具体地,以上述图2为例进行说明本步骤中的不同VMC内节点通信过程,以图2中vm2和vm1进行通信为例,vm2此处为通信发起方(即发送方虚拟机),vm1此处为通信接收方(即接收方虚拟机),vBridge2为vm2所在虚拟机容器中的虚拟网桥,vBridge1为vm1所在虚拟机容器中的虚拟网桥,iVic-VPN1为vm1所在虚拟机容器中的数据转发组件,iVic-VPN2为vm2所在虚拟机容器中的数据转发组件。其中,vm2的IP地址为192.168.32.6,vm1的IP地址为192.168.32.3,vm2的MAC地址为
00:19:B9:41:74:7F,vm1的MAC地址为:00:15:58:09:C8:70。本实施例可以具体包括如下步骤:
[0091] 步骤601,vm2在本地缓存中查找与192.168.32.3对应的MAC地址,如果vm2在本地缓存查找到对应的MAC地址,则执行步骤502,否则执行步骤503。
[0092] 步骤602,vm2利用查到的MAC地址作为目的地址,将要发送的数据封装成数据帧并发送出去。
[0093] 步骤603,vm2在同一虚拟容器中广播发送ARP报文,请求192.168.32.3对应的MAC地址,等待其它节点的回应。
[0094] 步骤604,当vBridge2接收到vm2广播发送的ARP报文时,vBridge2向所有其它端口(端口1和端口3)转发该ARP报文。同时依据该ARP报文的源MAC地址(即00:19:B9:41:74:7F)与接收到报文的端口(端口2)更新AP表。
[0095] 步骤605,当iVic-VPN2接收到vm2广播发送的ARP报文时,iVic-VPN2根据该ARP报文查询BBS中的NI表,获取到其对应的MAC地址为00:15:58:09:C8:70,宿主机ID为1,与自身所在的虚拟机容器不同。iVic-VPN2代替vm1向vm2发送一个ARP响应报文。 [0096] 步骤606,当vBridge2收到iVic-VPN2对vm2广播的ARP响应报文时,由于该报 文是单播报文,所以vBridge2依据ARP响应报文的目的MAC地址(即vm2的MAC地址00:19:B9:41:74:7F)查询AP表,将其转发到该地址对应的端口(端口2)。这时,其它端口中的节点无法收到这个报文。同时,vBridge2自动学习到数据帧的源MAC地址信息(即vm1的MAC地址00:15:58:09:C8:70和端口1),并更新AP表。此后,发送到vm1对应的MAC地址的数据帧都会转发到端口1。
[0097] 步骤607,vm2接收到ARP响应报文后,根据该ARP响应报文获得vm1的MAC地址并更新自身的本地缓存。
[0098] 步骤608,vm2利用获得的MAC地址(00:15:58:09:C8:70)作为目的地址,将要发送的数据封装成数据帧并发送出去。
[0099] 步骤609,iVic-VPN2接收到vm2发送到vm1的数据帧后,根据数据帧中携带的源IP地址查询BBS中的NI表,得到对应的宿主机ID,再根据宿主机ID查询BBS的HI表,得到宿主机对应的IP地址为192.168.1.26,宿主机的端口号为5003。
[0100] 步骤610,iVic-VPN2根据宿主机的IP地址和端口号将数据帧转发到宿主机中。 [0101] 步骤611,iVic-VPN1接收到iVic-VPN2发送的数据帧后,对数据帧进行解封,获得到vm2发送的数据帧。
[0102] 步骤612,iVic-VPN2将vm2发送的数据帧转发到vBridge1上。
[0103] 步骤613,vBridge1通过查询AP表,将数据帧正确地转发到vm1。 [0104] 本实施例提供了一种基于虚拟机的虚拟网络报文处理方法,通过信息公告板进行信息的查询,通过两个虚拟机容器中的数据转发组件和虚拟容器共同配合完成对数据报文进行转发,通过集中式信息管理和分布式数据转发,实现了通过信息公告板对虚拟网络中所有虚拟节点的信息进行集中发布、统一管理和维护,不仅提高了信息的获取效率,而且能及时反映虚拟网络的变化,同时,通过数据转发组件对数据报文进行分布式转发,解除了集中式报文转发产生的速度瓶颈,大大提高了数据报文的转发效率。
[0105] 图7为本发明基于虚拟机的虚拟网络报文处理方法第五实施例的流程图,本实施例为第二实施例的具体实施方式,以具体的例子对第二实施例中的针对同一VMC中虚拟节点之间进行的通信的情况进行详细的介绍。图8为本发明基于虚拟机的虚拟网络报文处理方法第五实施例中的第一信息交互示意图,图9为本发明基于虚拟机的虚拟网络报文处理方法第五实施例中的第二信息交互示意图。具体地,本实施 例以图8和图9为例进行说明,本实施例中,以图8和图9中vm1和vm2进行通信为例,vm2此处为通信发起方(即发送方虚拟机),vm1此处为通信接收方(即接收方虚拟机),其中,vm1在通信过程中发生迁移,iVic-VPN1为迁移前的vm1和vm2所在的虚拟容器中的数据转发组件。本实施例可以具体包括如下步骤:
[0106] 步骤701,vm1开始迁移时,iVic-VPN1进入迁移状态,iVic-VPN1首先虚造一个MAC地址填入本地的MI表,然后,iVic-VPN1冒充vm1向虚拟容器内的其它虚拟节点发送一个虚假非请求ARP报文(即F.GARP报文)。
[0107] 步骤702,vm2收到F.GARP报文后,根据该F.GARP报文更新本地的ARP缓存表,虚拟网桥也会学习到虚假MAC地址与端口的对应关系,则任何发往vm1的报文均重定向到iVic-VPN1。
[0108] 步骤703,iVic-VPN1接到vm2发送的数据帧,先查询MI表如果在MI表中查不到目的MAC地址对应的记录,则iVic-VPN1直接对数据帧进行转发;如果在MI表中查询到目的MAC地址记录在MI表中的MAC项,则iVic-VPN1对该数据帧进行转发,并缓存最近一段时间内的数据帧;如果在MI表中查询到目的MAC地址记录在MI表中的FAKE MAC项,则iVic-VPN1根据对应目的MAC地址在MI中对应的真实MAC地址,替换数据帧的目的MAC地址,再对该数据帧进行转发,并缓存最近一段时间内的数据帧。
[0109] 步骤704,当vm1迁移完成时,iVic-VPN1会完成解锁动作,iVic-VPN1收到BBS的解锁更新后,代替vm1向虚拟容器内虚拟节点发一个非请求ARP报文(即GARP报文),通过该GARP报文恢复vm1的IP地址与其真实MAC地址的对应关系。
[0110] 步骤705,此后,vm2转发给vm1的数据都会由虚拟网桥转发给iVic-VPN1。 [0111] 步骤706,iVic-VPN1收到数据后,由于iVic-VPN1已经收到解锁更新,则这些数据会正确的转发到迁移后的vm1。
[0112] 本实施例提供了一种基于虚拟机的虚拟网络报文处理方法,针对虚拟机的虚拟计算环境的特点,当进行容器内节点通信时,通过在虚拟机迁移开始时,将该虚拟机在BBS中对应的记录进行锁定,在BBS中缓存针对该记录的各个更新请求,当虚拟机开始迁移时,通过iVic-VPN设置一个与数据报文的目的MAC地址对应的虚假MAC地址,根据该虚假MAC地址对数据报文进行转发,同时对预设的时间段内的数据报文进行缓存,当虚拟机迁移结束后,解除BBS中相关记录的锁定,并执行缓存的各个更新请求,同时将iVic-VPN缓存的预设的时间段内的数据报文转发到迁移后的虚 拟机。本实施例通过集中式信息管理和分布式数据转发,实现了通过信息公告板对虚拟网络中所有虚拟节点的信息进行集中发布、统一管理和维护,不仅提高了信息的获取效率,而且能及时反映虚拟网络的变化,同时,通过数据转发组件对数据报文进行分布式转发,解除了集中式报文转发产生的速度瓶颈,大大提高了数据报文的转发效率。本实施例在提高虚拟网络的通信效率的同时,进一步实现了虚拟机迁移过程中通信地址的无缝切换,保证了网络数据准确地送达正确的虚拟机,透明地实现了数据报文的存储重传,保障了虚拟节点在迁移过程中的通信不中断,同时保障了虚拟网络的持续可靠性运行。
[0113] 图10为本发明基于虚拟机的虚拟网络报文处理方法第六实施例的流程图,本实施例为第二实施例的具体实施方式,以具体的例子对第二实施例中的针对不同VMC中虚拟节点之间进行的通信的情况进行详细的介绍。图11为本发明基于虚拟机的虚拟网络报文处理方法第六实施例中的第一信息交互示意图,图12为本发明基于虚拟机的虚拟网络报文处理方法第六实施例中的第二信息交互示意图。具体地,本实施例以图11和图12为例进行说明,本实施例中,以图11和图12中vm1和vm2进行通信为例,vm2此处为通信发起方(即发送方虚拟机),vm1此处为通信接收方(即接收方虚拟机),其中,vm1在通信过程中发生迁移,由VMC1迁移到VMC2,iVic-VPN1为迁移前的vm1所在的虚拟容器VMC1中的数据转发组件,iVic-VPN2为迁移后的vm1和vm2所在的虚拟容器VMC2中的数据转发组件。本实施例可以具体包括如下步骤:
[0114] 步骤1001,VMC1中的虚拟节点vm1准备向VMC2迁移,iVic-VPN1向BBS发送申请锁定请求,申请锁定NI表中vm1对应的记录,并进入迁移工作状态。
[0115] 步骤1002,VMC1开始迁移vm1,iVic-VPN1转发报文,并缓存最近1分钟内发往vm1的数据报文。
[0116] 步骤1003,iVic-VPN2发现虚拟网络中出现新的虚拟机,即迁移过程中vm1在目的端VMC2中形成的与vm1具有相同配置的目的虚机,iVic-VPN2向BBS进行报告,请求更新NI表中vm1的记录信息。这时因为NI表中的对应记录被锁定,BBS缓存这个报告,但暂时不更新记录。
[0117] 步骤1004,vm1迁移完成,iVic-VPN1向BBS发出解锁请求,解除在步骤901中锁定的记录。
[0118] 步骤1005,BBS解锁NI表中的对应记录,根据收到的缓存报告,更新该记录.并 向虚拟网络中的所有iVic-VPN发布解锁更新信息,同步这一变化。
[0119] 步骤1006,iVic-VPN1收到解锁更新,并开始重发刚解锁虚拟机的所有缓存报文,因为NI表记录已经更新,所以发往vm1的缓存报文会被正确的发送到iVic-VPN2。 [0120] 本实施例提供了一种基于虚拟机的虚拟网络报文处理方法,针对虚拟机的虚拟计算环境的特点,当进行容器间节点通信时,通过在虚拟机迁移开始时,将该虚拟机在BBS中对应的记录进行锁定,在BBS中缓存针对该记录的各个更新请求,当虚拟机开始迁移时,利用iVic-VPN对数据报文进行正常转发之外,对预设的时间段内的数据报文进行缓存,当虚拟机迁移结束后,解除BBS中相关记录的锁定,并执行缓存的各个更新请求,同时将iVic-VPN缓存的预设的时间段内的数据报文转发到迁移后的虚拟机。本实施例通过集中式信息管理和分布式数据转发,实现了通过信息公告板对虚拟网络中所有虚拟节点的信息进行集中发布、统一管理和维护,不仅提高了信息的获取效率,而且能及时反映虚拟网络的变化,同时,通过数据转发组件对数据报文进行分布式转发,解除了集中式报文转发产生的速度瓶颈,大大提高了数据报文的转发效率。本实施例在提高虚拟网络的通信效率的同时,进一步实现了虚拟机迁移过程中通信地址的无缝切换,保证了网络数据准确地送达正确的虚拟机,透明地实现了数据报文的存储重传,保障了虚拟节点在迁移过程中的通信不中断,同时保障了虚拟网络的持续可靠性运行。
[0121] 图13为本发明基于虚拟机的虚拟网络报文处理系统实施例的结构图,本实施例提供了一种基于虚拟机的虚拟网络报文处理系统,包括锁定申请模块1301、锁定模块1302和第一数据报文转发和缓存模块1303。其中,锁定申请模块1301用于当接收方数据转发组件检测到接收方虚拟机处于迁移开始状态时,向信息公告板发送申请锁定请求。锁定模块1302用于根据所述申请锁定请求锁定信息公告板的节点信息表中所述接收方虚拟机对应的记录,并缓存所述记录对应的更新请求。第一数据报文转发和缓存模块1303用于根据本地的迁移信息表判断接收到的数据报文的类型,并根据所述数据报文的类型对数据报文进行转发和缓存。
[0122] 进一步地,本实施例提供的基于虚拟机的虚拟网络报文处理系统还包括解除锁定申请模块、锁定解除模块和第二数据报文转发和缓存模块。其中,解除锁定申请模块用于当检测到所述接收方虚拟机处于迁移结束状态时,向所述信息公告板发送解除锁定请求。锁定解除模块,用于根据缓存的所述更新请求更新所述节点信息表 中所述接收方虚拟机对应的记录,并向虚拟网络中的所有数据转发组件发送解除锁定请求。第二数据报文转发和缓存模块用于根据接收到的所述解除锁定请求将缓存的数据报文发送到迁移后的接收方虚拟机。
[0123] 具体地,第一数据报文转发和缓存模块1303可以具体包括:查询单元、第一数据报文转发单元、第二数据报文转发单元和数据报文缓存单元。其中,查询单元用于根据接收到的报文查询所述本地的迁移信息表。第一数据报文转发单元用于根据所述查询单元的查询结果为所述数据报文中携带的目的地址记录在所述迁移信息表的真实物理地址项中时,按照所述目的地址将所述数据报文转发到所述接收方虚拟机。第二数据报文转发单元用于根据所述查询单元的查询结果为所述数据报文中携带的目的地址记录在所述迁移信息表的虚假物理地址项中时,按照所述目的地址在所述迁移信息表中对应的真实目的地址将数据报文转发到所述接收方虚拟机。数据报文缓存单元用于缓存预设的时间段内的数据报文。
[0124] 本发明提供的一种基于虚拟机的虚拟网络报文处理系统,针对虚拟机的虚拟计算环境的特点,设置信息公告板锁定机制、存储重发机制、报文重定向机制以及迁移信息表,通过设置锁定申请模块、锁定模块和第一数据报文转发和缓存模块,当虚拟机发生迁移时,通过对信息公告板中对应的记录进行锁定,并缓存该记录的更新请求,根据迁移信息表的查询结果对数据报文进行转发和缓存,实现了虚拟机迁移过程中通信地址的无缝切换,保证了网络数据准确地送达正确的虚拟机,透明地实现了数据报文的存储重传,保障了虚拟节点在迁移过程中的通信不中断,同时保障了虚拟网络的持续可靠性运行。同时,本发明通过信息公告板对虚拟节点的信息进行集中式管理,实现了通过信息公告板对虚拟网络中所有虚拟节点的信息进行集中发布、统一管理和维护,不仅提高了信息的获取效率,而且能及时反映虚拟网络的变化,通过数据转发组件对数据报文进行分布式转发,解除了集中式报文转发产生的速度瓶颈,大大提高了数据报文的转发效率。
[0125] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。