CN115866095A - 数据传输方法、装置、电子设备及存储介质 - Google Patents
数据传输方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115866095A CN115866095A CN202211489158.0A CN202211489158A CN115866095A CN 115866095 A CN115866095 A CN 115866095A CN 202211489158 A CN202211489158 A CN 202211489158A CN 115866095 A CN115866095 A CN 115866095A
- Authority
- CN
- China
- Prior art keywords
- packet
- data block
- current
- packet loss
- data
- 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.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本公开涉及通信技术领域,具体涉及数据传输方法、装置、电子设备及存储介质,该方法包括获取当前数据块的大小以及历史数据块的历史丢包率,所述当前数据块包括至少一个数据包;基于当前数据块的大小以及历史丢包率,确定当前数据块的当前丢包检测阈值;当基于当前数据块的第一已接收数据包的数量确定满足当前丢包检测阈值时,对当前数据块进行丢包检测,确定当前数据块的第一未到达数据包;获取第一未到达数据包,以获得当前数据块的数据包。以数据块为单位进行传输和丢包判断,由于数据块能被完整地交付给应用层,数据块之间可以互相独立交互,可以在数据块发生丢包时尽早地发现,不会导致数据块一直阻塞在丢包上。
Description
技术领域
本公开涉及通信技术领域,具体涉及数据传输方法、装置、电子设备及存储介质。
背景技术
多路传输技术通过建立多条传输连接从多个服务器下载数据,能够充分利用异构的上行资源,在单条连接阻塞时也能够保持正常的传输能力,具有较好的应用前景,目前广泛应用于文件下载、短视频、直播等流媒体业务中。通常流媒体业务对数据块的传输时间有着严格的要求,比如,短视频业务要求一段连续数据块下载时间不超过剩余缓存时间,否则会导致卡顿;直播业务要求更严格,要求数据块的传输时间为毫秒级别。数据块在传输过程中,如果发生丢包未及时恢复,则该数据块会导致卡顿和画质下降。
发明内容
有鉴于此,本公开实施例提供了一种数据传输方法、装置、电子设备及存储介质,以解决丢包恢复的问题。
根据第一方面,本公开实施例提供了一种数据传输方法,包括:
获取当前数据块的大小以及历史数据块的历史丢包率,所述当前数据块包括至少一个数据包;
基于所述当前数据块的大小以及所述历史丢包率,确定所述当前数据块的当前丢包检测阈值;
当基于所述当前数据块的第一已接收数据包的数量确定满足所述当前丢包检测阈值时,对所述当前数据块进行丢包检测,确定所述当前数据块的第一未到达数据包;
获取所述第一未到达数据包,以获得所述当前数据块的数据包。
根据第二方面,本公开实施例还提供了一种数据传输装置,包括:
第一获取模块,用于获取当前数据块的大小以及历史数据块的历史丢包率,所述当前数据块包括至少一个数据包;
第一确定模块,用于基于所述当前数据块的大小以及所述历史丢包率,确定所述当前数据块的当前丢包检测阈值;
第二确定模块,用于当基于所述当前数据块的第一已接收数据包的数量确定满足所述当前丢包检测阈值时,对所述当前数据块进行丢包检测,确定所述当前数据块的第一未到达数据包;
第二获取模块,用于获取所述未到达数据包,以获得所述当前数据块的数据包。
根据第三方面,本公开实施例提供了一种电子设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行第一方面或者第一方面的任意一种实施方式中所述的数据传输方法。
根据第四方面,本公开实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行第一方面或者第一方面的任意一种实施方式中所述的数据传输方法。
本公开实施例提供的数据传输方法,以数据块为单位进行传输和丢包判断,由于数据块能被完整地交付给应用层,数据块之间可以互相独立交互,这种方式可以在数据块发生丢包时尽早地发现,不会导致数据块一直阻塞在丢包上;且在丢包检测时,以数据包为驱动时间判断是否发生丢包并及时获得第一未到达数据包,不需要等待超时触发或者确认消息,能够达到更低的丢包回复时间和数据块传输时间,使得该方法能够应用在对数据块传输有限时要求的短视频和直播等业务中。
附图说明
为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本公开实施例的数据传输方法的流程图;
图2是根据本公开实施例的数据传输方法的流程图;
图3是根据本公开实施例的数据传输方法的流程图;
图4是根据本公开实施例的数据传输方法的流程图;
图5是根据本公开实施例的数据传输装置的结构框图;
图6是本公开实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
在丢包重传检测中,一般采用时间驱动的重传和确认信息(Acknowledgecharacter,简称为ACK)驱动的重传。具体地,时间驱动的重传即发送端在发送数据的时候会设置一个计时器,若计时器超时仍未收到数据的确认信息,则会引发相应的超时和数据重传,超时重传时间一般设置为单个连接的往返时间的1~2倍,或者根据网络变化进行估计。基于时间驱动的重传对于数据包的恢复效率很低,尤其是发生丢包的路径延迟较大时,超时重传时间往往会超过数据块的传输时间要求,导致数据块的传输时间过长。ACK驱动的重传,即发送端基于接收端的确认信息来引发重传,而非重传计时器的超时。如果数据包没有连续达到,就表示ACK最后那个可能被丢包,如果发送方连续收到3次相同的ACK就重传该数据包,一次只能恢复一个数据包的发送。选择性确认信息(Selective Acknowledgecharacter,简称为SACK)是ACK的扩展,可以支持恢复多个数据包。这种重传机制相比基于超时触发重传机制效率要更高,但是本质上发送端必须要依赖于收到足够的确认消息才能进行重传,如果ACK发送丢失会导致数据块传输堵塞在该数据包上,无法满足数据块传输的延迟要求。
由此可知,上述两种丢包重传机制均难以满足对数据块传输有严格时限要求的流媒体应用中。基于此,本公开实施例提供的数据传输方法,是基于数据包驱动的丢包检测和重传机制,通过数据包为驱动时间判断是否发生丢包并及时进行重传,不需要等待超时触发或者确认消息。因此,可以实现较低的丢包恢复时间和数据块传输时间,从而使得该方法能够应用在对数据块传输有限时要求的短视频和直播等业务中。
根据本公开实施例,提供了一种数据传输方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种数据传输方法,可用于电子设备,如移动终端、电脑等,图1是根据本公开实施例的数据传输方法的流程图,如图1所示,该流程包括如下步骤:
S11,获取当前数据块的大小以及历史数据块的历史丢包率。
其中,所述当前数据块包括至少一个数据包。
数据块包括但不限于视频帧、音频帧等等,在本实施例中以数据块为单位进行检测的,每个数据块均是可以独立交付给上层应用进行处理的。因此,以数据块为单位进行检测能够及时发现丢包。当前数据块的大小是根据实际业务需求确定的,在此对其具体数值并不做任何限定。
历史数据块为当前数据块之前的数据块,可以是一个数据块,两个数据块或多个数据块,在此对历史数据块的具体数量并不做任何限定。历史数据块的历史丢包率为历史数据块中丢失数据包的数量与数据包的总数的比值,每次在接收历史数据块时,进行丢失数据包的统计,从而得到各个历史数据块的历史丢包率。
S12,基于当前数据块的大小以及历史丢包率,确定当前数据块的当前丢包检测阈值。
利用历史丢包率与当前数据块的大小的乘积预测当前数据块的丢包数量,将该丢包数量作为当前丢包检测阈值;或者,利用当前数据块的大小减去上述的乘积,确定能够接收到的数据包的数量,将其作为当前丢包检测阈值。
S13,当基于当前数据块的第一已接收数据包的数量确定满足当前丢包检测阈值时,对当前数据块进行丢包检测,确定当前数据块的第一未到达数据包。
若当前丢包检测阈值是利用丢包数量表示时,则统计第一已接收数据包的数量,再结合当前数据块的大小确定第一未到达数据包的数量,若第一未到达数据包的数量等于当前丢包检测阈值时,则触发对当前数据块的丢包检测;若当前丢包阈值是利用接收到的数据包的数量表示时,则当接收到的数据包的数量等于当前丢包检测阈值时,则触发对当前数据块的丢包检测。
在丢包检测时,可以记录第一已接收数据包,再结合当前数据块的所有数据包,进行对比即可确定当前数据块的第一未到达数据包。
在一些实施方式中,上述S13包括:
(1)统计当前数据块的第一已接收数据包的数量,以确定当前数据块的第一未到达数据包的数量。
(2)当第一未到达数据包的数量达到丢包检测阈值时,基于当前数据块的各个数据包的标识以及第一已接收数据包的标识,确定当前数据块的第一未到达数据包。
以数据块为单位,启动计数器,该计数器的初始值为0。每接收到一个数据包,则计数器的值加1。其中,计数器的数值用于表示第一已接收数据包的数量,再利用当前数据块的数据包的总数减去第一已接收数据包的数量,得到第一未到达数据包的数量。
每次计数器的值更新后计算第一未到达数据包的数量,或者,每隔预设时间之后计算第一未到达数据包的数量。当第一未到达数据包的数量达到丢包检测阈值时,表示此时满足丢包检测的时机,进行丢包检测。由于在将当前数据块封装成至少一个数据包时,为了确定各个数据包所属的数据块,在数据包中设置有其所属数据块的标识以及数据包在当前数据块中的位置,在下文中将这些统称为数据包的标识。基于此,提取第一已接收数据包的标识,将这些标识与各个数据包的标识进行比较,即可确定出当前数据块的第一未到达数据包的标识,从而获知第一未到达数据包。
丢包检测阈值为触发丢包检测时机,是通过统计已接收到的数据包的数量,确定未到达数据包的数量得到的;且在得到未达到数据包的数量时,利用各个数据包的标识,能够准确地确定出第一未达到数据包。
S14,获取第一未到达数据包,以获得当前数据块的数据包。
对于第一未到达数据包的获取,可以是触发第一未到达数据包的重传;当然,第一未到达数据包的未到达的原因可能是发送端刚发出还未到达,也可能是丢包。因此,对于第一未到达数据包的获取可以是重传,也可以是再等待一段时间;或者,重传与等待一段时间的结合;等等。在此对其并不做任何限制,具体根据实际需求进行设置。
对于当前数据块的丢包检测,可以是进行一次检测检测,也可以是进行多轮检测。例如,在当前数据块的数据包传输过程中,每次接收到数据包均会结合当前数据块的已接收数据包的数量,动态更新当前丢包检测阈值;通过设置丢包检测阈值,将更新后的当前丢包检测阈值高于丢包检测阈值,开启新一轮的丢包检测,直至数据包全部到达为止。
本实施例提供的数据传输方法,以数据块为单位进行传输和丢包判断,由于数据块能被完整地交付给应用层,数据块之间可以互相独立交互,这种方式可以在数据块发生丢包时尽早地发现,不会导致数据块一直阻塞在丢包上;且在丢包检测时,以数据包为驱动时间判断是否发生丢包并及时获得第一未到达数据包,不需要等待超时触发或者确认消息,能够达到更低的丢包回复时间和数据块传输时间,使得该方法能够应用在对数据块传输有限时要求的短视频和直播等业务中。
在本实施例中提供了一种数据传输方法,可用于电子设备,如移动终端、电脑等,图2是根据本公开实施例的数据传输方法的流程图,如图2所示,该流程包括如下步骤:
S21,获取当前数据块的大小以及历史数据块的历史丢包率。
其中,所述当前数据块包括至少一个数据包。
详细请参见图1所示实施例的S11,在此不再赘述。
S22,基于当前数据块的大小以及历史丢包率,确定当前数据块的当前丢包检测阈值。
详细请参见图1所示实施例的S12,在此不再赘述。
S23,当基于当前数据块的第一已接收数据包的数量确定满足当前丢包检测阈值时,对当前数据块进行丢包检测,确定当前数据块的第一未到达数据包。
详细请参见图1所示实施例的S13,在此不再赘述。
S24,获取第一未到达数据包,以获得当前数据块的数据包。
具体地,上述S24包括:
S241,获取第一未到达数据包的发送时间以及当前时间,确定第一未到达数据包的飞行时间。
通过与发送端进行数据通信,即可获知发送端发送各个数据包的时间,从而得到第一未到达数据包的发送时间。再计算当前时间与发送时间的差值,确定出各个第一未到达数据包的飞行时间。
S242,基于飞行时间与飞行时间阈值的大小关系,确定获取第一未到达数据包的方式,并利用第一未达到数据的获取方式获取未到达数据包,以获得当前数据块的数据包。
由于网络状态的波动性,对于数据块丢包率的计算可能会存在误差,从而导致数据包驱动的丢包检测和重传机制重复发送数据包,即过度重传。基于此,在本实施例中,利用飞行时间阈值来避免过度重传。其中,飞行时间阈值是根据实际需求进行设置的,在此对其具体数值并不做任何限定。
在一些实施方式中,飞行时间阈值是基于当前业务类型确定的。对于直播等延迟要求为秒级的第一业务,飞行时间阈值设置较小,例如,20ms;对于短视频等有部分缓存的第二业务,飞行时间阈值大于第一业务的飞行时间阈值,例如,200ms;对于文件下载等对延迟没有太多要求的第三业务,飞行时间阈值大于第二业务的飞行时间阈值,例如,完全回退到超时触发重传机制,即,飞行时间阈值等于重传超时时间。
在另一些实施方式中,飞行时间阈值的确定方式包括:获取历史数据块的过度重传系数,以确定飞行时间阈值,所述飞行时间阈值与过度重传系数正相关,所述过度重传系数用于表示历史数据块中重复收到同一重传数据包的比例。
具体地,过度重传系数表示重传包中重复收到的比例,过渡重传系数较低的话,可以使用较小的飞行时间阈值;过渡重传系数越高,则需要调大飞行时间阈值,避免过渡重传导致的成本开销。例如,将过渡重传系数的大小确定为过渡重传系数;或,在过渡重传系数的大小的基础上,乘以预设值确定过渡重传系数。
当飞行时间大于飞行时间阈值时,则表示该第一未到达数据包丢失,需要重传;若飞行时间小于飞行时间阈值,则表示发送端刚第一未到达数据包,还未到达需要等待。
通过使用飞行时间阈值可以平衡传输性能和成本,满足不同业务的需求,可以将飞行时间阈值设置为较小值以获取高性能,也可以将飞行时间阈值设置为较大值来避免过度重传,甚至回退到超时触发重传机制。
在一些实施方式中,上述S242包括:
(1)在第一未到达数据包中筛选出飞行时间大于飞行时间阈值的第二未到达数据包以及飞行时间小于飞行时间阈值的第三未到达数据包。
利用飞行时间与飞行时间阈值的大小关系,对第一未到达数据包进行分类,得到需要重传的第二未到达数据包以及需要等待的第三未到达数据包。
(2)触发第二未到达数据包的重传。
将第二未到达数据包的标识告知发送端,相应地,发送端利用该标识确定需要重传的数据包,从而实现第二未到达数据包的重传。
在一些实施方式中,上述步骤(2)包括:
2.1)获取各个传输路径的丢包率。
2.2)基于丢包率最低的传输路径重传第二未到达数据包。
发送端与接收端之间可以是利用多路传输路径进行传输,那么,在需要进行数据包重传时,利用各个传输路径的丢包率,选择丢包率最小的传输路径进行第二未到达数据包的重传,以减小重传数据包的丢失概率。
基于每条传输路径的丢包率,选择概率最低的传输路径进行重传,避免重传数据包丢失再进行多次重传。
(3)降低第三未到达数据包的重传超时时间,并基于降低后的重传超时时间获取第三未到达数据包。
如上文所述,第三未到达数据包表示该数据包刚从发送端发出,则更新该数据包的重传超时时间RTO,缩短超时触发时间。对于第三未到达数据包的重传超时时间的缩短,可以是直接在重传超时时间的基础上减去预设值得到降低后的重传超时时间;或者,依据预设计算公式重新计算重传超时时间,等等。在此对降低重传超时时间的具体方式并不做任何限定,具体根据实际需求进行设置,只需保证第三未到达数据包的重传超时时间是降低的即可。
在一些实施方式中,上述步骤(3)包括:
3.1)获取当前带宽利用率以及单个连接的往返时间。
3.2)计算重传超时时间与单个连接的往返时间的差值,并计算差值与所述当前带宽利用率的乘积。
3.3)基于乘积与单个连接的往返时间之和,确定降低后的重传超时时间。
具体地,采用如下公式计算降低后的重传超时时间Tail_RTO:
Tail_RTO=(RTO-RTT)*sessionrate+RTT
其中,RTO为重传超时时间,RTT为单个连接的往返时间,sessionrate为当前带宽利用率,取值在0~1之间,带宽利用率sessionrate越低则Tail_RTO越小,更快触发超时重传。
结合当前带宽利用率与单个连接的往返时间进行重传超时时间的估计,能够保证降低后的重传超时时间的可靠性。
以数据包驱动进行丢包检测和重传,满足检测条件时对未及时达到的、飞行时间超过飞行时间阈值的数据包进行立即重传,能够更早地发现数据包丢失,降低数据块传输时间;对未及时达到、但是飞行时间低于飞行时间阈值的数据进行重传超时时间的调整,缩短超时触发条件。
本实施例提供的数据传输方法,由于网络状态的波动性,数据块丢包率估计可能会有误差,导致数据包驱动的丢包检测和重传机制重复发送数据,即过度重传。基于此,利用飞行时间阈值进行约束,以避免过度重传。
在本实施例中提供了一种数据传输方法,可用于电子设备,如移动终端、电脑等,图3是根据本公开实施例的数据传输方法的流程图,如图3所示,该流程包括如下步骤:
S31,获取当前数据块的大小以及历史数据块的历史丢包率。
其中,所述当前数据块包括至少一个数据包,历史数据块包括至少两个。
具体地,上述S31包括:
S311,获取各个历史数据块的丢包权重。
历史数据块的数量是根据实际需求进行设置,例如,以最近N个数据块作为N个历史数据块。且历史数据块的丢包权重随时间流逝而衰减,即历史数据块的完成时间约接近当前时间,则历史数据块的丢包权重越大,以保证后续确定出的当前数据块的丢包率符合最新的网络状态。
S312,基于丢包权重与对应的历史丢包率的加权,确定当前数据块的丢包率。
在数据包传输过程中,每个数据块下载完成后均会统计该数据块的丢包率,采用如下公式计算历史数据块i的历史丢包率li:
li=(send_data_sizei-recv_data_sizei)/send_data_sizei*100%
其中,send_data_sizei为历史数据块i的发送数据包的数量,recv_data_sizei为历史数据块i的接收数据包的数量。
S313,基于当前数据块的丢包率与当前数据块的大小的乘积,确定当前丢包检测阈值。
如上文所述,对每个数据块维护一个计数器C和一个丢包检测阈值P,C表示当前已达到数据包的数量,P表示未到达数据包的数量阈值。每次收到数据包时,均会判断剩余未到达数据包的数量是否小于或等于P,若小于或等于P则进行丢包检测。
在数据块刚开始传输以及每次触发丢包检测时,都会重新计算P,直至P为零或者所有数据包均到达。其中,在当前数据块的数据包传输过程中,丢包检测阈值P是递减的,通过这种方式可以达到多次丢包检测的效果。
在计算得到当前数据块的丢包率之后,计算当前数据块的丢包率与当前数据块的大小的乘积,确定当前丢包检测阈值P。
在一些实施方式中,若当前数据块的丢包数量低于丢包检测阈值P时,可能会重复注入冗余数据,基于此,在上文所述的实施例中采用飞行时间阈值来控制冗余量。
若当前数据块的丢包数量高于丢包检测阈值P时,可能会长时间未触发丢包检测,此时剩下未到达的数据包会回退到RTO触发重传机制。对于这种情况增加一个超时时间保证这种情况下也能触发丢包检测。具体地,在接收当前数据块的数据包的过程中,记录接收数据包的飞行时间,将该飞行时间与超时时间进行比较,若高于超时时间则同样触发丢包检测。
S32,基于当前数据块的大小以及历史丢包率,确定当前数据块的当前丢包检测阈值。
详细请参见图1所示实施例的S12,在此不再赘述。
S33,当基于当前数据块的第一已接收数据包的数量确定满足当前丢包检测阈值时,对当前数据块进行丢包检测,确定当前数据块的第一未到达数据包。
详细请参见图1所示实施例的S13,在此不再赘述。
S34,获取第一未到达数据包,以获得当前数据块的数据包。
具体地,上述S34包括:
S341,当当前丢包检测阈值大于丢包检测阈值下限时,基于当前数据块的丢包率以及当前丢包检测阈值的乘积,对当前丢包检测阈值进行更新,确定更新后的丢包检测阈值。
通过设置丢包检测阈值下限,以触发多轮丢包检测。在当前丢包检测阈值大于丢包检测阈值下限时,表示此处还需要再次进行丢包检测。一方面触发基于当前丢包阈值下的第一未到达数据包的获取;另一方面基于当前数据块的丢包率以及当前丢包检测阈值的乘积更新当前丢包检测阈值,得到更新后的丢包检测阈值,再利用更新后的丢包检测阈值进行丢包检测。
S342,当基于当前数据块的第二已接收数据包的数量确定满足更新后的当前丢包检测阈值时,对当前数据块进行丢包检测,确定当前数据块的第四未到达数据包。
在经过上述第一方面的处理后,获取到新的数据包,此处已接收数据包称之为第二已接收数据包。统计第二已接收数据包的数量,计算剩余未到达数据包。当剩余未到达数据包的数量满足更新后的当前丢包检测阈值时,则确定当前数据块的第四未到达数据包。关于第四未到达数据包的确定方式,与上文中确定第一未到达数据包的方式类似,在此不再赘述。
S343,获取第四未到达数据包,以获得当前数据块的数据包。
关于第四未到达数据包的获取方式,与第一未到达数据包的获取方式类似,均是结合飞行时间阈值,将未到达数据包划分为需要重传的未到达数据包以及需要等待的未到达数据包。对于需要重传的未到达数据包是触发重传的,对于需要等待的未到达数据包,是降低该未到达数据包的RTO,再基于降低后的RTO进行重传检测。
本实施例提供的数据传输方法,对当前数据块之前的至少两个历史数据块的历史丢包率进行加权,使得当前数据块的丢包率是融合至少两个历史数据块的历史丢包率得到的,再进一步结合当前数据块的大小,能够得到较准确的当前丢包检测阈值。对于重传的数据包而言,也会存在一定概率的丢包,基于此,进行多轮丢包检测以尽早地发现丢包并重传。
作为本公开实施例的具体应用实例,如图4所示,客户端与发送端之间通过多条传输路径进行数据的传输。在本实施中数据块为视频帧,即将一个视频帧划分为至少一个数据包传输,且每个数据包中记录有表示其所属的视频帧以及该数据包在视频帧中的位置的标识。客户端在接收到数据包之后,送入丢包检测模块进行丢包检测。即,先统计已接收数据包的数量,对当前数据块进行完整度检测并计算当前丢包阈值。当未到达数据包的数量小于或等于当前丢包阈值时,触发丢包检测。基于已接收数据包的标识确定未到达数据包,再将未到达数据包的飞行时间与飞行时间阈值k进行比较,若大于飞行时间阈值k则选择传输路径进行重传;若飞行时间小于或等于飞行时间阈值,则降低未到达数据包的RTO,利用降低后的RTO进行重传检测。将上述丢包检测模块以及重传模块的检测结果基于回调函数形成发送请求包,并将该发送请求包发送至发送端,以使得发送端基于该发送请求包进行相应的处理。
客户端在任务下载时,与部署相关文件资源的多个服务器建立连接,随后向各个服务器发送数据下载请求,即,默认将请求队列中的数据按照轮询方式向各个服务器请求。各个服务器基于请求下发对应数据包,客户端接收并整合各个传输路径传输的数据包,待数据块完整是交付给应用层。客户端动态计算第j轮丢包检测的丢包检测阈值Pj,每次收到数据包都会触发未到达数据块的数量是否满足丢包检测阈值的判断。如果未到达数据块的数量满足丢包检测阈值则进行丢包检测,并更新Pj+1开启下一轮检测,直到数据块全部到达。如果进入丢包检测逻辑,接收端会根据数据块缓存生成未到达数据包列表,依次计算每个未到达数据包的飞行时间,如果飞行时间超过飞行时间阈值,则判定数据包丢失则立即重传,否则自适应降低RTO。
作为本公开实施例的一个具体应用实例,以一次丢包检测为例。使用两条传输路径依次传输数据块1、2、3,数据块大小为512KB,数据块1、2传输丢包率分别为1%、2%,利用数据块2的丢包率计算数据块3的丢包检测阈值P0。即,P0=512*2%=10,基于此,数据块3在收到第502个(即,512-10=502)数据包时会触发重传检测。经过丢包检测逻辑,确定丢包检测时未到达数据包为标号为:10,11,12,77,78,79,80,509,510,511,这些未到达数据包的飞行时间分别为200ms,200ms,201ms,150ms,150ms,151ms,151ms,5ms,5ms,4ms。若飞行时间阈值为150ms,将各个未到达数据包的飞行时间与飞行时间阈值进行比较,则需要重传的未到达数据包的标号为:10,11,12,77,78,79,80;需要自适应降低RTO的未到达数据的标号为:509,510,511。
作为本公开实施例的另一个具体应用实例,使用两条传输路径依次传输数据块1、2、3,数据块大小为512KB,数据块1、2传输丢包率分别为10%、15%,利用数据块2的丢包率进行数据块第一轮丢包检测的丢包检测阈值的计算。即,P0=512*15%=76。在本实施例中,丢包检测阈值的下限为1,由于P0>0,则需要进行第二轮丢包检测,第二轮丢包检测的丢包检测阈值为:P1=P0*15%=76*15%=11;同样地,由于P1>0,则需要进行第三轮丢包检测,第三轮丢包检测的丢包检测阈值为:P2=P1*15%=11*15%=2。由于第四轮丢包检测时,进行丢包检测阈值的计算P3=P2*15%=2*15%=0.3,小于1,则表示需要总共需要进行三轮丢包重传的检测。
由于P0=76,P1=11,P2=2,则数据块分别在收到第436、第501、第510个数据包时会触发重传检测,若第一轮丢包检测的未到达数据包的标号为:51-56,201-230,472-511;第二轮丢包检测的未到达数据包的标号为:223-231,473,501,第三轮丢包检测的未到达数据包的标号为231,473。
其中,第一轮丢包检测时未到达数据包51-56,201-230,472-511,其中,未到达数据包51-56的飞行时间为400+ms,未到达数据包201-230的飞行时间为200+ms,未到达数据包472-511的飞行时间为10+ms。飞行时间阈值为150ms,则未到达数据包51-56以及未到达数据包201-230需要重传,未到达数据包472-511的RTO需要自适应降低。
第二轮丢包检测时未到达数据包223-231,473,501,飞行时间为200ms+,则未到达数据包223-231,473,501均需要重传。
第三轮丢包检测时未到达数据包231,473,其飞行时间为250ms,360ms,由于飞行时间大于飞行时间阈值150ms,则未到达数据包231,473均需要重传。
作为本公开实施例的另一个具体应用实例,使用两条传输路径依次传输数据块1、2、3,数据块大小为512KB,数据块1、2传输丢包率分别为0%、0%,利用数据块2的丢包率计算数据块3的丢包检测阈值,即,P0=512*0%=0。基于此,数据块3传输过程中不会触发丢包检测重传,回退到RTO超时触发重传机制。
作为本公开实施例的另一个具体应用实例,使用两条传输路径依次传输数据块1、2、3,数据块大小为100KB,数据块1、2传输丢包率分别为5%、5%,利用数据块2的丢包率计算数据块的丢包检测阈值,即,P0=100*5%=5,则数据块3分别在收到第95个数据包时会触发重传检测。经过丢包检测,确定未到达数据包的标号为10,15-17,40,飞行时间分别为300ms,280ms,281ms,282ms,220ms。飞行时间阈值为150ms,则未到达数据包10,15-17,40均需要重传。
在本实施例中还提供了一种数据传输装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种数据传输装置,如图5所示,包括:
第一获取模块41,用于获取当前数据块的大小以及历史数据块的历史丢包率,所述当前数据块包括至少一个数据包;
第一确定模块42,用于基于所述当前数据块的大小以及所述历史丢包率,确定所述当前数据块的当前丢包检测阈值;
第二确定模块43,用于当基于所述当前数据块的第一已接收数据包的数量确定满足所述当前丢包检测阈值时,对所述当前数据块进行丢包检测,确定所述当前数据块的第一未到达数据包;
第二获取模块44,用于获取所述第一未到达数据包,以获得所述当前数据块的数据包。
在一些实施方式中,所述历史数据块包括至少两个,第一确定模块42包括:
第一获取单元,用于获取各个所述历史数据块的丢包权重;
第一确定单元,用于基于所述丢包权重与对应的所述历史丢包率的加权,确定所述当前数据块的丢包率;
第二确定单元,用于基于所述当前数据块的丢包率与所述当前数据块的大小的乘积,确定所述当前丢包检测阈值。
在一些实施方式中,第二确定模块43包括:
统计单元,用于统计所述当前数据块的第一已接收数据包的数量,以确定所述当前数据块的第一未到达数据包的数量;
第三确定单元,用于当所述第一未到达数据包的数量达到所述丢包检测阈值时,基于所述当前数据块的各个数据包的标识以及所述第一已接收数据包的标识,确定所述当前数据块的第一未到达数据包。
在一些实施方式中,第二获取模块44包括:
第二获取单元,用于获取所述第一未到达数据包的发送时间以及当前时间,确定所述第一未到达数据包的飞行时间;
第四确定单元,用于基于所述飞行时间与飞行时间阈值的大小关系,确定获取所述第一未到达数据包的方式,并利用所述第一未达到数据的获取方式获取所述未到达数据包,以获得所述当前数据块的数据包。
在一些实施方式中,第四确定单元包括:
筛选子单元,用于在所述第一未到达数据包中筛选出飞行时间大于所述飞行时间阈值的第二未到达数据包以及飞行时间小于所述飞行时间阈值的第三未到达数据包;
触发子单元,用于触发所述第二未到达数据包的重传;
降低子单元,用于降低所述第三未到达数据包的重传超时时间,并基于降低后的重传超时时间获取所述第三未到达数据包。
在一些实施方式中,所述飞行时间阈值的确定模块包括:
第五确定单元,用于基于当前业务类型确定所述飞行时间阈值;
或者,
第六确定单元,用于获取所述历史数据块的过度重传系数,以确定所述飞行时间阈值,所述飞行时间阈值与所述过度重传系数正相关,所述过度重传系数用于表示所述历史数据块中重复收到同一重传数据包的比例。
在一些实施方式中,触发子单元包括:
第一获取子单元,用于获取各个传输路径的丢包率;
重传子单元,用于基于所述丢包率最低的传输路径重传所述第二未到达数据包。
在一些实施方式中,降低子单元包括:
第二获取子单元,用于获取当前带宽利用率以及单个连接的往返时间;
计算子单元,用于计算所述重传超时时间与所述单个连接的往返时间的差值,并计算所述差值与所述当前带宽利用率的乘积;
确定子单元,用于基于所述乘积与所述单个连接的往返时间之和,确定降低后的重传超时时间。
在一些实施方式中,第二获取模块44还包括:
更新单元,用于当所述当前丢包检测阈值大于所述丢包检测阈值下限时,基于所述当前数据块的丢包率以及所述当前丢包检测阈值的乘积,对所述当前丢包检测阈值进行更新,确定更新后的丢包检测阈值;
丢包检测单元,用于当基于所述当前数据块的第二已接收数据包的数量确定满足更新后的当前丢包检测阈值时,对所述当前数据块进行丢包检测,确定所述当前数据块的第四未到达数据包;
第三获取单元,用于获取所述第四未到达数据包,以获得所述当前数据块的数据包。
本实施例中的数据传输装置是以功能单元的形式来呈现,这里的单元是指ASIC电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
上述各个模块的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本公开实施例还提供一种电子设备,具有上述图5所示的数据传输装置。
请参阅图6,图6是本公开可选实施例提供的一种电子设备的结构示意图,如图6所示,该电子设备可以包括:至少一个处理器51,例如CPU(Central Processing Unit,中央处理器),至少一个通信接口53,存储器54,至少一个通信总线52。其中,通信总线52用于实现这些组件之间的连接通信。其中,通信接口53可以包括显示屏(Display)、键盘(Keyboard),可选通信接口53还可以包括标准的有线接口、无线接口。存储器54可以是高速RAM存储器(Random Access Memory,易挥发性随机存取存储器),也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器54可选的还可以是至少一个位于远离前述处理器51的存储装置。其中处理器51可以结合图5所描述的装置,存储器54中存储应用程序,且处理器51调用存储器54中存储的程序代码,以用于执行上述任一方法步骤。
其中,通信总线52可以是外设部件互连标准(peripheral componentinterconnect,简称PCI)总线或扩展工业标准结构(extended industry standardarchitecture,简称EISA)总线等。通信总线52可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器54可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory),硬盘(英文:hard diskdrive,缩写:HDD)或固态硬盘(英文:solid-state drive,缩写:SSD);存储器54还可以包括上述种类的存储器的组合。
其中,处理器51可以是中央处理器(英文:central processing unit,缩写:CPU),网络处理器(英文:network processor,缩写:NP)或者CPU和NP的组合。
其中,处理器51还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specific integrated circuit,缩写:ASIC),可编程逻辑器件(英文:programmable logic device,缩写:PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logic device,缩写:CPLD),现场可编程逻辑门阵列(英文:field-programmable gate array,缩写:FPGA),通用阵列逻辑(英文:generic arraylogic,缩写:GAL)或其任意组合。
可选地,存储器54还用于存储程序指令。处理器51可以调用程序指令,实现如本申请任一实施例中所示的数据传输方法。
本公开实施例还提供了一种非暂态计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的数据传输方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random Access Memory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard DiskDrive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于设备及系统实施例,所以描述的比较简单,相关之处参见设备及系统实施例的部分说明即可。
可以理解的是,在本公开的具体实施方式中,涉及到数据块等相关的数据,当本公开以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
虽然结合附图描述了本公开的实施例,但是本领域技术人员可以在不脱离本公开的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (12)
1.一种数据传输方法,其特征在于,包括:
获取当前数据块的大小以及历史数据块的历史丢包率,所述当前数据块包括至少一个数据包;
基于所述当前数据块的大小以及所述历史丢包率,确定所述当前数据块的当前丢包检测阈值;
当基于所述当前数据块的第一已接收数据包的数量确定满足所述当前丢包检测阈值时,对所述当前数据块进行丢包检测,确定所述当前数据块的第一未到达数据包;
获取所述第一未到达数据包,以获得所述当前数据块的数据包。
2.根据权利要求1所述的方法,其特征在于,所述历史数据块包括至少两个,所述基于所述当前数据块的大小以及所述历史丢包率,确定所述当前数据块的当前丢包检测阈值,包括:
获取各个所述历史数据块的丢包权重;
基于所述丢包权重与对应的所述历史丢包率的加权,确定所述当前数据块的丢包率;
基于所述当前数据块的丢包率与所述当前数据块的大小的乘积,确定所述当前丢包检测阈值。
3.根据权利要求1所述的方法,其特征在于,所述当基于所述当前数据块的第一已接收数据包的数量确定满足所述丢包检测阈值时,对所述当前数据块进行丢包检测,确定所述当前数据块的第一未到达数据包,包括:
统计所述当前数据块的第一已接收数据包的数量,以确定所述当前数据块的第一未到达数据包的数量;
当所述第一未到达数据包的数量达到所述丢包检测阈值时,基于所述当前数据块的各个数据包的标识以及所述第一已接收数据包的标识,确定所述当前数据块的第一未到达数据包。
4.根据权利要求1所述的方法,其特征在于,所述获取所述第一未到达数据包,以获得所述当前数据块的数据包,包括:
获取所述第一未到达数据包的发送时间以及当前时间,确定所述第一未到达数据包的飞行时间;
基于所述飞行时间与飞行时间阈值的大小关系,确定获取所述第一未到达数据包的方式,并利用所述第一未达到数据的获取方式获取所述未到达数据包,以获得所述当前数据块的数据包。
5.根据权利要求4所述的方法,其特征在于,所述基于所述飞行时间与飞行时间阈值的大小关系,确定获取所述第一未到达数据包的方式,并利用所述未达到数据的获取方式获得所述第一未到达数据包,以获得所述当前数据块的数据包,包括:
在所述第一未到达数据包中筛选出飞行时间大于所述飞行时间阈值的第二未到达数据包以及飞行时间小于所述飞行时间阈值的第三未到达数据包;
触发所述第二未到达数据包的重传;
降低所述第三未到达数据包的重传超时时间,并基于降低后的重传超时时间获取所述第三未到达数据包。
6.根据权利要求5所述的方法,其特征在于,所述飞行时间阈值的确定方式包括:
基于当前业务类型确定所述飞行时间阈值;
或者,
获取所述历史数据块的过度重传系数,以确定所述飞行时间阈值,所述飞行时间阈值与所述过度重传系数正相关,所述过度重传系数用于表示所述历史数据块中重复收到同一重传数据包的比例。
7.根据权利要求5所述的方法,其特征在于,所述触发所述第二未到达数据包的重传,包括:
获取各个传输路径的丢包率;
基于所述丢包率最低的传输路径重传所述第二未到达数据包。
8.根据权利要求5所述的方法,其特征在于,所述降低所述第三未到达数据包的重传超时时间,包括:
获取当前带宽利用率以及单个连接的往返时间;
计算所述重传超时时间与所述单个连接的往返时间的差值,并计算所述差值与所述当前带宽利用率的乘积;
基于所述乘积与所述单个连接的往返时间之和,确定降低后的重传超时时间。
9.根据权利要求2所述的方法,其特征在于,所述获取所述第一未到达数据包,以获得所述当前数据块的数据包,还包括:
当所述当前丢包检测阈值大于所述丢包检测阈值下限时,基于所述当前数据块的丢包率以及所述当前丢包检测阈值的乘积,对所述当前丢包检测阈值进行更新,确定更新后的丢包检测阈值;
当基于所述当前数据块的第二已接收数据包的数量确定满足更新后的当前丢包检测阈值时,对所述当前数据块进行丢包检测,确定所述当前数据块的第四未到达数据包;
获取所述第四未到达数据包,以获得所述当前数据块的数据包。
10.一种数据传输装置,其特征在于,包括:
第一获取模块,用于获取当前数据块的大小以及历史数据块的历史丢包率,所述当前数据块包括至少一个数据包;
第一确定模块,用于基于所述当前数据块的大小以及所述历史丢包率,确定所述当前数据块的当前丢包检测阈值;
第二确定模块,用于当基于所述当前数据块的第一已接收数据包的数量确定满足所述当前丢包检测阈值时,对所述当前数据块进行丢包检测,确定所述当前数据块的第一未到达数据包;
第二获取模块,用于获取所述第一未到达数据包,以获得所述当前数据块的数据包。
11.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1-9中任一项所述的数据传输方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使计算机执行权利要求1-9中任一项所述的数据传输方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211489158.0A CN115866095A (zh) | 2022-11-25 | 2022-11-25 | 数据传输方法、装置、电子设备及存储介质 |
PCT/CN2023/132903 WO2024109734A1 (zh) | 2022-11-25 | 2023-11-21 | 数据传输方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211489158.0A CN115866095A (zh) | 2022-11-25 | 2022-11-25 | 数据传输方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115866095A true CN115866095A (zh) | 2023-03-28 |
Family
ID=85666367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211489158.0A Pending CN115866095A (zh) | 2022-11-25 | 2022-11-25 | 数据传输方法、装置、电子设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115866095A (zh) |
WO (1) | WO2024109734A1 (zh) |
-
2022
- 2022-11-25 CN CN202211489158.0A patent/CN115866095A/zh active Pending
-
2023
- 2023-11-21 WO PCT/CN2023/132903 patent/WO2024109734A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024109734A1 (zh) | 2024-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220014312A1 (en) | Data transmission method and apparatus | |
CN101189840B (zh) | 数据单元中继设备和控制该数据单元中继设备的方法 | |
US8537664B2 (en) | Method and system for accelerating transmission of data between network devices | |
WO2017050216A1 (zh) | 一种报文传输方法及用户设备 | |
US20040190540A1 (en) | Transmission control method and system | |
US8825891B2 (en) | Method and device for message retransmission | |
CN102891883B (zh) | 无线传输控制协议处理方法和设备 | |
CN108234087B (zh) | 数据传输方法及发送端 | |
CN106612284B (zh) | 一种流数据的传输方法和装置 | |
EP2158700B1 (en) | Method for enhancing of controlling radio resources and transmitting status report in mobile telecommunications system and receiver of mobile telecommunications system | |
US7593338B2 (en) | Congestion control method and system for reducing a retransmission timeout count in a transmission control protocol | |
CN109981385B (zh) | 一种实现丢包检测的方法、装置和系统 | |
CN110557677A (zh) | 一种视频传输的方法及装置 | |
WO2016201904A1 (zh) | 一种基于tcp的数据传输方法及装置 | |
CN102694631B (zh) | 一种用于控制数据传输的方法和装置 | |
CN102217249B (zh) | 通信装置和通信方法 | |
CN109560897B (zh) | 一种tcp重传方法和装置 | |
CN113708895B (zh) | 数据传输方法、装置及电子设备 | |
CN113765626B (zh) | 一种移动通信系统的数据传输方法和装置 | |
US11503500B2 (en) | Method and a user equipment (UE) for transport layer optimization using a preemptive cross layer signaling | |
EP1435704B1 (en) | Transmission control method and system | |
JP7067544B2 (ja) | 通信システム、通信装置、方法およびプログラム | |
EP3939191B1 (en) | Device and method for delivering acknowledgment in network transport protocols | |
CN110048955A (zh) | 拥塞控制方法、装置、计算机设备及存储介质 | |
CN117040692A (zh) | 一种业务数据传输的方法及装置、电子设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |