虚拟机热迁移过程中的数据流自适应调整系统及调整方法与流程

文档序号:11710109阅读:295来源:国知局
虚拟机热迁移过程中的数据流自适应调整系统及调整方法与流程

本发明涉及云环境的部署领域,具体涉及一种虚拟机迁移过程中的数据流自适应调整系统及相应的调整方法,属于对迁移机制的修改。



背景技术:

近年云计算、云部署在技术上不断取得进展,在此基础上衍生出各类云平台的应用和研究。虚拟化技术是云平台的基础技术,长期发展下已经有不少成熟的虚拟机产品。除了尽可能提高物理机的资源利用率,尽可能开发虚拟机带来的扩展性和部署的灵活性也日渐成为研究重点。

大部分虚拟机迁移实施方案在“停机-重启”这个环节中忽略了对后续到达原物理机的数据包的处理,造成在网络环境中不得不通过网络协议的重传机制找回丢失的数据内容。然而在有些场景中,数据包无法重传或者重传的代价很大,导致数据包很容易丢失。



技术实现要素:

发明目的:为了解决虚拟机在迁移时会产生较多丢包的问题,本发明提供了一种虚拟机迁移过程中的数据流自适应调整系统以及相应的数据流自适应调整方法,能够使得虚拟机在迁移过程几乎不丢失数据包。

技术方案:为解决上述技术问题,本发明中虚拟机迁移过程中的数据流自适应调整系统,包括:

重定向数据包的发送端,位于虚拟机迁移前的宿主机,用于在虚拟机停机时重定向后续到达虚拟机的数据包,进而将收到的数据包转发到重发数据包的接收端;

重发数据包的接收端,位于虚拟机迁移后的宿主机,一方面用于缓存虚拟机停机阶段从发送端发来的数据包,另一方面用于缓存迁移结束交换机改变数据流向后远程主机发给虚拟机的数据包,并将缓存的数据包按顺序发送给宿主机上新启动的虚拟机。

其中,所述发送端重定向后续到达虚拟机的数据包包括对远程主机发送给虚拟机的数据包进行拦截、改写数据包的地址信息、拆分数据包。

本发明中的虚拟机迁移过程中的数据流自适应调整方法,基于xen虚拟机平台的热迁移机制,将虚拟机迁移前的宿主机作为重定向数据包的发送端,将虚拟机迁移后的宿主机作为虚拟机重启后重发数据包的接收端,包括以下步骤:

(1)在迁移开始阶段,发送端模拟出第一虚拟网卡,并通过广播数据包向网络环境内其他机器通知该网卡的位置及物理地址;接收端模拟出第二虚拟网卡,并通过广播数据包向网络环境内其他机器通知该网卡的位置及物理地址;所述第一虚拟网卡、第二虚拟网卡的物理地址均不同与网络环境内其他机器的物理地址;

(2)发送端拦截远程主机发送给虚拟机的数据包,并对数据包进行重定向处理后发送给接收端,发送端重复这样的收包-发包动作直至接收到接收端发送来的通知数据包,向接收端发送回应数据包;

(3)接收端接收发送端发送的重定向数据包并进行缓存,重复这样的收包-缓存包动作,在迁移过程结束后,接收端向发送端发送通知数据包,待接收到发送端发来的回应数据包后结束收包-缓存包动作;

迁移过程结束后,接收端接收从远程主机直接发送的数据包并进行缓存;

(4)接收端收到回应数据包后发送arp数据包测试虚拟机是否可以响应外界请求,若是,则按顺序向虚拟机发送缓存的数据包;否则,继续发送arp数据包直到虚拟机可以响应外界请求为止。

其中,发送端对接收到的数据包进行解析,根据其源物理地址和目标物理地址判断该数据包是远程主机发送给虚拟机的数据包还是接收端发送来的通知数据包;接收端通过对接收到的数据包进行解析,根据其目标物理地址判断该数据包为远程主机发送给虚拟机的数据包还是发送端发送的数据包,对于发送端发送的数据包,再根据数据包的字段类型判断该数据包是重定向数据包还是回应数据包。

其中,步骤(2)中发送端对数据包进行重定向处理,包括以下步骤:

若数据包大小不超过以太网数据帧的最大字节数,则对该数据包加上以太网帧头,源物理地址填第一虚拟网卡的物理地址,目标物理地址填接收端虚拟网卡的物理地址,设定第一重定向数据包类型字段,发送给接收端;

若数据包大小超过以太网数据帧的最大字节数,将该数据包分成两部分,前半部分的字节数为最大字节数,对两部分分别加上以太网帧头,对前半部分设置第二重定向数据包类型字段,对后半部分设置第三重定向数据包类型字段,发送给接收端。

其中,步骤(3)中接收端对接收到的重定向数据包进行缓存,具体为:

若数据包的字段类型为第一重定向数据包,则直接将数据包缓存到预设的缓存器里;若数据包的字段类型为第二重定向数据包或第三重定向数据包,则将两个相应的数据包组装成一个数据包缓存到预设的缓存器里。

有益效果:本发明中虚拟机迁移过程中的数据流自适应系统以及数据流自适应调整方法通过在虚拟机迁移前的宿主机、虚拟机迁移后的宿主机之间建立数据通信系统,在虚拟机迁移的过程中让数据流自适应调整,能够使得虚拟机在迁移过程几乎不丢失数据包,且对数据包带来的延迟在几百毫秒以内,在某些应用场景,例如网络功能虚拟化(networkfunctionvirtualization,nfv)中可以带来极大的方便。

附图说明

图1是本发明中虚拟机迁移过程中的数据流自适应系统的结构示意图;

图2是本发明中虚拟机迁移过程中的数据流自适应调整方法的流程图。

具体实施方式

下面结合实施例对本发明做进一步的详细说明,本实施列对本发明不构成限定。

如图1所示,虚拟机迁移过程涉及到的物理装置有:虚拟机迁移前的宿主机(物理机)、虚拟机迁移后的宿主机、远程主机和交换机,两台宿主机连在同一个交换机上。远程主机通过交换机向虚拟机发送数据包,交换机将数据包转发给虚拟机所在的宿主机,宿主机再利用虚拟化技术发送数据包给虚拟机。在虚拟机“停机-重启”阶段,虚拟机会从一个宿主机完整地迁移到另一个宿主机上,此时,交换机在迁移过程还没有结束时仍然向迁移前的宿主机发送数据包。

本发明中虚拟机迁移过程中的数据流自适应系统以及数据自适应方法主要应用于该阶段,本发明中虚拟机迁移过程中的数据流自适应系统包括:

重定向数据包的发送端,简称发送端,位于迁移前的宿主机,用于在虚拟机停机时重定向后续到达虚拟机的数据包,包括拦截本应该发给虚拟机的数据包、改写数据包的地址信息、拆分数据包等,进而将收到的数据包转发到目标物理机的接收端,即重发数据包的接收端。

重发数据包的接收端,简称接收端,位于迁移后的宿主机,一方面用于缓存虚拟机停机阶段从发送端发来的数据包,另一方面用于缓存迁移结束交换机改变数据流向后远程主机发给虚拟机的数据包,通过发送arp(地址解析协议)等手段确保虚拟机启动以及网络组织结构调整完毕,并将以上缓存的两部分数据包按顺序发送给宿主机上新启动的虚拟机。

本发明中数据包在发送端和接收端之间采用的转移机制为:发送端和接收端通过添加以太网帧头的方式相互进行通信,用通知-回应的方式标记转发数据流的结束。

相应地,本发明中虚拟机迁移过程中的数据流自适应调整方法,采用基于xen虚拟机平台的热迁移机制,通过修改这种热迁移机制在迁移过程中的不同阶段对后续到达的数据包进行处理,来达到转发数据包的目的,从而在虚拟机层面看来数据包不会丢失。

热迁移是xen下实现的一种迁移机制,从代码层面看其实就是几个主要函数的调用。函数调用前和函数调用后分别代表着迁移的开始和结束,在代码实现时,通过往这两个地方插入代码可以通知其他程序迁移的开始和结束。

具体地,本发明中虚拟机迁移过程中的数据流自适应调整方法包括以下步骤:

(1)迁移开始阶段的发送端和接收端初始化

发送端模拟出一块虚拟网卡,为该网卡定义一个不同于网络环境内其他机器地址的mac地址(物理地址),并通过广播数据包向网络环境内其他机器通知该网卡的位置及其mac地址;

接收端模拟出一块虚拟网卡,为该网卡定义一个不同于网络环境内其他机器地址的mac地址,并通过广播数据包向网络环境内其他机器通知该网卡的位置及其mac地址。(2)在迁移快结束时,即xen热迁移最后一次拷贝开始前,修改数据包流向

发送端修改宿主机内部的虚拟网络,拦截本应该发给虚拟机的数据包,进入收包-发包循环,直到收到接收端发来的通知数据包,回收各种资源,并发送一个回应数据包给接收端;

接收端进行收包-缓存包循环,在迁移结束时发送通知数据包给发送端,直到收到发送端发来的回应数据包;迁移过程结束后,接收端接收从远程主机直接发送的数据包并进行缓存;接收端收到回应数据包后发送arp数据包测试虚拟机是否可以响应外界请求,若是,则接收端按顺序发送缓存的数据包(buffer1和buffer2),之后回收资源,结束;否则,继续发送arp数据包直到虚拟机可以响应外界请求为止。

上述发送端修改宿主机内部的虚拟网络,指的是:宿主机里有虚拟网桥,虚拟网桥上连接着实际网卡和虚拟机的虚拟网卡,虚拟机通过该虚拟网桥可以与外部机器进行通信。将发送端进程模拟出的虚拟网卡也桥接在同一个虚拟网桥上,修改该虚拟网桥的转发规则将本来要发给虚拟机的数据包转发给发送端即可实现对数据包的拦截。

如图2左半部分,上述发送端进行收包-发包循环,具体为:

发送端从其虚拟网卡获取数据包,对数据包进行解析,并根据其源物理地址和目标物理地址确定数据包的来源,若数据包是发送给虚拟机的数据包,即以太网帧的目标mac与分配给虚拟机的mac地址相吻合,则对数据包进行重定向;若数据包是接收端发送的通知数据包,即源mac地址为虚拟机地址,目标地址为发送端虚拟mac地址,则向接收端发送回应数据包,结束循环。

上述对数据包进行重定向,具体为:

根据以太网的数据帧格式,若数据包大小不超过1500个字节(以太网数据帧的最大字节数),加上14个字节的以太网帧头,源mac地址填发送端虚拟网卡的mac地址,目标mac地址填接收端虚拟网卡的mac地址,类型字段(2字节)填99,发送给接收端;

若数据包大小超过1500字节,将该数据包的分成1500字节和后半部分,对两部分分别加上以太网帧头,对第一个部分的数据包类型字段填97,第二个部分的数据包类型字段填98。

上述回应数据包的类型字段填96。

如图2右半部分,上述接收端进行收包-缓存包循环具体为:

接收端从其虚拟网卡获取数据包,对数据包进行解析,首先根据其源物理地址和目标物理地址确定数据包的来源,若数据包是发送端发来的数据包,则按数据包的类型做进一步处理;若数据包是交换机直接转发过来的远程主机发给虚拟机的数据包,则缓存数据包到buffer2。

上述对于发送端发来的数据包,则按数据包的类型做进一步处理,具体为:

查看类型字段,若类型字段是99,直接将该数据包缓存起来到buffer1;

若类型字段是97或者是98,组装成一个数据包缓存起来到buffer1;

若类型字段是96,表明接收端已经收到一个从发送端发来的回应数据包,开始用arp检测数据包检测虚拟机是否能对外响应,若能响应,则发送buffer1和buffer2,否则继续检测。

以下对通知数据包,回应数据包以及arp检测数据包的作用进一步说明。

通知数据包是接收端在迁移结束后发出的,其源mac地址是虚拟机网卡的mac地址(为虚拟机分配的mac地址是配置文件设置的,迁移前后都不变,因此发送端和接收端在初始化时就能知道这个地址),目的mac地址是发送端的虚拟网卡mac地址。通知数据包其实就是接收端“冒充”虚拟机发送给发送端一个报文。其作用有两个:

一是该数据包会经过两台宿主机相连的同一个交换机,告知交换机该虚拟机已经处在另一个端口,促使接下来从远处主机发送给虚拟机的流量从该端口送出,进而到达迁移后的宿主机由接收端保存。

二是标记需要转发的数据流的结束。发送端转发数据包的时候,无法知道什么时候在链路上的数据流会结束。而通知数据包由于在经过交换机时就促使交换机改变了流量端口,在它被原宿主机上的发送端接收的时候,肯定是从交换机到原宿主机这条链路上需要处理的最后一个数据包了。

回应数据包是对通知数据包的回应,其源mac地址是发送端的虚拟网卡地址,目的mac地址是接收端的虚拟网卡地址。该数据包其实就是发送端检测到转发流结束后给接收端发的一个通知,通知接收端buffer1已经不需要再等待缓存其他数据包,即如果buffer1当前的数据包发送完毕,可以直接开始发送buffer2的数据包了。

转发数据包(在本文中又称重定向数据包)、回应数据包的类型99,98,97,96等是对不同类型数据包的区分,只要不是以太网已经定义的类型可以替换成其他数字。

arp检测数据包是迁移后宿主机内部对虚拟机能否响应的检测。虽然通知数据包是在迁移结束后发出的,但是迁移结束和虚拟机能够对外响应中间有一段时间差(环境重新部署,检测正确性等带来的时间损耗)。若在迁移结束但是虚拟机还没能对外响应时就释放buffer1和buffer2的数据包,这些数据包将会被丢弃。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1