CN100543684C - 一种实现透明进程迁移的装置和方法 - Google Patents
一种实现透明进程迁移的装置和方法 Download PDFInfo
- Publication number
- CN100543684C CN100543684C CNB2007100772007A CN200710077200A CN100543684C CN 100543684 C CN100543684 C CN 100543684C CN B2007100772007 A CNB2007100772007 A CN B2007100772007A CN 200710077200 A CN200710077200 A CN 200710077200A CN 100543684 C CN100543684 C CN 100543684C
- Authority
- CN
- China
- Prior art keywords
- source node
- node
- communication
- migration
- originating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种实现透明进程迁移的装置和方法,充分利用了操作系统具有用户空间和内核空间的特点,采用双层软件功能实现透明的进程转移,提高了迁移的效率,降低了系统的开销。此外本发明还解决了现有算法过分依赖网络协议和移植性差等问题,具有直接高效,应用范围广等特点。
Description
技术领域
本发明涉及计算机领域中网络操作系统进程迁移技术,尤其涉及具有网络连接透明性的高效进程迁移装置及方法。
背景技术
从集群计算到Internet计算,再到今天的网格计算,当前的计算技术已经更多地集中在协作、数据共享、周期挪用,以及其它在动态和地理上分布的组织中的交互模式。在这种趋势下,进程迁移技术由于能实现系统容错和动态维护;支持负载均衡和共享;优化本地资源利用率,已成为现代通信和计算系统中越来越不可或缺的机制。
进程迁移是指当进程运行时,在源节点与目标节点之间转移进程的行为。进程迁移的主要工作可以分为三步:(1)在源节点提取进程状态;(2)将进程状态转移到目标节点;(3)在目标节点根据进程状态再生该进程,并继续执行进程。图1为进程迁移技术的原理示意图,也是本发明的理论基础。
虽然进程迁移技术的重要性已被普遍认识,但由于其实现的复杂性、对网络操作系统的依赖性,以及下级互联网络通信带宽限制阻碍了进程迁移的广泛使用,尤其是透明的进程迁移实现问题更加复杂。一般来说,所有计算机系统都需要某种层次上的通信和同步,进程间的网络连接不但直接影响了迁移的透明性,对进程迁移也带来了限制。所以,进程迁移只有对网络连接的迁移提供支持,才能达到保持进程迁移前网络连接的目的,实现迁移进程完全透明性。
目前,关于透明进程迁移方面的研究还很少,从公开的资料来看,实现进程透明迁移的装置及方法主要有以下几种:(1)通过在操作系统用户态提供新的高层网络接口装置或修改库的实现来支持网络连接的透明迁移。然而,由于在用户态无法获得内核中关于网络连接的所有状态,因此存在或多或少的迁移限制;同时,迁移进程需要在用户态和内核态不断切换,造成巨大的系统开销。(2)为每个进程都设置一个唯一的Home(代理)节点装置,进程迁移后,在Home节点上保留一个代理进程,负责转发与位置相关的系统调用,恢复进程原有网络环境。由于进程发送和接收网络数据都要通过代理进程转发,所以效率较低,且依赖于Home节点。(3)通过扩展相关网络协议或提出新的网络协议来实现透明进程迁移,这种方法需要对协议及其实现有细致的了解,非常复杂,而且不稳定,无法适应动态的网络环境。
发明内容
本发明解决的技术问题是为了克服目前在实现透明进程迁移方法中存在的弊端,解决由于网络连接所导致的迁移限制问题,提供一种实现透明进程迁移的装置和方法。
本发明提出的实现透明进程迁移的装置,包括:源节点的系统主控模块和通信控制模块,目标节点的系统主控模块和通信控制模块;源节点上的系统主控模块,用于停止运行需要迁移的源进程,抑止该源进程向外发送数据,并向目标节点发出迁移进程请求;目标节点上的系统主控模块,用于接收源节点发来的迁移进程请求,新建一个空进程作为目标进程准备接替源进程,并向源节点发送同意应答;源节点上的通信控制模块,用于在源节点收到同意应答后,将源进程的网络连接状态发送给目标节点;目标节点上的通信控制模块,用于将收到的网络连接状态在目标进程上恢复,并向源节点上的通信控制模块发送地址改变消息,告知新的目的地址;源节点上的通信控制模块在收到地址改变消息后,找到匹配的连接控制结构,修改该连接的目的地址,目标进程取代源进程,从迁移前的指令处继续运行,重新向外发送数据。
本发明提出的实现透明进程迁移的方法,包括以下处理过程:
1)源节点上的系统主控进程停止运行需要迁移的源进程,抑止该源进程向外发送数据,并向目标节点发出迁移进程请求;
2)目标节点上的系统主控进程收到源节点发来的请求后,判断是否接受;如果同意接受,则新建一个空进程作为目标进程准备接替源进程,并向源节点发送同意应答;
3)源节点收到目标节点的同意应答后,源节点的系统主控进程和通信控制进程进行进程状态转移和网络连接转移;
4)目标进程恢复完成后,取代源进程,从迁移前的指令处继续运行,重新向外发送数据,并发送确认消息给源节点;
5)源节点收到确认消息后,杀死源进程,进程迁移结束。
优选的,所述步骤3)中进行进程状态转移的同时或者之后进行底层网络连接转移。
优选的,所述步骤3)中的底层网络连接转移包括以下处理过程:
31)源节点上通信控制进程缓存所有其它进程发给源进程的数据包,并提取源进程的网络连接状态,发送给目标节点上的目标进程;
32)目标进程根据收到的网络连接状态恢复原有的网络环境,之后向源节点上通信控制进程返回带有新目的地址的确认消息,并向其通信的对端进程发送地址改变消息,告知新的目的地址;
33)源节点上通信控制进程收到确认后,提取缓存中其它进程发给源进程的数据包,修改目的地址,转发给目标进程进行处理;
34)对端进程收到目标进程发来的地址改变消息后,找到匹配的连接控制结构,修改该连接的目的地址,并清除缓冲的路由信息,然后向目标进程发送响应消息;
35)目标进程收到对端进程的响应消息,网络连接状态转移结束。
优选的,所述步骤3)中的进程状态转移包括源进程的进程控制块、进程执行状态、进程虚地址空间、物理页面、浮点处理器状态的转移。
本发明的进程迁移处理方式同现有的其它进程迁移方式相比,本发明充分利用了操作系统具有用户空间和内核空间的特点,采用双层软件功能来实现了透明的进程转移,解决了现有方法普遍存在的效率低,系统开销大等缺陷。此外,本发明在设计和实现时,尽量考虑到通用性和网络协议无关性,解决了现有算法过分依赖网络协议和移植性差等问题,具有直接高效,应用范围广等特点。
附图说明
图1为进程迁移技术的原理示意图;
图2为本发明提出的实现透明进程迁移的装置体系结构图;
图3为Linux操作系统网络分层结构图;
图4为本发明提出的进程迁移方法在Linux系统中实现的流程图;
图5为按本发明方法在Linux系统中实现网络连接转移的流程图。
具体实施方式
以下将结合Linux应用对本发明的具体实施方式进行详细阐述。需要指出的是,本发明不局限于任何具体的硬件平台和操作系统,可以方便地应用到其它环境中,具有较广泛的通用性。
进程迁移是指当进程运行时,在源节点与目标节点之间转移进程的行为。由于在这个过程中转移的是活跃(Active)进程,因此又称为抢占式(Preemptive)进程迁移。一般来说,进程在迁移之前必须停止,并使进程的状态能够被获取并转移到目标节点。在目标节点上,迁移进程的执行信息被重建并开始继续执行。
通用操作系统具有内核空间和用户空间的特征,一个应用进程往往由用户级上下文和系统级上下文两部分所组成。用户级上下文包含着程序代码、栈、数据、进程的寄存器和内存映像,是对进程在用户态运行的封装。而系统级上下文则是对进程在内核态运行的封装,包括对进程所使用资源的描述和系统代码运行时的核心栈等。根据以上特点,本发明从双层软件体系结构的角度设计了进程迁移装置,所述装置包括操作系统中的系统主控模块和通信控制模块,装置的体系结构如图2所示。系统主控模块以进程的形式运行在操作系统的用户态,负责控制迁移进程的状态切换,控制进程的迁移顺序和进程状态数据同步;通信控制模块以进程的形式运行在操作系统的内核空间,负责底层网络连接切换和通信链路上缓存的数据处理。在进程迁移的过程中,系统主控模块与通信控制模块相互进行协调,按照分工分别完成进程的状态转移和网络连接转移。同时,为了缩短故障转移延时,进程状态和网络连接的转移可以并发进行,也可以采用先进行进程状态转移再进行网络连接的转移。
Linux操作系统的网络分层结构如图3所示。这个层次模型可以进一步抽象为三个层次:套接字层、网络协议层和网络设备层。在具体实现中,每个层次被抽象为一个对象,它们是:
■套接字(Socket)。一个套接字就是网络中的一个连接,它向用户提供了基于文件I/O(读,写等)的网络数据传输。Socket通过网络协议实现自身,它与网络协议密切相关,体现了网络和文件系统、进程管理之间的关系,它是网络传输的入口。
■网络协议(Protocol)。网络协议是一种网络语言,它规定了通信双方交换信息的一种规范,是网络传输的基础。
■设备接口(Device and Interface)。网络设备接口控制着网络数据由软件到硬件和由硬件到软件的过程,体现了网络和设备的关系,是网络传输的桥梁。
可以说大多数计算环境都是通过socket套接字接口,使用TCP(Transmission Control Protocol,传输层控制协议)和UDP(UserDatagram Protocol,用户数据报协议)作为底层的通信机制,而TCP是一种面向连接的网络协议,顺利地对TCP网络连接进行转移能够有效地解决进程迁移中透明性的问题,提高系统稳定性。本发明实现了基于TCP网络连接的进程透明迁移的方法,该实现方法主要由以下步骤组成,如图4所示。
首先定义应用进程的网络状态四元组:N<节点,进程,本地IP,本地端口>。节点A上进程A1的网络状态N1<A,A1,IP_A,Port_A>与节点B上进程B1的网络状态N2<B,B1,IP_B,Port_B>已经建立了一条TCP连接L1(IP_A,Port_A,IP_B,Port_B)并且正常通信。当节点B决定迁移进程B1到节点C上时。
步骤401:节点B上的系统主控进程首先停止需要迁移的进程B1的运行,标志B1已处于准备迁移(PRE_MIG)态,抑止该进程继续发送数据。并根据所获得的节点信息,决定迁移进程B1到节点C上。于是,向C的发送迁移请求。
步骤402:节点C上的系统主控模块接收到节点B发来的迁移请求,会首先判断是否接受该请求,判断的依据可以根据系统负载情况。如果同意接受迁移请求,则创建(fork)一个空进程C1处理迁移请求,准备接替进程B1,同时,向节点B发出同意应答。
步骤403:B收到同意应答后,系统主控模块开始获取进程B1的进程状态,依次提取进程控制块、进程执行状态、进程虚地址空间、物理页面、浮点处理器状态等状态并发送到节点C,在C1上进行恢复。同时通知内核态的通信控制进程进行网络连接状态转移。
步骤404:通信控制进程收到转移通知后,提取B1网络连接的状态并在C1上恢复。
步骤405:C1恢复完成后,将取代B1,从B1迁移前的指令处继续运行,重新向外发送数据。同时发送确认消息给源节点。
步骤406:节点B收到确认消息后,通知系统主控进程杀死源进程B1,进程迁移结束。
图5为按本发明方法在Linux系统中实现网络连接转移的流程图,其具体步骤如下所示:
步骤501:节点B上通信控制进程收到迁移通知后,缓存进程A1发给B1的所有数据包,并提取B1网络连接状态,发送给目标节点上的目标进程;打包并发送MIG_SOCKET请求给C1。
步骤502:C1通过sock_create()重新分配一个socket套接字,解包,根据包内容恢复该连接的状态。如果该连接的端口已被占用,将得到一个新的端口。C1向B1发送MIG_SOCKET_REPLY消息,表示该连接一端的状态已被恢复,并且返回新的地址和端口(IP_C,Port_C>。
步骤503:C1向该连接的peer所在的节点A的通信控制进程发送ADDR_CHANGE消息(IP_A,Port_A,IP_B,Port_B,IP_C,Port_C),告知它由(IP_A,Port_A,IP_B,Port_B)标识的网络连接的另一端地址已变为(IP_C,Port_C)。
步骤504:节点B上通信控制进程收到确认后,提取缓存中进程A1发给B1的数据包,利用Linux的内核函数ip_rcv_finish()调用另一个内核函数ip_route_input(),根据接收到的以太网数据包中源地址和目的地址来获得路由信息,改写目的IP地址,将数据包转发给进程C1进行处理。
步骤505:对端节点A收到ADDR_CHANGE消息后,通信控制进程将根据(IP_A,Port_A,IP_B,Port_B)找到所匹配连接的sock控制结构,然后把该连接的目的地址和端口分别修改为IP_C和Port_C,并清除缓冲的路由信息。这样,在下次发送数据时,内核将会查找路由表,重建路由信息。然后发送ADDR_CHANGE_REPLY响应消息。
步骤506:当目标进程C1收到ADDR_CHANGE_REPLY响应消息后,网络连接转移完毕。
进程迁移是现代计算系统中重要机制之一,本发明基于双层软件功能角度提出一种进程迁移装置及方法,不仅保证了进程迁移的透明性,还大大降低了系统运行开销,取得了良好的应用效果。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (5)
1.一种实现透明进程迁移的装置,其特征在于,所述装置包括:源节点的系统主控模块和通信控制模块,目标节点的系统主控模块和通信控制模块;
源节点上的系统主控模块,用于停止运行需要迁移的源进程,抑止该源进程向外发送数据,并向目标节点发出迁移进程请求;
目标节点上的系统主控模块,用于接收源节点发来的迁移进程请求,新建一个空进程作为目标进程准备接替源进程,并向源节点发送同意应答;
源节点上的通信控制模块,用于在源节点收到同意应答后,将源进程的网络连接状态发送给目标节点;
目标节点上的通信控制模块,用于将收到的网络连接状态在目标进程上恢复,并向源节点上的通信控制模块发送地址改变消息,告知新的目的地址;
源节点上的通信控制模块在收到地址改变消息后,找到匹配的连接控制结构,修改该连接的目的地址,目标进程取代源进程,从迁移前的指令处继续运行,重新向外发送数据。
2.一种实现透明进程迁移的方法,其特征在于,所述方法包括以下处理过程:
1)源节点上的系统主控进程停止运行需要迁移的源进程,抑止该源进程向外发送数据,并向目标节点发出迁移进程请求;
2)目标节点上的系统主控进程收到源节点发来的请求后,判断是否接受;如果同意接受,则新建一个空进程作为目标进程准备接替源进程,并向源节点发送同意应答;
3)源节点收到目标节点的同意应答后,源节点的系统主控进程和通信控制进程进行进程状态转移和底层网络连接转移,
其中,底层网络连接转移过程为:源节点上通信控制进程将源进程的网络连接状态发送给目标节点;目标节点上通信控制进程将收到的网络连接状态在目标进程上恢复,并向对端节点通信控制进程发送地址改变消息,告知新的目的地址;对端节点通信控制进程收到地址改变消息后,找到匹配的连接控制结构,修改该连接的目的地址;
4)目标进程恢复完成后,取代源进程,从迁移前的指令处继续运行,重新向外发送数据,并发送确认消息给源节点;
5)源节点收到确认消息后,杀死源进程,进程迁移结束。
3.根据权利要求2所述的实现透明进程迁移的方法,其特征在于,所述步骤3)中进行进程状态转移的同时或者之后进行底层网络连接转移。
4.根据权利要求2或3所述的实现透明进程迁移的方法,其特征在于,所述步骤3)中的底层网络连接转移具体包括以下处理过程:
31)源节点上通信控制进程缓存所有其它进程发给源进程的数据包,并提取源进程的网络连接状态,发送给目标节点上的目标进程;
32)目标进程根据收到的网络连接状态恢复原有的网络环境,之后向源节点上通信控制进程返回带有新目的地址的确认消息,并向其通信的对端进程发送地址改变消息,告知新的目的地址;
33)源节点上通信控制进程收到确认后,提取缓存中其它进程发给源进程的数据包,修改目的地址,转发给目标进程进行处理;
34)对端进程收到目标进程发来的地址改变消息后,找到匹配的连接控制结构,修改该连接的目的地址,并清除缓冲的路由信息,然后向目标进程发送响应消息;
35)目标进程收到对端进程的响应消息,网络连接状态转移结束。
5.根据权利要求2或3所述的实现透明进程迁移的方法,其特征在于,所述步骤3)中的进程状态转移包括源进程的进程控制块、进程执行状态、进程虚地址空间、物理页面、浮点处理器状态的转移。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100772007A CN100543684C (zh) | 2007-09-18 | 2007-09-18 | 一种实现透明进程迁移的装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100772007A CN100543684C (zh) | 2007-09-18 | 2007-09-18 | 一种实现透明进程迁移的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101122868A CN101122868A (zh) | 2008-02-13 |
CN100543684C true CN100543684C (zh) | 2009-09-23 |
Family
ID=39085211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100772007A Active CN100543684C (zh) | 2007-09-18 | 2007-09-18 | 一种实现透明进程迁移的装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100543684C (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101252527B (zh) * | 2008-04-09 | 2011-01-26 | 腾讯科技(深圳)有限公司 | 一种网络中转的方法、网络中转服务器和内核管理模块 |
KR101555266B1 (ko) * | 2011-09-01 | 2015-09-23 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 자원 이주를 위한 방법, 장치 및 시스템 |
CN105930218A (zh) * | 2016-04-18 | 2016-09-07 | 深圳市万普拉斯科技有限公司 | 运算资源频率调整方法及系统 |
CN106776018B (zh) * | 2016-12-01 | 2020-09-01 | 三星(中国)半导体有限公司 | 用于分布式系统的主节点和从节点的并行处理方法和设备 |
CN107832145B (zh) * | 2017-10-24 | 2021-08-06 | 中安云科科技发展(山东)有限公司 | 一种基于虚拟机的系统资源释放方法 |
CN108762992B (zh) * | 2018-04-20 | 2021-10-08 | 平安科技(深圳)有限公司 | 主备切换方法、装置、计算机设备和存储介质 |
CN110858851B (zh) * | 2018-08-24 | 2022-06-14 | 阿里巴巴集团控股有限公司 | 直播业务中数据连接重启方法、数据处理方法和装置 |
CN112363971A (zh) * | 2020-11-10 | 2021-02-12 | 王志平 | 一种超级计算机架构实现方法 |
-
2007
- 2007-09-18 CN CNB2007100772007A patent/CN100543684C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101122868A (zh) | 2008-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100543684C (zh) | 一种实现透明进程迁移的装置和方法 | |
CN102457439B (zh) | 一种云计算系统的虚拟交换系统及其虚拟交换方法 | |
CN108768817B (zh) | 一种虚拟化网络组网系统、数据包发送方法 | |
US8073979B2 (en) | Enhanced network system through the combination of networking objects | |
CN104410681B (zh) | 基于远程直接内存访问的虚拟机动态迁移优化方法 | |
JP4658606B2 (ja) | Ipネットワーク接続のための資源管理 | |
CN101442555B (zh) | 面向hla的仿真资源代理服务系统 | |
US20170359198A1 (en) | Non-transitory computer-readable storage medium, communication control method, and communication control device | |
CN103516802A (zh) | 一种实现跨异构虚拟交换机无缝迁移的方法和装置 | |
CN102339234A (zh) | 一种协议栈运行装置和方法 | |
CN111736958A (zh) | 虚拟机迁移方法、系统、计算机设备及存储介质 | |
CN106095601A (zh) | 一种多进程并发解算差分服务器系统及其实现方法 | |
US11902184B2 (en) | Methods and systems for providing a virtualized NVMe over fabric service | |
CN103220183A (zh) | 一种基于双主机热备份的Hadoop高可用性系统实现方法 | |
US11895027B2 (en) | Methods and systems for service distribution using data path state replication and intermediate device mapping | |
US7428730B2 (en) | Software development environment | |
CN102263698A (zh) | 虚拟通道的建立方法、数据传输的方法及线卡 | |
CN105634923A (zh) | 基于sdn控制器的以太网广播优化处理方法 | |
CN103412739A (zh) | 一种基于地震数据处理的数据传输方法及系统 | |
CN105450631A (zh) | 一种uIP协议栈在DSP上的移植方法 | |
CN101426027B (zh) | 面向分布式虚拟机监控器的底层通信方法 | |
CN101335610A (zh) | 一种高端以太网交换机中的arp同步方法 | |
CN104793986B (zh) | 一种节点间共享内存的虚拟机迁移方法 | |
US20030133449A1 (en) | Fast path routing in a large-scale virtual server computing environment | |
KR100579130B1 (ko) | 라우터 이중화 실현을 위한 라우팅 엔트리 정보 이중화 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |