一种用于应用层组播的数据恢复方法

文档序号:7595396阅读:118来源:国知局
专利名称:一种用于应用层组播的数据恢复方法
技术领域
本发明涉及数据通信技术领域,特别是一种用于应用层组播的数据恢复方法。
背景技术
在下一代互联网上提供群组通信服务是网络发展的必然趋势,这方面的应用包括视频/音频会议,远程教育,网络电视,网络游戏等等。最先提出的IP(Internet Protocol)组播技术虽然能够降低数据发送源的负荷,有效利用网络资源,但由于需要路由器为每个组播地址保存状态,没有良好的传输控制机制而无法在网络中大规模配置。应用层组播利用终端主机来支持群组通信,把组播成员的管理,组播数据的复制等相关功能都放在应用层或终端主机来完成。已有路由器不用做任何变动,而且可以利用现有的TCP(Transmission Control Protocol)或UDP(User DatagramProtocol)传输数据,便于部署与实施,因此很有可能成为未来群组通信技术的标准。
然而应用层组播也有一些问题有待解决,其中最大的问题在于应用层组播拓扑变化非常频繁,任何组成员加入或离开组播组都会导致拓扑改变,从而影响到组播数据的传输,特别当组成员因为系统崩溃而脱离组播组时,会导致其它成员丢失组播数据,因此如何向组成员提供恢复数据就成为应用层组播中一个亟待解决的问题。目前已提出的应用层组播协议没有能很好的解决这方面的问题。

发明内容
本发明的目的在于提供一种用于应用层组播的数据恢复方法。步骤包括通过在数据发送期间,为每一个组成员寻找可能的数据恢复点,对找到的可能的数据恢复点进行鉴别并选择合适的数据恢复点,并在出现数据丢失的情况下,利用数据恢复点向丢失数据的组成员传送丢失数据,达到在网络中可靠传输数据的目的。
为每个组成员寻找可能的数据恢复点,是一种在发送树中随机游走,每个节点产生一对随机数u和v,首先向靠近数据源的方向走u跳,随后再向远离数据源的方向向下走v跳,向下游走的时候可以采取两种策略,从若干个孩子中随机选择一个作为下一跳节点,或者指定数据转发速度最慢的孩子作为下一跳节点。
对找到的节点进行鉴别并选择合适的数据恢复点,利用了全局唯一的应用层分组序号,根据请求节点与找到的节点接收数据的序号差来进行判断,只有当序号差大于零时,找到的节点才具备作为恢复节点的资格,而从若干个可作为恢复点的备选节点中选择出最终恢复点的方法,可根据不同业务的要求选取更合适的恢复点,对于文件传输业务,选择序号差最大的点,对于流媒体传输选择序号差最小的点。
在出现数据丢失的情况下利用数据恢复点向丢失数据的组成员传送丢失数据,可采用两种不同的数据恢复策略,如果需要减少网络中出现的冗余数据,则可以只让失效节点的孩子节点进行数据恢复,并由这些节点向其他受影响的节点传输恢复数据,而如果要加快恢复数据的速度并提高恢复数据本发明建立在计算机组成的网络,是通过计算机网络,利用终端主机或应用层进行点对多点或多点对多点的群组通信的过程,发明中提到的组成员、节点都是计算机,发明是由这些计算机相互通信而完成的。发明提供一种用于应用层组播的数据恢复方法。目的是为了解决在应用层组播数据发送期间,当某些组成员失效而导致相关的其它组成员丢失数据的问题。它通过在数据传输期间,判断每个组成员在组内接收数据的进度,为每个组成员寻找适合的数据恢复点,并在感知到数据丢失后,迅速向数据恢复点发出请求,由数据恢复点提供恢复数据,从而解决应用层组播中出现的数据丢失问题。
本发明通过在数据发送树中为每个成员寻找潜在节点作为数据恢复点,并在出现数据丢失的情况下利用恢复点向组成员提供恢复数据而做到避免数据丢失,提供传输可靠性的目的。本发明的特点是,每个组成员独立寻找潜在的数据恢复点,数据恢复点的能力通过应用层分组序号加以确认以增强寻找到数据恢复点的可能性,可根据不同应用的需求选择不同的数据恢复点,在出现数据丢失后,组成员能够独立从不同的恢复点得到恢复数据,最终达到有效恢复丢失数据的目的。
技术方案为了进一步阐述本发明的创新之处,首先介绍与本发明有关的基本概念。参与群组通信的成员需要利用应用层组播协议构造一个数据发送树以进行数据发送,数据源为根节点。每个发送树上的节点(组成员)有一个父节点和零到多个孩子节点。没有孩子节点的节点称作叶节点。每个节点从父节点那里接收数据源发送的数据并把数据随后转发给孩子节点。在图1(a、b、c)中,pm是m的父节点,pn是n的父节点,而m和n分别是pm和pn的孩子节点,m和n都是叶节点。树中的节点按照它在发明中角色的不同,可做如下划分。能够向其他节点提供丢失数据的节点称作恢复节点,恢复节点需要具有空余度数。寻找恢复节点的节点称作请求节点,寻找过程中遇到的节点为中间节点,而有可能当作恢复节点的节点称作备选节点。在图1(a、b、c)中,m是请求节点,pm和pn都是中间节点,o和n是备选节点,n是恢复节点。
数据源发送的分组具有应用层分组序号,能够在整个组内唯一标识一个分组。可以根据节点正在接收分组的应用层序号判断节点接收数据的进度(快慢)。
具体方案1)利用现有的应用层组播协议,在需要进行群组通信的终端主机中构造数据发送树;2)确定需要发送的寻找数据恢复点的控制包的格式,以及对数据恢复点进行认证和选择的控制包的格式;3)修改应用层组播协议,使每个节点能够发送并处理寻找数据恢复点的控制包以及对数据恢复点进行认证和选择的控制包;
4)修改应用层组播协议,使每个节点在检测到分组丢失后,可以向数据恢复点发送请求,并接收恢复数据。
本发明的具体方法步骤如下作为一个请求节点需要执行的步骤为1)请求节点m生成格式为类型1的控制包,将此控制包发送给父节点;类型1的控制包的包含一对随机数(u,v);u表示从该节点顺着发送树向上(靠近数据源)需要经过的跳数,而v表示在经过u步回溯后,开始向下(远离数据源)经过的跳数。
2)m收到类型2的控制包后,发送类型为3的控制包,类型3控制包的特点是携带当前时刻m收到的来自数据源的应用层分组序号seq1;3)m收到来自不同节点反馈的类型4的控制包后从中选择最适合的节点作为m的数据恢复节点;有两种选择恢复节点的策略,第一,选择序号差seq1-seq2最大的节点作为恢复节点,这样选择的恢复节点向m提供恢复数据的能力最强,适合于文件传输;第二,选择序号差seq1-seq2最小的节点最为恢复节点,这样选择的恢复节点提供恢复数据的时延最短,适合于流媒体传输;4)选定n作为恢复节点,m向n发送心跳消息以确保n在发送树中并且有能力作为m的恢复节点;5)如果m没有从任何节点收到类型4的控制包,或者在一段时间内没有收到恢复节点n发送的心跳消息,m从步骤2重新开始;6)当m感知到数据丢失后,启动数据恢复机制;数据恢复机制有两种策略,如果期望减少网络中出现的冗余数据,那么执行步骤7,如果期望有更多的节点得到恢复数据,那么执行步骤8;7)节点m检查它的父结点是否正常工作,如果它的父结点正常工作,则m不启动数据恢复机制。整个发送树中只有崩溃节点的孩子节点执行数据恢复机制,它们向各自的恢复节点发送恢复请求,请求节点收到恢复数据后,向孩子节点转发恢复数据;8)每个感知到数据丢失的节点分别启动数据恢复机制,向各自的恢复节点请求数据。请求节点收到恢复数据后,向孩子节点转发恢复数据,如果某个节点从它的父结点收到重复的恢复数据,则向父节点发送抑制消息,父节点收到抑制消息后,不再向子节点转发恢复数据。
作为一个中间节点需要执行的步骤为1)利用应用层分组序号追踪它的孩子节点接收数据的进度,记录接收数据最慢的孩子节点;2)收到类型1的控制包后,进行如下判断如果u>0,并且本节点不是根节点,那么u减一,把控制包转发给父节点;如果u=0或者本节点已经是根节点,那么u=0,把控制包发送给孩子节点;如果u=0,v>0,并且本节点不是叶节点,那么v减一,把控制包转发给孩子节点;如果u=0,v=0或者本节点已经是叶子节点,那么v等于0,控制包转发工作结束,到达节点n。向孩子节点转发控制包有两种策略,一种策略是随机方式,即从所有孩子节点中随机选择一个,作为控制包转发的下一跳节点,另外一种方式则是把控制包转发给步骤1中记录的最慢的孩子节点;作为一个备选节点需要执行的步骤为1)备选节点检查它是否具备作为数据恢复点的必要条件,即它是否有空余度数以连接新的节点。如果没有空余度数,那么节点不再作任何工作,如果有,节点需要向m发送格式为类型2的控制包,类型2的控制包包含备选节点的地址;2)备选节点收到类型3的控制包后,比较它从数据源收到的分组序号seq2与seq1的关系,如果seq2<seq1,那么备选节点向m发送类型为4的控制包,否则备选节点不做任何事,类型4控制包包含分组序号差seq1-seq2;作为一个恢复节点需要执行的步骤为1)向请求节点发送心跳消息;2)收到请求节点的数据恢复请求后,向请求节点发送恢复数据;本发明具有以下几个优点首先极大的减轻了当网络中某个组成员崩溃,而导致的后代组成员丢失数据的问题。其次,数据恢复的任务由发送树中众多节点承担,避免了所有丢失数据的组成员一起向数据源请求恢复数据,造成数据源负荷太大且网络拥塞的问题,第三丢失数据的组成员能够独立从不同的恢复节点得到恢复数据,从而解决了丢失数据相关性问题,加快了丢失数据恢复的速度。最后,算法采用不同的数据恢复策略,可满足不同应用在数据恢复方面的不同要求。
本发明涉及到利用终端主机或应用层提供组播数据传输服务,是一种提高应用层组播数据传输可靠性的方法。本发明适合在利用应用层或终端主机进行组播数据传输服务的应用中实现。


图1示意节点m寻找恢复点n并在丢失数据的情况下进行数据恢复的过程图。
图1a示意发送树中的节点m,发送随机游走控制包的过程图。
图1b示意节点m利用应用层分组序号对节点n和节点o进行资格认证的过程图。
图1c示意节点m的父结点失效后,m利用n进行数据恢复的过程图。
图2示意了发明中不同角色的节点需要执行的步骤。
具体实施例方式
图1示意发送树中的节点m,利用本发明中的方法进行恢复点寻找以及数据恢复的全过程1a表示节点m利用随机游走策略寻找可能的恢复节点n的过程,节点m发送随机游走控制包(u=2,v=2),到达节点o,发送随机游走控制包(u=2,v=3),到达节点n。
图1b表示节点m利用应用层分组序号对节点o和节点n进行资格认证的过程,即节点m确认哪个节点能够作为数据恢复点,最终选择的数据恢复点为n。
图1c表示节点m的父节点失效后,m利用n进行数据恢复的过程。
图2说明了发明中不同角色的节点,请求节点,中间节点,被选节点,恢复节点的工作流程。
本发明是一种提高应用层组播数据传输可靠性的方法。本发明通过在发送树中为每个成员寻找潜在节点作为数据恢复点,并在出现数据丢失的情况下利用恢复点向组成员提供恢复数据而做到避免数据丢失,提高传输可靠性的目的。本发明适合在利用应用层或终端主机进行组播数据传输服务的应用中实现。
权利要求
1.一种对采用终端主机进行群组通信的业务进行数据恢复的方法,步骤包括通过在数据发送期间,为每一个组成员寻找可能的数据恢复点,对找到的可能的数据恢复点进行鉴别并选择合适的数据恢复点,并在出现数据丢失的情况下,利用数据恢复点向丢失数据的组成员传送丢失数据,达到在网络中可靠传输数据的目的。
2.根据权利要求1所述的对采用终端主机进行群组通信的业务进行数据恢复的方法,其特征在于,为每个组成员寻找可能的数据恢复点,是一种在发送树中随机游走的方式,每个节点产生一对随机数u和v,首先向靠近数据源的方向走u跳,随后再向远离数据源的方向向下走v跳,向下游走的时候可以采取两种策略,从若干个孩子中随机选择一个作为下一跳节点,或者指定数据转发速度最慢的孩子作为下一跳节点。
3.根据权利要求1所述的对采用终端主机进行群组通信的业务进行数据恢复的方法,其特征在于,对找到的节点进行鉴别并选择合适的数据恢复点,利用了全局唯一的应用层分组序号,根据请求节点与找到的节点接收数据的序号差来进行判断,只有当序号差大于零时,找到的节点才具备作为恢复节点的资格,而从若干个可作为恢复点的备选节点中选择出最终恢复点的方法,可根据不同业务的要求选取更合适的恢复点,对于文件传输业务,选择序号差最大的点,对于流媒体传输选择序号差最小的点。
4.根据权利要求1所述的对采用终端主机进行群组通信的业务进行数据恢复的方法,其特征在于,在出现数据丢失的情况下利用数据恢复点向丢失数据的组成员传送丢失数据,可采用两种不同的数据恢复策略,如果需要减少网络中出现的冗余数据,则可以只让失效节点的孩子节点进行数据恢复,并由这些节点向其他受影响的节点传输恢复数据,而如果要加快恢复数据的速度并提高恢复数据的概率,则可以让每个受影响的节点独立进行数据恢复。
5.根据权利要求1所述的对采用终端主机进行群组通信的业务进行数据恢复的方法,其步骤如下1)利用现有的应用层组播协议,在需要进行群组通信的终端主机中构造数据发送树;2)确定需要发送的寻找数据恢复点的控制包的格式,以及对数据恢复点进行认证和选择的控制包的格式;3)修改应用层组播协议,使每个节点能够发送并处理寻找数据恢复点的控制包以及对数据恢复点进行认证和选择的控制包;4)修改应用层组播协议,使每个节点在检测到分组丢失后,可以向数据恢复点发送请求,并接收恢复数据。
6.根据权利要求1所述的对采用终端主机进行群组通信的业务进行数据恢复的方法,作为一个请求节点需要执行的步骤为1)请求节点m生成格式为类型1的控制包,将此控制包发送给父节点;类型1的控制包的包含一对随机数(u,v);2)m收到类型2的控制包后,发送类型为3的控制包,类型3控制包的特点是携带当前时刻m收到的来自数据源的应用层分组序号seq1;3)m收到来自不同节点反馈的类型4的控制包后从中选择最适合的节点作为m的数据恢复节点;4)选定n作为恢复节点,m向n发送心跳消息以确保n在发送树中并且有能力作为m的恢复节点;5)如果m没有从任何节点收到类型4的控制包,或者在一段时间内没有收到恢复节点n发送的心跳消息,m从步骤2重新开始;6)当m感知到数据丢失后,启动数据恢复机制;数据恢复机制有两种策略,如果期望减少网络中出现的冗余数据,那么执行步骤7,如果期望有更多的节点得到恢复数据,那么执行步骤8;7)节点m检查它的父结点是否正常工作,如果它的父结点正常工作,则m不启动数据恢复机制;否则节点执行数据恢复机制,向各自的恢复节点发送恢复请求,请求节点收到恢复数据后,向孩子节点转发恢复数据;8)每个感知到数据丢失的节点分别启动数据恢复机制,向各自的恢复节点请求数据,请求节点收到恢复数据后,向孩子节点转发恢复数据,如果某个节点从它的父结点收到重复的恢复数据,则向父节点发送抑制消息,父节点收到抑制消息后,不再向子节点转发恢复数据。
7.根据权利要求1所述的对采用终端主机进行群组通信的业务进行数据恢复的方法,作为一个中间节点需要执行的步骤为1)利用应用层分组序号追踪它的孩子节点接收数据的进度,记录接收数据最慢的孩子节点;2)收到类型1的控制包后,进行如下判断如果u>0,并且本节点不是根节点,那么u减一,把控制包转发给父节点;如果u=0或者本节点已经是根节点,那么u=0,把控制包发送给孩子节点;如果u=0,v>0,并且本节点不是叶节点,那么v减一,把控制包转发给孩子节点;如果u=0,v=0或者本节点已经是叶子节点,那么v等于0,控制包转发工作结束,到达节点n,向孩子节点转发控制包有两种策略,一种策略是随机方式,即从所有孩子节点中随机选择一个,作为控制包转发的下一跳节点,另外一种方式则是把控制包转发给步骤1中记录的最慢的孩子节点。
8.根据权利要求1所述的对采用终端主机进行群组通信的业务进行数据恢复的方法,作为一个备选节点需要执行的步骤为1)备选节点检查它是否具备作为数据恢复点的必要条件,即它是否有空余度数以连接新的节点,如果没有空余度数,那么节点不再作任何工作,如果有,节点需要向m发送格式为类型2的控制包,类型2的控制包包含备选节点的地址;2)备选节点收到类型3的控制包后,比较它从数据源收到的分组序号seq2与seq1的关系,如果seq2<seq1,那么备选节点向m发送类型为4的控制包,否则备选节点不做任何事,类型4控制包包含分组序号差seq1-seq2。
9.根据权利要求1所述的对采用终端主机进行群组通信的业务进行数据恢复的方法,作为一个恢复节点需要执行的步骤为1)向请求节点发送心跳消息;2)收到请求节点的数据恢复请求后,向请求节点发送恢复数据。
全文摘要
本发明涉及数据通信技术领域,特别是用于应用层组播的数据恢复方法。1)利用现有的应用层组播协议,在群组通信的终端主机中构造数据发送树;2)确定需要发送的寻找数据恢复点的控制包的格式;3)修改应用层组播协议,使每个节点能够发送并处理寻找数据恢复点的控制包以及对数据恢复点认证和选择的控制包;4)修改应用层组播协议,使每个节点在检测到分组丢失后,向数据恢复点发送请求,并接收恢复数据。本发明通过在发送树中为每个成员寻找潜在节点作为数据恢复点,并在出现数据丢失的情况下利用恢复点向组成员提供恢复数据而做到避免数据丢失,提高传输可靠性的目的。本发明适合在利用应用层或终端主机进行组播数据传输服务的应用中实现。
文档编号H04L1/24GK1588862SQ20041006260
公开日2005年3月2日 申请日期2004年6月30日 优先权日2004年6月30日
发明者范锐 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1