用于可靠组播传输数据的方法及设备与流程

文档序号:12789253阅读:305来源:国知局
用于可靠组播传输数据的方法及设备与流程

本发明涉及通信技术领域,具体而言,涉及一种用于可靠组播传输数据的方法及设备。



背景技术:

现有的可靠组播技术,分为基于确认(ACK)和基于否定确认(NACK)的模式。现有的可靠组播技术,在对组播响应速度要求高以及对网络拥堵较敏感的应用领域,可例如在金融领域的使用场景,存在缺点。金融领域的的快速交易平台上,具有如下特点:1、系统低延时要求,对单笔响应要求极高,所花的交易时间一般是1毫秒以内,甚至要求100微秒级别的。系统这种特性,意味着可靠组播方案,必须使用快者优先兼顾稳定可靠的原则。2、系统处理冗余设计,请求数据包组播给多个相同的交易单元并行处理,处理完后再组播给下一类多个相同的交易单元。在这种设计下,就存在着多个相同发布者对多个相同接收者情况,故可靠组播的数据包去重和防拥塞的功能尤为重要。

在以上场景下,现有基于ACK确认模式的可靠组播技术,可扩展性差,随着接收者数量的增加,返回ACK数线性增加,占用大量的带宽,俗称“ACK爆炸”。现有基于NACK确认模式的可靠组播技术,对网络稳定性敏感度高,在网络丢包率增大的情况下,所有接收者上的丢失的数据包增多,意味着重传数据包大大增加,同样占用大量的带宽,然后又增加丢包率,造成恶性循环,俗称“NACK爆炸”,特别是在多对多的场景下,情况尤其恶劣。

因此,需要一种新的用于可靠组播传输数据的方法及设备。

在所述背景技术部分公开的上述信息仅用于加强对本发明的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

有鉴于此,本发明提供一种用于可靠组播传输数据的方法及设备,能够降低网络稳定性敏感度,具备良好的可扩展性。

本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。

根据本发明的一方面,提出一种用于可靠组播传输数据的方法,该方法包括:确定主接收者;组播传送数据包;以及保存数据包的接收情况以及相关状态信息;根据所述主接收者返回信息进行后续操作。

在本公开的一种示例性实施例中,轮流选择接收者之一作为主接收者。

在本公开的一种示例性实施例中,组播传送数据包,包括:将预定信息加入数据包中,组播传送数据包。

在本公开的一种示例性实施例中,还包括:计算下次待确认的数据包的序号和待发送的数据包的序号。

根据本发明的一方面,提出一种用于可靠组播传输数据的方法,该方法包括:接收数据包;保存数据包的发送情况以及相关状态信息;判断是否为主接收者;以及如果为主接收者,则根据预定规则返回ACK或NACK给发送者。

在本公开的一种示例性实施例中,还包括:计算下次待接收的数据包的序号和历史接收到的数据包的最大序号。

在本公开的一种示例性实施例中,保存每一个发送者的发送情况以及相关状态信息。

在本公开的一种示例性实施例中,如果为主接收者,则根据预定规则返回ACK或NACK给发送者,包括:如果接收到的数据包的总数未超过预定阈值;并且并未到达检查缺口时间;返回ACK给发送者。

在本公开的一种示例性实施例中,如果为主接收者,则根据预定规则返回ACK或NACK给发送者,包括:如果接收到的数据包的总数未超过预定阈值;并且到达检查缺口时间;并且数据包不存在缺口;返回ACK给发送者。

在本公开的一种示例性实施例中,如果为主接收者,则根据预定规则返回ACK或NACK给发送者,包括:如果接收到的数据包的总数到达预定阈值;并且数据包不存在缺口;返回ACK给发送者。

在本公开的一种示例性实施例中,如果为主接收者,则根据预定规则返回ACK或NACK给发送者,包括:如果接收到的数据包的总数到达预定阈值;并且数据包存在缺口;并且距离上次发送NACK时间不超过预定时间间隔;并且本次补缺范围小于上次补缺范围;返回ACK给发送者。

在本公开的一种示例性实施例中,如果为主接收者,则根据预定规则返回ACK或NACK给发送者,包括:如果接收到的数据包的总数到达预定阈值;并且数据包存在缺口;并且距离上次发送NACK时间不超过预定时间间隔;并且本次补缺范围大于上次补缺范围;返回NACK给发送者;并且清空数据包的总数,储存本次发送NACK的时间以及补缺范围。

在本公开的一种示例性实施例中,如果为主接收者,则根据预定规则返回ACK或NACK给发送者,包括:如果接收到的数据包的总数到达预定阈值;并且数据包存在缺口;并且距离上次发送NACK时间超过预定时间间隔;返回NACK给发送者;并且清空数据包的总数,储存本次发送NACK的时间以及补缺范围。

根据本发明的一方面,提出一种用于可靠组播传输数据的设备,该设备包括:选择模块,用于确定主接收者;组播模块,用于组播传送数据包;以及接收储存模块,用于保存数据包的接收情况以及相关状态信息,操作模块,用于根据主接收者返回信息进行后续操作。

在本公开的一种示例性实施例中,包括:信息子模块,用于将预定信息加入数据包中,组播传送数据包。

在本公开的一种示例性实施例中,还包括:第一计算模块,用于计算下次待确认的数据包的序号和待发送的数据包的序号。

根据本发明的一方面,提出一种用于可靠组播传输数据的设备,该设备包括:接收模块,用于获取数据包;发送储存模块,用于保存数据包的发送情况以及相关状态信息;判断模块,用于判断是否为主接收者;以及返回信息模块,用于为主接收者时,则根据预定规则返回ACK或NACK给发送者,预定规则包括阈值。

在本公开的一种示例性实施例中,还包括:第二计算模块,用于计算下次待接收的数据包的序号和历史接收到的数据包的最大序号。

根据本发明的用于可靠组播传输数据的方法及设备,能够降低网络稳定性敏感度,具备良好的可扩展性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。

附图说明

通过参照附图详细描述其示例实施例,本发明的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据一示例性实施例示出的一种用于可靠组播传输数据的方法的流程图。

图2是根据另一示例性实施例示出的一种用于可靠组播传输数据的方法的流程图。

图3是根据现有技术中可靠组播传输数据的方法示意图。

图4是根据另一示例性实施例示出的一种用于可靠组播传输数据的方法的流程图。

图5是根据一示例性实施例示出的一种用于组播传输数据的设备的框图。

图6是根据另一示例性实施例示出的一种用于组播传输数据的设备的框图。

图7是根据另一示例性实施例示出的一种用于组播传输数据的设备的框图。

图8是根据另一示例性实施例示出的一种用于组播传输数据的设备的框图。

图9是根据另一示例性实施例示出的一种用于组播传输数据的设备的框图。

具体实施例

现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本发明将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。

此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。

附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。

应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本公开概念的教示。如本文中所使用,术语「及/或」包括相关联的列出项目中的任一个及一或多者的所有组合。

本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的,因此不能用于限制本发明的保护范围。

图1是根据另一示例性实施例示出的一种用于可靠组播传输数据的方法的流程图。

如图1所示,在S102中,确定主接收者。可例如,轮流选择接受者之一作为主接收者。

在S104中,组播传送数据包。如上文所述,确定主接收者之后,可例如,将预定的信息放在待传输的数据包的预定位置,以便组播数据包,使得接收者判断自身是否为主接收者。还可例如,将主接收者的信息,放入数据包中组播,以便接受者识别主接收者。本发明不以此为限。可例如,发送者按照应用层调用API发送的次序给数据包编号,每个数据包,都有一个全局的编号。序号是连续的,且在当前组播会话中是全局唯一的。发送者通过维护各类序号实现流量控制和补缺功能,接收者通过维护各类序号实现数据包去重、检查消息缺口的功能。(注:一个局域网以太帧最大为1514字节,所以一般一个组播数据包最大可用缓存是1472字节,但是实际上业务数据包很容易就超过了这个限制,因而在设计可靠组播协议的时候,还考虑了分片情况,分片也有序号。在本实施例中,为了方便说明情况,按一个组播数据包一个编号处理。)

在S106中,保存数据包的接收情况以及相关状态信息。可例如,保存每一个接受者接收到的数据包的情况以及相关状态信息。

在S108中,根据主接收者返回信息进行后续操作。如上文所述,现有的可靠组播技术,分为基于确认(ACK)和基于否定确认(NACK)的模式。可例如,主接收者根据自身接收数据包的情况返回确认字符ACK或NACK,发送者在接收到确认字符后,根据字符内容进行后续操作。

根据本发明的用于可靠组播传输数据的方法,通过选择组播接收者之一作为主接收者,通过主接收者返回确认字符进行后续处理的方式,能够降低网络稳定性敏感度,具备良好的可扩展性。

应清楚地理解,本发明描述了如何形成和使用特定示例,但本发明的原理不限于这些示例的任何细节。相反,基于本发明公开的内容的教导,这些原理能够应用于许多其它实施例。

在本公开的一种示例性实施例中,还包括:轮流选择接收者之一作为所述主接收者。轮流选择接受者之一作为所述主接收者。只有主接收者才有权利返回ACK或者NACK数据包。在本实施例中,选择主接收者是以快者优先兼顾稳定可靠作为原则,如果采用最弱者作为主接收者,那么带来的后果是牺牲单笔性能来提高吞吐量。如果采用最强者作为主接收者,那么带来的后果是影响稳定性(可能会引起大量补缺)进而影响吞吐量。轮流选择是一种折中的办法,带来的好处除了可以尽量避免出现上述问题以外,还可以很好的解决在某个主接收者崩溃导致不返回ACK确认数据包的情况下,引起网络拥堵的问题。另外如果当前接收者发现数据有丢失,那么意味着其他接收者也很可能数据有丢失,这时候应该选择一个代表回复NACK即可。发送者在收到补缺请求后,通过组播的方式发送补缺数据包,其他接收者同样也可以收到补缺数据包。

根据本发明的用于可靠组播传输数据的方法,通过轮流选择组播接收者之一作为主接收者的方式,可以在保证吞吐量的同时兼顾系统的稳定可靠。

在本公开的一种示例性实施例中,还包括:计算下次待确认的所述数据包的序号和待发送的所述数据包的序号。发送者维护每一接收者的数据包接收情况及保存相关状态信息,并算出下次待确认的序号和下次待发送的序号,以便流量控制。

图2是根据一示例性实施例示出的一种用于可靠组播传输数据的方法的流程图。

如图2所示,在S202中,获取数据包。在组播会话中,接受者获取数据包。在组播会话:多个相同发送者和多个相同接收者组成一个组播会话,其特点是在同一个组播地址和端口上传递冗余的数据包数据。可参考图3的示意图,每个接收者和发送者之间都会维护一个组播连接,实线代表S1与R1/R2/R3分别建立了三条组播连接。虚线代表S2与R1/R2/R3分别建立了三条组播连接。每个组播会话存在多条组播连接,也就是相同发送者和相同接收者之间的组播连接共同组成一个组播会话。也就是相同发送者和相同接收者之间的组播连接共同组成一个组播会话。现有的可靠组播技术,分为基于确认(ACK)的和基于否定确认(NACK)的模式。在本发明实施例中,混合ACK和NACK的两种模式,进行可靠组播数据传输。

在S204中,保存所述数据包的发送情况以及相关状态信息。可例如,保存每一个发送者的所述发送情况以及所述相关状态信息。

在S206中,判断是否为主接收者。可例如,通过发送者在数据包的预定位置预留预定信息,接收者通过预订信息来判断自身是否为主接收者。可例如,将全局编号做特定的标注,以便接受者判断自己是否为主接收者,还可例如,将主接收者的编号放在数据包的特定位置,以便接受者判断自己是否为主接收者,本发明不以此为限。如果接受者为主接收者,则进入步骤S208。

在S208中,根据预定规则返回ACK或NACK给发送者,预定规则包括阈值。基于确认ACK的技术特点是:1、发送者通过组播的方式向接收者发送数据。2、接收者在首次收到数据包后,利用单播方式向发送者发送ACK确认数据包3、如果发送者中一定时间内没有收到对应的ACK确认包,则重传组播数据。基于否定确认NACK的技术特点:1、发送者通过组播的方式向接收者发送数据。2、接收者如果数据包空缺,利用单播方式向发送者发送NACK数据包,要求重发。3、发送者在收到NACK数据包后,判断在RTT(接收者和发送者之间网络延时)之内,如果曾经重发过,则不再重传,否则重发此NACK所请求的组播数据包。在本实施例中,预定规则可例如为,判断数据包的数量是否超出一定数值,还可例如,判断是否存在数据缺口等等,本发明不以此为限。

根据本发明的用于可靠组播传输数据的方法,通过选择组播接受者之一作为主接收者,由主接收者返回数据包确认字符ACK或NACK的方式,能够降低网络稳定性敏感度,具备良好的可扩展性。

在本公开的一种示例性实施例中,还包括:计算下次待接收的所述数据包的序号和历史接收到的所述数据包的最大序号。接收者维护每一个发送者的数据包发送情况及保存相关状态信息,并算出下次待接收的序号和历史收到的最大序号,以便返回确认消息(ACK)或者否定确认消息(NACK)。

图4是根据另一示例性实施例示出的一种用于可靠组播传输数据的方法的流程图。图4是对图2中S206以及S208的示例性描述。

在S402中,判断是否为主接收者,接收者判断下自己是否是主接收者,如果是,进入S404,否则结束此流程。

在S404中,判断接收数是否达到预定阈值。可例如,在接收到数据包时,接收者将接收数据包总数加1,如果收到数据包总数超过初始设定的阈值,则进入步骤S410,否则进入S406。

在S406中,判断是否到达检查缺口时间。可例如,接收者针对当前待接收的数据包设定一个随机的定时器(这里设置随机定时器的用意是为降低各个接收者在同一时间点检查NACK的概率),如果定时器超时但是未收到该数据数据包,进入S410,否则设定下一个定时器,进入S408。

在S408中,判断是否有缺口。可例如,接收者将历史收到的最大序号减去下次待接收的序号,算出当前数据的缺口范围,如果不存在缺口范围,则代表不需要补缺,进入S408。否则进入S412。

在S410中,返回ACK数据包给当前发送者。

在S412中,判断距离上次发送NACK的时间是否大于预定时间。可例如设定预定时间为10ms,如果在当前组播会话中,距离上次发送NACK时间超过10ms,则进入S416,否则进入S414。在本实施例中,当前组播会话,因为在一个组播会话中可能存在多个发送者,即使前后两次返回NACK的目标发送者不一样,如果时间间隔是10ms以内,都要跳到下一步。

S414,判断本次补缺范围是否大于上次补缺范围。如果在当前组播会话中,本次NACK消息表示的需要重传的数据范围小于等于上次发送NACK消息表示的需要重传的数据范围,则进入S310。否则进入S316。因为同一个组播会话中可能存在多个发送者,每个发送者发送相同的冗余数据,返回ACK数据包给当前发送者,防止出现拥塞问题。

在S416中,清空当前接收数据包总数,记录上次发出需要重传的NACK消息的时间和需要重传的数据范围,发回NACK。还可例如,设置下一个定时器。

本发明实施例的用于可靠组播传输数据的方法,混合了ACK和NACK两种返回确认消息模式,具有两种方式的优点。

更进一步的,本发明实施例的用于可靠组播传输数据的方法,通过轮流选择主接收者的方式,解决了基于ACK模式的缺点(ACK爆炸问题),因为只有主接收者才会返回ACK报文,其他接收者不会返回,所以返回的ACK数量只跟发送者的数据个数有关,与接收者个数无关,因而不会因为接收者规模的增加而影响带宽。

更进一步的,本发明实施例的用于可靠组播传输数据的方法,通过主接收方判断报文返回的时间间隔,以此来遏制NACK确认消息的发送素的的方式,解决了基于NACK模式的缺点(NACK爆炸),借助接收者遏止NACK发送速度,提高补缺重传效率。即每个接收者只有在自己是主接收者情况下,且在一定时间以外,且范围不重复的情况下,才发起NACK请求。

本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本发明提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。

此外,需要注意的是,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。

图5是根据一示例性实施例示出的一种用于可靠组播传输数据设备的框图。

其中,选择模块502用于确定主接收者。

组播模块504用于组播传送所述数据包。

接收储存模块506用于保存数据包的接收情况以及相关状态信息。

操作模块508用于根据所述主接收者返回信息进行后续操作。

根据本发明的用于可靠组播传输数据的设备,通过选择组播接收者之一作为主接收者,通过主接收者返回确认字符进行后续处理的方式,能够降低网络稳定性敏感度,具备良好的可扩展性。

图6是根据另一示例性实施例示出的一种用于可靠组播传输数据设备的框图。图7是对图5中,组播模块504的示例性描述。

信息子模块5042用于将预定信息加入所述数据包中,组播传送所述数据包。

图7是根据另一示例性实施例示出的一种用于可靠组播传输数据设备的框图。

第一计算模块702用于计算下次待确认的所述数据包的序号和待发送的所述数据包的序号。

图8是根据另一示例性实施例示出的一种用于可靠组播传输数据的设备的框图。

其中接收模块802用于获取数据包。

发送储存模块804用于保存数据包的发送情况以及相关状态信息。

判断模块806用于判断是否为主接收者。

返回信息模块808用于在为主接收者时,则根据预定规则返回ACK或NACK给发送者,预定规则包括阈值。

根据本发明的用于可靠组播传输数据的设备,通过选择组播接受者之一作为主接收者,由主接收者返回数据包确认字符ACK或NACK的方式,能够降低网络稳定性敏感度,具备良好的可扩展性。

图9是根据另一示例性实施例示出的一种用于可靠组播传输数据的设备的框图。

第二计算模块902用于计算下次待接收的所述数据包的序号和历史接收到的所述数据包的最大序号。

根据本发明的用于可靠组播传输数据的设备,通过选择组播接受者之一作为主接收者,由主接收者返回数据包确认字符ACK或NACK的方式,能够降低网络稳定性敏感度,具备良好的可扩展性。

本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本发明实施例的方法。

通过以上的详细描述,本领域的技术人员易于理解,根据本发明实施例的用于可靠组播传输数据的方法及设备具有以下优点中的一个或多个。

根据一些实施例,本发明的用于可靠组播传输数据的方法,通过选择组播接收者之一作为主接收者,通过主接收者返回ACK或NACK确认字符进行后续处理的方式,混合了ACK和NACK两种模式的优点,能够降低网络稳定性敏感度,具备良好的可扩展性。

根据另一些实施例,本发明的用于可靠组播传输数据的方法,通过轮流选择组播接收者之一作为主接收者的方式,可以解决ACK模式的“ACK爆炸”问题,在保证吞吐量的同时兼顾系统的稳定可靠。

根据另一些实施例,本发明的用于可靠组播传输数据的方法,通过选择组播接受者之一作为主接收者,由主接收者返回数据包确认字符ACK或NACK的方式,并且主接收者遏制返回报文发送速度的方式,能够解决NACK模式的“NACK爆炸”问题,能够降低网络稳定性敏感度,具备良好的可扩展性。

以上具体地示出和描述了本发明的示例性实施例。应可理解的是,本发明不限于这里描述的详细结构、设置方式或实现方法;相反,本发明意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。

此外,本说明书说明书附图所示出的结构、比例、大小等,均仅用以配合说明书所公开的内容,以供本领域技术人员了解与阅读,并非用以限定本公开可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本公开所能产生的技术效果及所能实现的目的下,均应仍落在本公开所公开的技术内容得能涵盖的范围内。同时,本说明书中所引用的如「上」、「第一」、「第二」及「一」等的用语,也仅为便于叙述的明了,而非用以限定本公开可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当也视为本发明可实施的范畴。

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