数据包重传方法、系统和存储介质与流程

文档序号:24979396发布日期:2021-05-07 22:53阅读:135来源:国知局
数据包重传方法、系统和存储介质与流程

本发明涉及视频通信技术领域,尤其是一种数据包重传方法、系统和存储介质。



背景技术:

随着实时音频业务和智能终端的普及,用户对弱网环境下的实时音频业务需求越来越大。而弱网环境下容易导致数据包丢失,从而影响实时音频的体验。

目前解决丢包问题常用的方法是采用tcp传输协议,这类方法在少量丢包的场景下,可以很好的解决丢包问题,但是,当丢包率大于一定比例的网络环境上,tcp协议的重传机制则不能及时地重传丢失包,从而造成音视频长时间卡顿,造成用户体验好感降低。



技术实现要素:

本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种数据包重传方法、系统和存储介质,能够有效提高用户对实时视频的体验好感。

根据本发明的第一方面实施例的一种数据包重传方法,包括以下步骤:

检测接收到的数据包状态;

当数据包状态为丢失状态,启动计时器;

当所述计时器的计算时长大于等于第一预设时长,生成第一重传请求;

将所述第一重传请求发送到发送端,所述发送端根据所述第一重传请求重传丢失的数据包;

当所述计时器的计算时长大于等于第二预设时长且所述数据包状态为丢失状态,生成第二重传请求;

将所述第二重传请求发送到发送端,所述发送端根据所述第二重传请求重传丢失的数据包。

根据本发明实施例的数据包重传方法,至少具有如下有益效果:本发明实施例通过在检测到数据包状态为丢失状态,启动计时器,并在计时器的计算时长大于等于第一预设时长,生成第一重传请求,使发送端根据第一重传请求重传丢失的数据包,接着在计时器的计算时长大于等于第二预设时长且上述丢失的数据包状态仍然为丢失状态,生成第二重传请求,使发送端根据第二重传请求重传丢失的数据包,以避免发送端重复已接收到的数据包,同时又能使发送端及时重传丢失的数据包,从而避免音视频长时间卡顿,有效提高用户对实时视频的体验好感。

根据本发明的一些实施例,所述第一重传请求和所述第二重传请求均包括数据包序号信息,所述第一重传请求和所述第二重传请求的数据包序号信息相同。

根据本发明的第二方面实施例的一种数据包重传方法,包括以下步骤:

当接收到接收端发送的第一重传请求,根据所述第一重传请求向所述接收端重传数据包,所述数据包为接收端检测到的数据包状态为丢失状态的数据包;

当接收到接收端发送的第二重传请求,根据所述第二重传请求向所述接收端重传数据包;

其中,所述第一重传请求为所述接收端在检测到数据包状态为丢失状态,启动的计时器,并在计时器的计算时长大于等于第一预设时长,生成的重传请求;所述第二重传请求为在计时器的计算时长大于等于第二预设时长且接收端检测到的数据包状态为丢失状态,生成的重传请求。

根据本发明实施例的数据包重传方法,至少具有如下有益效果:本发明实施例通过在接收到接收端在检测到数据包状态为丢失状态启动的计时器,并在计时器的计算时长大于等于第一预设时长生成的重传请求时,根据第一重传请求向接收端重传数据包状态为丢失状态的数据包,接着在接收到接收端在计时器的计算时长大于等于第二预设时长且接收端检测到的数据包状态为丢失状态时生成的重传请求时,根据第二重传请求向接收端重传数据包状态为丢失状态的数据包,以避免发送端重复已接收到的数据包,同时又能使发送端及时重传丢失的数据包,从而避免音视频长时间卡顿,有效提高用户对实时视频的体验好感。

根据本发明的一些实施例,所述当接收到接收端发送的第一重传请求,根据所述第一重传请求向所述接收端重传数据包,包括:

当接收到接收端发送的第一重传请求,获取数据包丢失率;

当所述数据包丢失率位于第一预设范围,根据所述第一重传请求向所述接收端重传一次数据包;

当所述数据包丢失率位于第二预设范围,根据所述第一重传请求向所述接收端重传两次数据包。

根据本发明的一些实施例,所述当接收到接收端发送的第二重传请求,根据所述第二重传请求向所述接收端重传数据包,其具体为:

当接收到接收端发送的第二重传请求,根据所述第二重传请求向所述接收端重传若干次数据包,所述若干次大于两次。

根据本发明的一些实施例在向所述接收端重传两次或两次以上数据包时,相邻两次重传数据包的时间间隔为预设时间间隔。

根据本发明的第三方面实施例的一种数据包重传方法,包括以下步骤:

接收端在检测到数据包状态为丢失状态,启动计时器;

接收端确定所述计时器的计算时长大于等于第一预设时长,生成第一重传请求;

发送端根据所述第一重传请求向接收端重传丢失的数据包;

接收端在计时器的计算时长大于等于第二预设时长且检测到所述数据包状态为丢失状态,生成第二重传请求;

发送端根据所述第二重传请求向接收端重传丢失的数据包。

根据本发明实施例的数据包重传方法,至少具有如下有益效果:本发明实施例通过接收端在检测到数据包状态为丢失状态,启动计时器,并确定计时器的计算时长大于等于第一预设时长,生成第一重传请求;接着发送端根据第一重传请求向接收端重传丢失的数据包;然后接收端在计时器的计算时长大于等于第二预设时长且检测到所述数据包状态为丢失状态,生成第二重传请求,使发送端根据第二重传请求向接收端重传丢失的数据包,以避免发送端重复已接收到的数据包,同时又能使发送端及时重传丢失的数据包,从而避免音视频长时间卡顿,有效提高用户对实时视频的体验好感。

根据本发明的第四方面实施例的一种数据包重传系统,包括接收端和发送端,所述接收端包括:

检测模块,用于检测接收到的数据包状态;

启动模块,用于当数据包状态为丢失状态,启动计时器;

第一生成模块,用于当所述计时器的计算时长大于等于第一预设时长,生成第一重传请求;

第一发送模块,用于将所述第一重传请求发送到发送端,所述发送端根据所述第一重传请求重传丢失的数据包;

第二生成模块,用于当所述计时器的计算时长大于等于第二预设时长且所述数据包状态为丢失状态,生成第二重传请求;

第二发送模块,用于将所述第二重传请求发送到发送端,所述发送端根据所述第二重传请求重传丢失的数据包。

根据本发明实施例的数据包重传方法,至少具有如下有益效果:本发明实施例为与第一方面实施例提供的方法实施例对应的系统实施例,第一方面实施例提供的方法实施例的有益效果,本系统实施例均能实现。

根据本发明的第五方面实施例的一种数据包重传系统,包括接收端和发送端,所述发送端包括:

第一重传模块,用于当接收到接收端发送的第一重传请求,根据所述第一重传请求向所述接收端重传数据包,所述数据包为接收端检测到的数据包状态为丢失状态的数据包;

第二重传模块,用于当接收到接收端发送的第二重传请求,根据所述第二重传请求向所述接收端重传数据包;

其中,所述第一重传请求为所述接收端在检测到数据包状态为丢失状态,启动的计时器,并在计时器的计算时长大于等于第一预设时长,生成的重传请求;所述第二重传请求为在计时器的计算时长大于等于第二预设时长且接收端检测到的数据包状态为丢失状态,生成的重传请求。

根据本发明实施例的数据包重传方法,至少具有如下有益效果:本发明实施例为与第二方面实施例提供的方法实施例对应的系统实施例,第二方面实施例提供的方法实施例的有益效果,本系统实施例均能实现。

根据本发明的第六方面实施例的一种存储介质,其中存储有处理器可执行的程序,所述处理器可执行的程序在由处理器执行时用于实现上述的数据包重传方法。

根据本发明实施例的数据包重传方法,至少具有如下有益效果:本发明实施例在由处理器执行时实现上述的数据包重传方法,上述方法实施例所达到的效果,本实施例均能达到。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

下面结合附图和实施例对本发明做进一步的说明,其中:

图1为本发明实施例提供的第一种数据包重传方法的流程图;

图2为本发明实施例提供的第二种数据包重传方法的流程图;

图3为本发明实施例提供的第三种数据包重传方法的流程图;

图4为本一种具体实施例的乱序网络包接收序列示意图;

图5为发明实施例提供的判断丢包策略示意图;

图6为一种具体实施例的接收端重传请求策略图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。

在本发明的描述中,若干的含义是一个以上,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。

本发明的描述中,除非另有明确的限定,设置、设定、预设等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。

本发明的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

参照图1,本发明实施例提供了一种数据包重传方法,本实施例应用于数据传输过程中的接收端,该接收端可以是终端、平台、平台对应的处理器或者服务器等。其中,接收端与发送端可以是无线通信。在执行过程中,本实施例包括以下步骤:

s11、检测接收到的数据包状态。由于在视频数据中,接收端接收到的数据包状态包括丢失状态和正常接收状态,通过对接收到的数据包状态进行检测,以保证后续的处理过程的时效性。

s12、当数据包状态为丢失状态,启动计时器。该计时器可以是预先在接收端设置的用于计时用的实体器件或者某一段程序。当启动该计时器后,该计时器即进入计时状态。

s13、当计时器的计算时长大于等于第一预设时长,生成第一重传请求。其中,第一预设时长可以为数据从接收端到发送端的往返时长的1/2。也就是当计算时长大于等于1/2往返时长时,接收端生成第一重传请求。

s14、将第一重传请求发送到发送端,使发送端根据第一重传请求重传丢失的数据包,该数据包为步骤s12确定的丢失的数据包。

s15、当计时器的计算时长大于等于第二预设时长且数据包状态为丢失状态,生成第二重传请求。其中,第二预设时长可以为数据从接收端到发送端的往返时长,即当计算时长大于等于往返时长时,接收端生成第二重传请求。

在一些实施例中,第一重传请求和第二重传请求均包括数据包序号信息,第一重传请求和所述第二重传请求的数据包序号信息相同,以避免发送端在接收到多个相同的重传请求时,触发不必要的重传占用额外带宽。

在一些实施例中,为保证重传的时效性,同一个数据包设定只能请求两次重传。

s16、将第二重传请求发送到发送端,使发送端根据第二重传请求重传丢失的数据包,以避免发送端重复已接收到的数据包,同时又能使发送端及时重传丢失的数据包,从而避免音视频长时间卡顿,有效提高用户对实时视频的体验好感。

参照图2,本发明实施例提供了一种数据包重传方法,本实施例应用于数据的发送端,该发送端可以是终端、平台、平台对应的处理器或者服务器等。其中,接收端与发送端可以是无线通信。在执行过程中,本实施例包括以下步骤:

s21、当接收到接收端发送的第一重传请求,根据第一重传请求向接收端重传数据包。第一重传请求为接收端在检测到数据包状态为丢失状态,启动的计时器,并在计时器的计算时长大于等于第一预设时长,生成的重传请求。第一预设时长可以为数据从接收端到发送端的往返时长的1/2。也就是当计算时长大于等于1/2往返时长时,接收端生成第一重传请求。

s22、当接收到接收端发送的第二重传请求,根据第二重传请求向接收端重传数据包;第二重传请求为在计时器的计算时长大于等于第二预设时长且接收端检测到的数据包状态为丢失状态,生成的重传请求。第二预设时长可以为数据从接收端到发送端的往返时长,即当计算时长大于等于往返时长时,接收端生成第二重传请求。其中,数据包为接收端检测到的数据包状态为丢失状态的数据包。

在一些实施例中,步骤当接收到接收端发送的第一重传请求,根据第一重传请求向接收端重传数据包,可包括以下步骤:

当接收到接收端发送的第一重传请求,获取数据包丢失率;该数据包丢失率由网络原始丢包率确定。

当数据包丢失率位于第一预设范围,根据第一重传请求向接收端重传一次数据包;

当数据包丢失率位于第二预设范围,根据第一重传请求向接收端重传两次数据包。

在本实施例中,为了降低时延和带宽冗余的影响,可将第一预设范围设定为小于20%,第二预设范围设定为大于等于20%。因此,当计时器的计算时长大于等于第一预设时长且数据包丢失率小于20%时,接收端请求发送端重传一次丢失的数据包;当计时器的计算时长大于等于第一预设时长且数据包丢失率大于等于20%时,接收端请求发送端重传两次丢失的数据包。

在另一些实施例中,当接收到接收端发送的第二重传请求,根据第二重传请求向接收端重传若干次数据包,其中若干次为大于两次。由于超过第二预设时长的概率较小,因此,即使重传多次数据包,造成的带宽冗余也不会太大。

在一些实施例中,为了使重传的数据包尽可能的到达接收端,相邻两次重传数据包的时间间隔为预设时间间隔,该预设时间间隔可以设置我5ms,具体也可以根据实际情况调整。

参照图3,本发明实施例提供了一种数据包重传方法。本实施例应用于接收端与发送端的交互过程。具体地,本实施例包括以下步骤:

s31、接收端在检测到数据包状态为丢失状态,启动计时器。由于在视频数据中,接收端接收到的数据包状态包括丢失状态和正常接收状态,通过对接收到的数据包状态进行检测,以保证后续的处理过程的时效性。同时,当启动该计时器后,该计时器即进入计时状态。

s32、接收端确定计时器的计算时长大于等于第一预设时长,生成第一重传请求。其中,第一预设时长可以为数据从接收端到发送端的往返时长的1/2。也就是当计算时长大于等于1/2往返时长时,接收端生成第一重传请求,从而避免发生因接收端对丢失的数据包判断错误导致数据包重传的现象。

s33、发送端根据第一重传请求向接收端重传丢失的数据包。

s34、接收端在计时器的计算时长大于等于第二预设时长且检测到数据包状态为丢失状态,生成第二重传请求。其中,第二预设时长可以为数据从接收端到发送端的往返时长,即当计算时长大于等于往返时长时,接收端生成第二重传请求。本步骤是在确定步骤s33中,接收端未接收到发送端重新发送的数据包后才执行。

s35、发送端根据第二重传请求向接收端重传丢失的数据包。

在一些实施例中,将图3所示实施例应用于实际的应用过程中,为保证数据包重传的时效性,设定同一个数据包最多请求两次重传。具体地,应用过程包括以下步骤:

步骤一、接收端在检测到数据包不连续时,为防止因乱序导致的数据包延迟,启动定时器t0,等待数据包到达,t0时间设置为1/2往返时间rtt,其中,rtt时间由rtcp协议获得。

在本步骤中,当数据包丢失时,接收端必须能够及时检测到并且发起重传请求,以最大限度的减少时延。而检测丢包的方法不能简单地认为后面序号收到时,前面的序号没收到,则前面的序号丢失。这是由于存在如图4所示的乱序的网络包,可能导致接收端误以为数据包丢失。因此,在本步骤通过等待一个时间,若等待时间还没有接收到,则判定该数据包丢失。其中,将等待时间定义为t0,长度初始值设置为10ms,根据实时探测的rtt时间变化,更新为1/2rtt时间。因此,判断丢包的方法如图5所示。

步骤二、当t0大于等于1/2rtt,即认为数据包丢失,向发送端发送第一重传请求,并启动定时器t1,开始等待重传的数据包到达,第一重传请求可以携带多个请求包序号信息。

步骤三、为保证重传请求能够到达发送端,接收端重复向发送端发送重传请求,直到数据包到达或者t1大于等于rtt。

其中,重传请求发送的间隔根据一定算法递增;同时,为避免发送端收到多个相同的重传请求,触发不必要的重传占用额外带宽,每个重传请求包在remb消息接口基础上增加包序号字段,同一组请求的包序号相同;为保证更加快速地重传丢失的数据包,根据丢包率,请求发送端连续重发n次,该信息在remb消息接口上增加字段;以及为避免已经收到的重传的数据包继续被发送端重传,接收端在重传请求中携带证实字段,对收到的重传包予以证实。

步骤四、发送端收到重传请求时,判断该重传请求序号是否重复,若重复,则忽略。

步骤五、发送端根据重传请求重传的次数重复重传丢失包,重传的间隔固定为5毫秒。

步骤六、发送端根据证实字段,立即停止还在重传的过程。

步骤七,当t1大于等于rtt,向发送端发送第二重传请求,为保证包尽可能收到,根据丢包率计算合理的重传次数,将丢失的概率降至1/10000。其中,t1取值为动态探测的rtt。

在一些实施例中,由于重传请求到达发送端和重传响应包到达接收端需要经过的时间为rtt时间,重传请求的次数越多则会造成越大的时延。为尽量降低时延,可设定重传请求一次,发送端连续发送多次,从而又会造成较大的带宽冗余。

在一些实施例中,综合考虑时延和带宽冗余的影响,设定t0超时,丢包率小于20%,请求发送端只发送一次,丢包率超过20%,请求发送到重传2次。t1超时,请求发送端发送n次。由于t1超时的概率较小,即使重传多次,造成的带宽冗余也不会太大。在具体实施例中,假设网络丢包率固定w=15%,则t1超时概率为2.25%。

其中,n的取值由网络原始丢包率w决定,即接收端应该实时统计当前的原始丢包率,以确定n的取值。n的计算方法如公式1所示:

即t1重传失败率降低为万分之一。

在一些实施例中,将如图6所示的接收端重传请求方法应用于不同的丢包率情况下,得到如表1所示的重传次数和带宽冗余情况理论值:

表1

其中,rdd=pt0*n1+pt1*n2,pt0为t0超时概率,pt1为t1超时概率。

在一些实施例中,发送端在最开始发送数据包时,需要缓存一段时间该数据包,以便在收到重传请求时将数据包重传给接收端。其中,数据包缓存空间长度h采用公式2计算:

其中,b为编码码率,即缓存3s的视频包。由于视频数据包的序号由rtp协议栈打包时自动生成,接收端根据序号组帧,重传的数据包序号不能变。因此发送端缓存的是包括rtp包头的完整的rtp包。

发送端收到重传请求时即可进行一次重传,若该重传请求中的重传次数r大于1,则需要发送多次。为保证重传包尽可能到达接收端,重传包不能连续发送。因此需要通过单独线程定时扫描并发送该包,直到发送r次。

在一些实施例中,在数据传输过程中,重传请求包和i帧请求包也可能丢失。这两种包的网络开销并不大,然而造成的影响却很恶劣。因此对这两种包采用较大冗余的方式进行传输,保证请求包不丢失。因此发送端必须具备识别冗余请求包的能力,以避免响应相同的请求对网络造成额外的开销。可给每个请求加上特殊标记,相同的请求,其标记也相同,从而发送端可以判断该请求是否已经接收过,是则忽略不处理。

本发明实施例提供了一种数据包重传系统,包括接收端和发送端,所述接收端包括:

检测模块,用于检测接收到的数据包状态;

启动模块,用于当数据包状态为丢失状态,启动计时器;

第一生成模块,用于当所述计时器的计算时长大于等于第一预设时长,生成第一重传请求;

第一发送模块,用于将所述第一重传请求发送到发送端,所述发送端根据所述第一重传请求重传丢失的数据包;

第二生成模块,用于当所述计时器的计算时长大于等于第二预设时长且所述数据包状态为丢失状态,生成第二重传请求;

第二发送模块,用于将所述第二重传请求发送到发送端,所述发送端根据所述第二重传请求重传丢失的数据包。

本发明图1所示方法实施例的内容均适用于本系统实施例,本系统实施例所具体实现的功能与图1所示方法实施例相同,并且达到的有益效果与图1所示方法达到的有益效果也相同。

本发明实施例提供了一种数据包重传系统,包括接收端和发送端,所述发送端包括:

第一重传模块,用于当接收到接收端发送的第一重传请求,根据所述第一重传请求向所述接收端重传数据包,所述数据包为接收端检测到的数据包状态为丢失状态的数据包;

第二重传模块,用于当接收到接收端发送的第二重传请求,根据所述第二重传请求向所述接收端重传数据包;

其中,所述第一重传请求为所述接收端在检测到数据包状态为丢失状态,启动的计时器,并在计时器的计算时长大于等于第一预设时长,生成的重传请求;所述第二重传请求为在计时器的计算时长大于等于第二预设时长且接收端检测到的数据包状态为丢失状态,生成的重传请求。

本发明图2所示方法实施例的内容均适用于本系统实施例,本系统实施例所具体实现的功能与图2所示方法实施例相同,并且达到的有益效果与图2所示方法达到的有益效果也相同。

此外,本发明实施例还提供了一种存储介质,其中存储有处理器可执行的程序,所述处理器可执行的程序在由处理器执行时用于实现上述的数据包重传方法。

上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。此外,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。

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