在未来网络serval下的广域网中虚拟机在线迁移方法

文档序号:7779791阅读:354来源:国知局
在未来网络serval下的广域网中虚拟机在线迁移方法
【专利摘要】本发明涉及一种在未来网络serval下的广域网中虚拟机在线迁移方法,包括:先在源宿主主机中将虚拟机的迁移数据写入到迁移数据发送进程的标准输入流中;目的主机接收到迁移数据之后,将其写入到迁移数据接收进程的标准输出流中,加载和启动虚拟机;迁移数据接收完毕后,启动一个新的进程不断地给虚拟机发送更新网络状态的消息;在虚拟机更新了网络状态之后,遍历虚拟机中所有的流,更新虚拟机中已经建立的流的网络层地址信息。与现有技术相比,本发明能够实现在广域网下进行虚拟机的在线无缝迁移,并能够使虚拟机自适应新的网络环境,使虚拟机上的应用在虚拟机迁移的过程中保持不断,对未来网络serval的云计算和负载均衡具有重要意义。
【专利说明】在未来网络serval下的广域网中虚拟机在线迁移方法
【技术领域】
[0001]本发明涉及云计算技术和网络通信【技术领域】,尤其是涉及一种在未来网络serval下的广域网中虚拟机在线迁移方法。
【背景技术】
[0002]随着计算机的普及和网络的迅速发展,现有的TCP/IP网络体系结构出现了越来越多的缺点。比如,IP地址作为标志连接的一部分在通信过程中不能变化。为了改变目前的困境,目前有三条思路。一是,完全摒弃TCP/IP网络,构建一个全新的网络体系结构,如美国卡内基梅隆大学正在研发的XIA。二是,修复TCP/IP网络体系结构中出现的问题,如移动IP。三是,介乎前两者之间的,改动TCP/IP网络体系结构,如普林斯顿大学正在研发的serval。
[0003]随着网络技术的快速发展,云计算技术顺应时代要求登上了历史舞台。但是云计算技术必须解决两个问题,一是,保证用户服务等级协议。二是高效合理地进行资源的分配。其中虚拟机在线迁移是云计算技术中进行高效合理地分配资源的很有前景的课题。
[0004]虚拟机的在线迁移目前可以分为局域网中的在线迁移和广域网中的在线迁移。在TCP/IP的网络体系结构中,局域网的虚拟机在线迁移已经被很好地实现。但是,广域网中的虚拟机在线迁移仍然是一个难题。因为当虚拟机迁移到新的网络环境中时,虚拟机无法通过已现有的IP地址进行通信。此时,必须修改虚拟机的IP地址,但是修改了 IP地址之后,虚拟机中所有的TCP连接都会中断。
[0005]然而,对于在新的网络体系中进行虚拟机在线迁移的研究目前还是空白。普林斯顿大学研发的serval通过在TCP/IP的传输层和网络层之间添加一个新的服务访问层SAL (Service Access Layer)构建一个以服务为中心的网络。因为serval中标识连接的不是IP地址和端口号而是流的源ID和目的ID,所以根据这个特点可以保证虚拟机在到达了新的网络中只要流的源ID和目的ID不变,那么连接就不会断。因此,我们可以借此完成虚拟机在广域网中的在线迁移。

【发明内容】

[0006]本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种在未来网络serval下的广域网中虚拟机在线迁移方法。
[0007]本发明的目的可以通过以下技术方案来实现:一种在未来网络serval下的广域网中虚拟机在线迁移方法,其特征在于,包括以下步骤:
[0008]S1:先在源宿主主机中通过QEMU-KVM的exec迁移方式将虚拟机的迁移数据写入到迁移数据发送进程的标准输入流中,再将标准输入流中的迁移数据通过serval的套接字发送到目的主机的迁移数据接收进程中;
[0009]S2:目的主机接收到迁移数据之后,将其写入到迁移数据接收进程的标准输出流中,QEMU-KVM从该标准输出流中读取迁移数据加载和启动虚拟机;[0010] S3:迁移数据接收完毕后,目的主机关闭与源宿主主机之间用于收发迁移数据的连接,并启动一个新的进程不断地给虚拟机发送更新网络状态的消息,虚拟机接收到该消息之后,发送一个确认包给目的主机同时更新自己的网络状态;
[0011 ] S4:在虚拟机更新了网络状态之后,遍历虚拟机中所有的流,更新虚拟机中已经建立的流的网络层地址信息。
[0012]实施步骤S3具体过程如下:
[0013](31)迁移数据接收完毕之后,目的主机关闭与源宿主主机之间用于收发迁移数据的连接,并通知本地的一个发送更新虚拟机网络状态数据包的进程send_changeAddr_msg,该进程收到消息之后返回一个确认信息给迁移数据接收进程,迁移数据接收进程收到这个确认信息之后退出;
[0014](32)进程send_changeAddr_msg用链路层套接字构造一个更新虚拟机网路状态的数据包,该数据包包含虚拟机新的IP地址、掩码以及网关地址的信息,之后,启动定时器每100毫秒给虚拟机发送一次构造的更改网络状态的数据包;
[0015](33)虚拟机迁移到目的主机并且恢复运行之后,接收来自于目的主机的更改网络状态的数据包,同样的,虚拟机用链路层套接字构造一个确认数据包返回给目的主机,同时更新自己的网络地址以及网关地址。
[0016]所述的更改网络状态的数据包的格式为:以太网目的地址+以太网源地址+类型+硬件类型+协议类型+硬件地址长度+协议长度+操作类型+源硬件地址+源IP地址+目的硬件地址+目的IP地址+网络掩码+网关IP地址+可扩展字段。
[0017]所述的数据包格式中,以太网目的地址为6字节,以太网源地址为6字节,类型为2字节,硬件类型为4字节,协议类型为4字节,硬件地址长度为2字节,协议长度为2字节,操作类型为4字节,源硬件地址为6字节,源IP地址为4字节,目的硬件地址为6字节,目的IP地址为4字节,网络掩码为4字节,网关IP地址为4字节,可扩展字段为4字节;其中,类型字段是0x0810,目的主机发送给虚拟机的数据包的协议类型字段是0x0001,虚拟机发送给目的主机的确认数据包的协议类型字段是0x0002。
[0018]实施步骤S4具体过程如下:
[0019](41)遍历虚拟机的流表,查找虚拟机中所有流的源ID ;
[0020](42)根据流的源ID,使用serval中迁移流的功能,将流迁移到拥有了新网络地址的网卡上。
[0021]在虚拟机在线迁移过程中,使用serval的应用程序每100毫秒访问一次虚拟机中的服务,并要求虚拟机返回一个应答包,虚拟机迁移结束之后,验证虚拟机是否能够继续提供服务,并统计虚拟机在迁移过程中未收到应答包的个数,得到serval下虚拟机在线迁移的停机时间。
[0022]与现有技术相比,本发明能够实现在广域网下进行虚拟机的在线无缝迁移,并且能够使虚拟机自适应新的网络环境,使虚拟机上的应用在虚拟机迁移的过程中保持不断,对未来网络serval的云计算和负载均衡具有重要意义。
【专利附图】

【附图说明】
[0023]图1为实施例中测试本发明方法的测试床示意图。【具体实施方式】
[0024]下面结合附图和具体实施例对本发明进行详细说明。
[0025]如图1所示为测试本发明方法的测试床示意图,图中,H0ST_A为源宿主主机,H0ST_B 为目的主机,Service router I 为 H0ST_A 的 serval 下的缺省路由,Servicerouter2为H0ST_B的serval下的缺省路由,TCP/IP router为目前网络中普通的路由器。
[0026]具体实施过程如下:
[0027]步骤(I):在源宿主主机H0ST_A和目的主机H0ST_B上部署serval网络环境,其中,源宿主主机H0ST_A的默认路由设置成Service router I,具体命令为:/serval/src/servd/servd-rip 10.60.1.1 ;目的主机 H0ST_B 的默认路由设置成 Servicerouter2,具体命令为:/serval/src/servd/servd-rip 10.60.5.1 ;
[0028]步骤(2):将Service router I 和 Service router2 分别配置成 serval 下的路由器,命令为:/serval/src/servd/servd-r,并将 Service router I 添加为源宿主主机 H0ST_A的默认路由,将Service router2添加为目的主机H0ST_B的默认路,添加方法同步骤
(I);
[0029]步骤(3):在源宿主主机H0ST_A上启动虚拟机H0ST_VM,启动参数为:
[0030]-m 640-smp 1-drive file = /var/lib/libvirt/images/ubuntu.1mg, if =virtio,format = raw-net nic, vlan = 0,macaddr = 52:54:00:6d:82:f9-net tap,vlan=0,if name = tapO, script = no,其中,/var/lib/libvirt/images/ubuntu.1mg 的大小是4G ;
[0031 ] 步骤(4):在虚拟机H0ST_VM上部署serval网络环境,其中,虚拟机H0ST_VM 的默认路由设置成 Service router I,具体命令为:/serval/src/servd/servd-rip10.60.1.1 ;
[0032]步骤(5):在目的主机H0ST_B上启动虚拟机H0ST_VM在线迁移的接收进程,启动方式为在步骤(3)源宿主主机H0ST_A启动虚拟机的启动参数后增加QEMU-KVM的exec方式接收迁移数据的进程:_incoming/serval/src/test/tcp_server,同时打开进程send_changeAddr_msg ;
[0033]步骤(6):在源宿主主机QEMU的监视器中输入迁移命令,命令为:migrate-b exec:/serval/src/test/tcp_client ;
[0034]步骤(7):在虚拟机H0ST_VM中开启等待接收更新网络状态的进程:get_changAddr_msg ;
[0035]步骤⑶:在虚拟机H0ST_VM中开启用于验证在线性和测量虚拟机停机时间的服务进程 sping_server ;
[0036]步骤(9):在源宿主主机H0ST_A上开启用于验证在线性和测量虚拟机停机时间的客户端进程sping_cIient ;
[0037]步骤(10):迁移结束之后,查看源宿主主机H0ST_A的sping_client是否仍然可以继续运行,以及该进程的丢包个数,得到停机时间。
【权利要求】
1.一种在未来网络serval下的广域网中虚拟机在线迁移方法,其特征在于,包括以下步骤: 51:先在源宿主主机中通过QEMU-KVM的exec迁移方式将虚拟机的迁移数据写入到迁移数据发送进程的标准输入流中,再将标准输入流中的迁移数据通过serval的套接字发送到目的主机的迁移数据接收进程中; 52:目的主机接收到迁移数据之后,将其写入到迁移数据接收进程的标准输出流中,QEMU-KVM从该标准输出流中读取迁移数据加载和启动虚拟机; 53:迁移数据接收完毕后,目的主机关闭与源宿主主机之间用于收发迁移数据的连接,并启动一个新的进程不断地给虚拟机发送更新网络状态的消息,虚拟机接收到该消息之后,发送一个确认包给目的主机同时更新自己的网络状态; 54:在虚拟机更新了网络状态之后,遍历虚拟机中所有的流,更新虚拟机中已经建立的流的网络层地址信息。
2.根据权利要求1所述的一种在未来网络serval下的广域网中虚拟机在线迁移方法,其特征在于,实施步骤S3具体过程如下: (31)迁移数据接收完毕之后,目的主机关闭与源宿主主机之间用于收发迁移数据的连接,并通知本地的一个发送更新虚拟机网络状态数据包的进程send_changeAddr_msg,该进程收到消息之后返网一个确认信息给迁移数据接收进程,迁移数据接收进程收到这个确认信息之后退出; (32)进程send_changeAddr_msg用链路层套接字构造一个更新虚拟机网路状态的数据包,该数据包包含虚拟机新的IP地址、掩码以及网关地址的信息,之后,启动定时器每100毫秒给虚拟机发送一次构造的更改网络状态的数据包; (33)虚拟机迁移到目的主机并且恢复运行之后,接收来自于目的主机的更改网络状态的数据包,同样的,虚拟机用链路层套接字构造一个确认数据包返回给目的主机,同时更新自己的网络地址以及网关地址。
3.根据权利要求2所述的一种在未来网络serval下的广域网中虚拟机在线迁移方法,其特征在于,所述的更改网络状态的数据包的格式为:以太网目的地址+以太网源地址+类型+硬件类型+协议类型+硬件地址长度+协议长度+操作类型+源硬件地址+源IP地址+目的硬件地址+目的IP地址+网络掩码+网关IP地址+可扩展字段。
4.根据权利要求3所述的一种在未来网络serval下的广域网中虚拟机在线迁移方法,其特征在于,所述的数据包格式中,以太网目的地址为6字节,以太网源地址为6字节,类型为2字节,硬件类型为4字节,协议类型为4字节,硬件地址长度为2字节,协议长度为2字节,操作类型为4字节,源硬件地址为6字节,源IP地址为4字节,目的硬件地址为6字节,目的IP地址为4字节,网络掩码为4字节,网关IP地址为4字节,可扩展字段为4字节;其中,类型字段是0x0810,目的主机发送给虚拟机的数据包的协议类型字段是0x0001,虚拟机发送给目的主机的确认数据包的协议类型字段是0x0002。
5.权利要求1所述的一种在未来网络serval下的广域网中虚拟机在线迁移方法,其特征在于,实施步骤S4具体过程如下: (41)遍历虚拟机的流表,查找虚拟机中所有流的源ID; (42)根据流的源ID,使用serval中迁移流的功能,将流迁移到拥有了新网络地址的网卡上。
6.权利要求1所述的一种在未来网络serval下的广域网中虚拟机在线迁移方法,其特征在于,在虚拟机在线迁移过程中,使用serval的应用程序每100毫秒访问一次虚拟机中的服务,并要求虚拟机返回一个应答包,虚拟机迁移结束之后,验证虚拟机是否能够继续提供服务,并统计虚拟机在迁移过程中未收到应答包的个数,得到serval下虚拟机在线迁移的停机时间。·
【文档编号】H04L29/08GK103716378SQ201310669375
【公开日】2014年4月9日 申请日期:2013年12月10日 优先权日:2013年12月10日
【发明者】张大陆, 周德江, 金翔, 王建鹏 申请人:同济大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1