CN112822117B - 一种实时流媒体传输的拥塞检测方法及装置 - Google Patents
一种实时流媒体传输的拥塞检测方法及装置 Download PDFInfo
- Publication number
- CN112822117B CN112822117B CN202110016982.3A CN202110016982A CN112822117B CN 112822117 B CN112822117 B CN 112822117B CN 202110016982 A CN202110016982 A CN 202110016982A CN 112822117 B CN112822117 B CN 112822117B
- Authority
- CN
- China
- Prior art keywords
- time
- delay
- transmission
- packet
- sum
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/11—Identifying congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
- H04L43/087—Jitter
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种实时流媒体传输的拥塞检测方法及装置,所述方法包括:接收当前数据包,并判断当前时间是否处于采样时间,在当前时间为采样时间时,获取当前数据包的发包时间以及收包时间,根据发包时间以及收包时间,计算传输延时,将收包时间以及传输延时,作为当前采样数据组存入环型队列,环型队列中存储有一个或多个采样数据组,计算环型队列中所有收包时间之和、所有传输延时之和、所有收包时间的平方之和,计算环型队列中每个采样数据的收包时间与传输延时的乘积,并计算所有收包时间与传输延时的乘积之和,在环型队列中采样数据组的数量等于预先设置的数量值时,进而计算斜率A,以判断实时流媒体传输的拥堵状态。
Description
技术领域
本申请涉及流媒体传输技术领域,尤其涉及一种实时流媒体传输的拥塞检测方法及装置。
背景技术
在基于TCP的可靠传输中,拥塞控制算法是必不可少的组件,优秀的拥塞控制算法决定着TCP传输的性能,在拥塞控制前,需要进行拥塞检测,现有的拥塞判断方法都是基于抖动值,没有根据网络整体拥塞状态判断,判断结果不准确。
发明内容
本申请实施例所要解决的技术问题在于,解决现有实时流媒体传输的丢包检测需要进行时钟同步,且判断结果不准确的问题。
为解决上述问题,本申请实施例提供一种实时流媒体传输的拥塞检测方法,应用于接收端,所述方法包括:
接收当前数据包,并判断收包时间是否处于采样时间;
在所述收包时间为采样时间时,获取当前数据包的发包时间以及收包时间;
根据所述发包时间以及收包时间,计算传输延时;
根据相邻两个数据包的收包时间差以及发包时间差,计算出当前抖动值;
将所述收包时间以及所述传输延时,作为当前采样数据组存入环型队列,所述环型队列中存储有一个或多个采样数据组;
计算所述环型队列中所有收包时间之和、所有传输延时之和、所有收包时间的平方之和,计算所述环型队列中每个采样数据的收包时间与传输延时的乘积,并计算所有收包时间与传输延时的乘积之和;
在所述环型队列中采样数据组的数量等于预先设置的数量值时,通过所述环型队列中所有收包时间之和、所述所有传输延时之和、所述所有收包时间的平方之和以及所述所有收包时间与传输延时的乘积之和,计算斜率A;
根据所述斜率A,判断所述实时流媒体传输的拥堵状态。
进一步的,所述根据所述发包时间以及收包时间,计算传输延时的步骤后,包括:
判断预先存储的延时大幅增大次数的数值是否大于1;
在所述延时大幅增大次数的数值小于1时,比较所述传输延时与上一次存储的传输延时的大小关系,在所述传输延时大于所述上一次存储的传输延时,且所述传输延时与所述上一次存储的传输延时的差值大于预先设置的第一差值阈值时,记录跳变前的延时值为所述上一次存储的传输延时,且将所述延时大幅增大次数记录为1。
进一步的,所述根据所述发包时间以及收包时间,计算传输延时的步骤后,包括:
判断预先存储的延时大幅增大次数的数值是否大于1;
在所述延时大幅增大次数的数值大于1时,比较所述传输延时与预先记录的跳变前的延时值的大小关系,在所述传输延时大于所述预先记录的跳变前的延时值,且所述传输延时与所述预先记录的跳变前的延时值的差值大于预先设置的第一差值阈值时,所述延时大幅增大次数加1,在所述传输延时大于所述预先记录的跳变前的延时值,且所述传输延时与所述预先记录的跳变前的延时值的差值小于预先设置的第二差值阈值时,所述延时大幅增大次数减1。
进一步的,所述根据所述发包时间以及收包时间,计算传输延时的步骤后,包括:
判断所述延时大幅增大次数的数值与预先存储的次数阈值的大小关系;
在所述延时大幅增大次数大于预先存储的次数阈值时,清空所述环型队列中的所有采样数据,并且将所述所有收包时间之和、所述所有传输延时之和、所述所有收包时间的平方之和、所述所有收包时间与传输延时的乘积之和置为0。
进一步的,所述根据所述发包时间以及收包时间,计算传输延时的步骤后,包括:
根据所述传输延时以及上一次存储的平滑延时,计算当前平滑延时;
根据相邻两个数据包的收包时间差以及发包时间差,计算出当前抖动值;
根据所述当前抖动值以及上一次存储的平滑抖动值,计算当前平滑抖动值。
进一步的,所述根据所述斜率A,判断所述实时流媒体传输的拥堵状态后,包括:
降低数据包中的冗余包,减少重传机制等方式降低码流,并实时监测实时流媒体传输是否解除拥堵,在检测到所述实时流媒体传输拥塞解除后,根据丢包率加入冗余包或重启重传机制。
进一步的,所述根据所述斜率A,判断所述实时流媒体传输的拥堵状态,包括:
在所述斜率A大于预先设置的第一拥堵阈值时,所述实时流媒体传输为拥堵状态。
一种实时流媒体传输的拥塞检测装置,其特征在于,应用于接收端,所述装置包括:
数据包接收模块,用于接收当前数据包,并判断当前时间是否处于采样时间;
时间获取模块,用于在所述当前时间为采样时间时,获取当前数据包的发包时间以及收包时间;
传输延时计算模块,用于根据所述发包时间以及收包时间,计算传输延时;
抖动计算模块,用于根据相邻两个数据包的收包时间差以及发包时间差,计算出抖动值;
采样数据组存储模块,用于将所述收包时间以及所述传输延时,作为当前采样数据组存入环型队列,所述环型队列中存储有一个或多个采样数据组;
环型队列数据计算模块,用于计算所述环型队列中所有收包时间之和、所有传输延时之和、所有收包时间的平方之和,计算所述环型队列中每个采样数据的收包时间与传输延时的乘积,并计算所有收包时间与传输延时的乘积之和;
斜率计算模块,用于在所述环型队列中采样数据组的数量等于预先设置的数量值时,通过所述环型队列中所有收包时间之和、所述所有传输延时之和、所述所有收包时间的平方之和、以及所述所有收包时间与传输延时的乘积之和,计算斜率A;
拥堵状态判断模块,用于根据所述斜率A,判断所述实时流媒体传输的拥堵状态。
一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述实施例中一种实时流媒体传输的拥塞检测方法的步骤。
一种电子装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述实施例中一种实时流媒体传输的拥塞检测方法的步骤。
与现有技术相比,本实施例一种实时流媒体传输的拥塞检测方法,由于一旦发生拥塞,在拥塞初期,会出现延时持续上升(或振荡上升)的情况,上升幅度取决于拥塞程度的理论,通过发包时间以及收包时间计算流媒体传输的延时的斜率,进行实时流媒体传输的拥塞检测,可以反映网络整体拥塞状态,判断结果准确,在网络背景环境叠加了丢包因素的场景下,依旧能识别到拥塞行为及退出拥塞行为。
附图说明
图1是一实施例提供的一种实时流媒体传输的拥塞检测方法的步骤流程图;
图2是一实施例提供的一种实时流媒体传输的拥塞类型的示意图;
图3是一实施例提供的另一种实时流媒体传输的拥塞类型的示意图;
图4是一实施例提供的一种实时流媒体传输的拥塞检测的环型队列的结构示意图;
图5是一实施例提供的另一种实时流媒体传输的拥塞检测的环型队列的结构示意图;
图6是一实施例提供的一种实时流媒体传输的拥塞检测类型的流程示意图;
图7是又一实施例提供的一种实时流媒体传输的拥塞检测装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在基于TCP的可靠传输中,拥塞控制算法是必不可少的组件,优秀的拥塞控制算法决定着TCP传输的性能。
而在实时流媒体领域,一般采用的是基于UDP的非可靠传输。由于UDP的不可靠,在复杂的互联网中,可能会出现丢包的情况。现有的抗丢包方法主要有前向纠错技术(FEC)及请求重传技术(NACK)。这两种技术单独使用或组合使用都能够消灭或缓解丢包率,然而代价是提高了带宽成本。而且当带宽不足(限速场景)时,FEC/NACK方案引入的带宽成本会进一步恶化传输质量。
举个例子,在网络无限速或限速为10mbps的场景下,如果应用程序以原始码率1mbps发送,当检测到丢包时,应用程序可以提高FEC冗余度或采用重传技术,此时,发送码率可能提高到1.1mbps(或者更高),从而使接收端能够通过相应的还原技术得到完整的原始数据。
而另一个负面例子则是,在限速为1mbps的网络环境下,如果应用程序以1.1mbps的码率发送数据,则必然出现丢包的现象。此时如果应用程序仅仅简单的因为丢包而施加了FEC冗余包或采用重传技术,则不但起不到抗丢包的效果,反而会进一步恶化传输质量。
如果要避免上述的负面例子,也就是说,程序需要有一种手段来识别丢包是因为带宽不足(网络限速)引起的,还是其它原因,从而来调整FEC/NACK策略。其中一种方案就是在检测到拥塞后,降低原始码流,使得原始码流+冗余码流保持在网络限速带宽值内,从而达到既能抗丢包,又不会造成负面效果的作用。
所以,在实时流媒体传输领域,也引入了拥塞控制技术。拥塞控制技术包括拥塞检测及检测到拥塞后的控制策略。现有的拥塞判断方法都是基于抖动值,没有根据网络整体拥塞状态判断,判断结果不准确。
为解决上述问题,如图1所示,是一实施例提供的一种实时流媒体传输的拥塞检测方法的步骤流程图,应用于接收端,所述方法包括如下步骤:
步骤101,接收当前数据包,并判断收包时间是否处于采样时间;
在进行实时流媒体传输时,发送端可以发送当前数据包,接收端可以接收该当前数据包,并判断接收该当前数据包的收包时间是否处于采样时间;采样时间可以根据预先设置的规定选取,具体的,根据预设时间间隔选取,如在进行实时流媒体传输后,每10ms选取一个采样时间。
步骤102,在所述收包时间为采样时间时,获取当前数据包的发包时间以及收包时间;
在收包时间为采样时间时,接收端可以获取当前数据包的收包时间,并且从当前数据包中根据协议获取当前数据包的发包时间。
步骤103,根据所述发包时间以及收包时间,计算传输延时;
传输延时=收包时间-发包时间。
步骤104,根据相邻两个数据包的收包时间差以及发包时间差,计算出当前抖动值;
抖动=收包时间差-发包时间差。
网络的抖动可能面临两种情况:
情况一:网络经历一次偶发的较大抖动,之后延时又回归原来的水平,如图2所示;
在这种情况下,由于拟合函数本身具备一定的滤波效应,个别异常点并不会对斜率造成过多的干扰,可以忽略不计,无需特别处理。
情况二:网络可能从一个低延时的网络切换到另一个高延时的网络,如图3所示;
在这种情况下,随着时间的推移,低延时的点数会越来越少,高延时的点数会越来越多,所以也会出现线性拟合出来的斜率越来越大,会造成误判为拥塞状态。
为了解决上述问题,在一实施例中,在步骤103后,包括:
步骤S11,判断预先存储的延时大幅增大次数的数值是否大于1;
步骤S12,在所述延时大幅增大次数的数值小于1时,比较所述传输延时与上一次存储的传输延时的大小关系,在所述传输延时大于所述上一次存储的传输延时,且所述传输延时与所述上一次存储的传输延时的差值大于预先设置的第一差值阈值时,记录跳变前的延时值为所述上一次存储的传输延时,且将所述延时大幅增大次数记录为1。
在一实施例中,在步骤103后,包括:
步骤S21,判断预先存储的延时大幅增大次数的数值是否大于1;
步骤S22,在所述延时大幅增大次数的数值大于1时,比较所述传输延时与预先记录的跳变前的延时值的大小关系,在所述传输延时大于所述预先记录的跳变前的延时值,且所述传输延时与所述预先记录的跳变前的延时值的差值大于预先设置的第一差值阈值时,所述延时大幅增大次数加1,在所述传输延时大于所述预先记录的跳变前的延时值,且所述传输延时与所述预先记录的跳变前的延时值的差值小于预先设置的第二差值阈值时,所述延时大幅增大次数减1。
步骤S23,判断所述延时大幅增大次数的数值与预先存储的次数阈值的大小关系;
步骤S24,在所述延时大幅增大次数大于预先存储的次数阈值时,重置所述环型队列、所述环型队列中所有收包时间之和、所述所有传输延时之和、所述所有收包时间的平方之和以及所述所有收包时间与传输延时的积的和。
在本申请实施例中,通过传输延时与预先记录的跳变前的延时值的大小关系比较,通过延时大幅增大次数的数值与预先存储的次数阈值大小关系的判断,可以过滤偶发的异常的延时突变,能区分延时大幅跳变是偶发行为还是网络基本传输延时已发生了变化。
在一实施例中,在步骤103后,包括:
步骤S31,根据所述传输延时以及上一次存储的平滑延时,计算当前平滑延时;
步骤S32,根据所述当前抖动值以及上一次存储的平滑抖动值,计算当前平滑抖动值。
在本申请实施例中,通过计算以及保存平滑延时及平滑抖动值,作为后续退出拥塞状态的判断依据之一,保证了实时流媒体传输的拥塞状态的准确判断。
步骤105,将所述收包时间以及所述传输延时,作为当前采样数据组存入环型队列,所述环型队列中存储有一个或多个采样数据组;
步骤106,计算所述环型队列中所有收包时间之和、所有传输延时之和、所有收包时间的平方之和,计算所述环型队列中每个采样数据的收包时间与传输延时的乘积,并计算所有收包时间与传输延时的乘积之和;
步骤107,在所述环型队列中采样数据组的数量等于预先设置的数量值时,通过所述环型队列中所有收包时间之和、所述所有传输延时之和、所述所有收包时间的平方之和、以及所述所有收包时间与传输延时的乘积之和,计算斜率A;
A=(N*所有收包时间与传输延时的乘积之和-所有收包时间之和*所有传输延时之和)/(N*所有收包时间的平方之和-所有收包时间之和*所有收包时间之和);
其中,N为环型队列中数据组的数量。
步骤108,根据所述斜率A,判断所述实时流媒体传输的拥堵状态。
在一实施例中,在环型队列中采样数据组的数量大于预先设置的数量值时,环型队列开始出现递归,可以移除环型队列中最先存储的采样数据组,再插入新生成的采样数据组。
在一实施例中,在步骤108后,包括:
降低数据包中的冗余包,减少重传机制等方式降低码流,并实时监测实时流媒体传输是否解除拥堵,在检测到所述实时流媒体传输拥塞解除后,根据丢包率加入冗余包或重启重传机制。
在一实施例中,在步骤108后,包括:
在所述斜率A大于预先设置的第一拥堵阈值时,所述实时流媒体传输为拥堵状态。
为了对上述实施例进行解释说明,以下通过一具体示例进行解释,需要说明的是,本申请并不局限于该具体示例。
第一步,设置一个结构体数组作为环型队列,命名为Q,用于存放近期的收包指标值{收包时间,单向延时(单向延时=上述传输延时,下同)},如图4所示,示出了一个结构体数组,该数组有N个元素,其中N必须是2的次方(例如N可取值为64),每个元素保存着一个结构体数据,分别是x=收包时间,y=单向延时。写指针(后述简称为游标)指向当前可写入的数组下标,从0开始递增到N后又回归从0开始,这样形成一个环型队列。若如上所述设置采样周期为10毫秒的话,则该队列可以保存最近640毫秒内的采样数据。
第二步,接收端持续接收数据包,到达采样时间时,获取当前包的发包时间(TSi)、收包时间(RSi)。
第三步,计算出当前包的延时:Di=RSi–TSi(即根据所述发包时间以及收包时间,计算传输延时)
第四步,参考上个采样数据计算出抖动值:Ji=Di–Di-1=(RSi-TSi)-(RSi-1–TSi-1)=(RSi–RSi-1)-(TSi–TSi-1)(即根据相邻两个数据包的收包时间差以及发包时间差,计算出当前抖动值)
第五步,分别对延时Di及抖动值Ji应用一阶指数平滑算法,得到平滑后的延时Dm及抖动值Jm。(即根据所述传输延时以及上一次存储的平滑延时,计算当前平滑延时;根据所述当前抖动值以及上一次存储的平滑抖动值,计算当前平滑抖动值)
Dm=(α–1)*Dm+α*Di
Jm=(α–1)*Jm+α*Ji
其中,“=”号右侧的Dm/Jm表示上一轮平滑处理后的值,“=”号右则的Dm/Jm表示本次平滑处理后的值,α表示一阶指数平滑系数,α为正整数,0<α<=N,N取值为上述环型队列数组的最大元素个数。α的取值规则如下所述:
1.在采样初期,即当采样到的数据量n<N时,α取值为n;
2.当采样到的数据量n>=N时,α取值为N;
3.如果后续发生“重置”行为,则等同规则1(采样初期);“重置”行为指因某种原因需要放弃之前累积的数据而从头开始分析。
第六步,接收端在采样到一组数据(Xi=收包时间RSi,Yi=单向延时Di)后,存入上述环型队列,并将环型队列游标前移,同时进行以下运算(即计算所述环型队列中所有收包时间之和、所有传输延时之和、所有收包时间的平方之和,计算所述环型队列中每个采样数据的收包时间与传输延时的乘积,并计算所有收包时间与传输延时的乘积之和):
1.对所有X值取和:sum_x=sum_x+Xi;(其中sum_x相当于∑x);
2.对所有Y值取和:sum_y=sum_y+Yi;(其中sum_y相当于∑y);
3.对所有X的平方求和:sum_x2=sum_x2+Xi*Xi;(其中sum_x2相当于∑x2);
4.所有X乘以Y的积进行求和:sum_xy=sum_xy+Xi*Yi;(其中sum_xy相当于∑xy);
注:上述公式描述中,右侧的sum_x为上次计算的值,左侧的sum_x为本次计算的值。sum_y/sum_x2/sum_xy类似。
第七步,当采样到至少N(在本案例中N=64)个数据样本后,可以计算出斜率A,(即在所述环型队列中采样数据组的数量等于预先设置的数量值时,通过所述环型队列中所有收包时间之和、所述所有传输延时之和、所述所有收包时间的平方之和、以及所述所有收包时间与传输延时的乘积之和,计算斜率A)A=(N*sum_xy-sum_x*sum_y)/(N*sum_xx-sum_x*sum_x);
第八步,如图5,当采样到多于N个样本(本案例中第65个样本开始)后,上述环型队列开始出现递归(即游标又从0开始),则需要在进行上述第6步之前,需要移除最旧的样本后再插入新的样本数据。(即在环型队列中采样数据组的数量大于预先设置的数量值时,环型队列开始出现递归,可以移除环型队列中最先存储的采样数据组,再插入新生成的采样数据组)具体操作为:
sum_x=sum_x–Q[i].x
sum_y=sum_y-Q[i].y
sum_x2=sum_x2-Q[i].x*Q[i].x
sum_xy=sum_xy-Q[i].x*Q[i].y
上述Q为环型队列,i为当前游标,Q[i]表示当前游标指向的数据(即在队列中早期保存的数据)。也就是说在采样到多于N个样本后,上述的“求和”公式基本上都演变为:
sum_x=sum_x–Q[i].x+Xi
sum_y=sum_y–Q[i].y+Yi
sum_x2=sum_x2-Q[i].x*Q[i].x+Xi*Xi
sum_xy=sum_xy-Q[i].x*Q[i].y+Xi*Yi
第九步,如图6所示,示出了网络延迟类型的识别方法
1.首次发生延时大幅增大时:在计算出当前包的延时值Di后,与上个延时值Di-1比较,如果Di>Di-1,且Di–Di-1>50,则判定为延时发生了大幅跳变;此时,记录跳变前的延时值为Dj,且记录延时大幅增大次数Jumps为1;(即在所述延时大幅增大次数的数值小于1时,比较所述传输延时与上一次存储的传输延时的大小关系,在所述传输延时大于所述上一次存储的传输延时,且所述传输延时与所述上一次存储的传输延时的差值大于预先设置的第一差值阈值时,记录跳变前的延时值为所述上一次存储的传输延时,且将所述延时大幅增大次数记录为1)。
2.延时大幅增大次数Jumps大于0的情况下:计算出当前包的延时值Di后,与跳变前的延时值Dj比较,如果Di>Dj,且Di-Dj>50,则延时大幅增大次数Jumps增加1;如果Di-Dj<3,则延时大幅增大次数Jumps减少1;(即在所述延时大幅增大次数的数值大于1时,比较所述传输延时与预先记录的跳变前的延时值的大小关系,在所述传输延时大于所述预先记录的跳变前的延时值,且所述传输延时与所述预先记录的跳变前的延时值的差值大于预先设置的第一差值阈值时,所述延时大幅增大次数加1,在所述传输延时大于所述预先记录的跳变前的延时值,且所述传输延时与所述预先记录的跳变前的延时值的差值小于预先设置的第二差值阈值时,所述延时大幅增大次数减1)。
3.如果累积的延时大幅增大次数Jumps>3,则认为网络从一个低延时环境切换到一个高延时环境,这时候,重置相关参数,包括将环型队列中的所有数据置0,游标重新从0开始,sum_x/sum_y/sum_x2/sum_xy也置0。但是特别的,保守的,当前的拥塞状态标识符不发生改变,也就是说当拥塞状态为“真”是,即使本条件触发,也不会将拥塞状态重置为“假”。(即在所述延时大幅增大次数大于预先存储的次数阈值时,清空所述环型队列中的所有采样数据,并且将所述所有收包时间之和、所述所有传输延时之和、所述所有收包时间的平方之和、所述所有收包时间与传输延时的乘积之和置为0)
第十步,在未检测到拥塞之前,且斜率A的绝对值小于预设阀值An(如An=0.01)时,保存当前平滑抖动值Jm及平滑延时Dm,作为后续退出拥塞状态的判断依据之一。
第十一步,当检测到斜率A大于指定阀值Aw(如Aw=0.10)时,则认为网络可能会进入拥塞状态(警告级别),则记录下当前时间Tw,作为后续退出拥塞状态的判断依据。
第十二步,当检测到斜率A大于指定阀值Ax(如Ax=0.20)时,则认为网络进入拥塞状态,标记拥塞状态为“真”。
第十三步,当检测到拥塞后,可以采取降低甚至取消冗余包,减少甚至取消重传机制等方式降低码流,防止抗丢包机制额外引入的码流进一步造成网络的严化。
第十四步,当拥塞状态为“真”时,检测到同时满足以下四个条件,则判定为拥塞解除:
1.当前斜率A小于预设阀值An;
2.平滑抖动值Jm接近拥塞之前记录的值,允许误差为3毫秒;
3.平滑延时Dm接近拥塞之前记录的值,允许误差为3毫秒;
4.距离最近一次发生拥塞(或可能拥塞)的时间Tw(在第11步中记录)超过预设的时间阀值(如30秒);
第十五步,当检测到拥塞解除后,可以根据丢包率重新加入冗余包或重启重传机制,用于对抗丢包。(即降低数据包中的冗余包,减少重传机制等方式降低码流,并实时监测实时流媒体传输是否解除拥堵,在检测到所述实时流媒体传输拥塞解除后,根据丢包率加入冗余包或重启重传机制)
在本申请实施例中,本实施例一种实时流媒体传输的拥塞检测方法,由于一旦发生拥塞,在拥塞初期,会出现延时持续上升(或振荡上升)的情况,上升幅度取决于拥塞程度的理论,通过发包时间以及收包时间计算流媒体传输的延时的斜率,进行实时流媒体传输的拥塞检测,可以反映网络整体拥塞状态,判断结果准确,判断过程不依赖丢包率,在网络背景环境叠加了丢包因素的场景下,依旧能识别到拥塞行为及退出拥塞行为。
在又一实施例中,提供了一种实时流媒体传输的拥塞检测装置,应用于接收端,如图7所示,所述装置包括:
数据包接收模块701,用于接收当前数据包,并判断当前时间是否处于采样时间;
时间获取模块702,用于在所述当前时间为采样时间时,获取当前数据包的发包时间以及收包时间;
传输延时计算模块703,用于根据所述发包时间以及收包时间,计算传输延时;
抖动计算模块704,用于根据相邻两个数据包的收包时间差以及发包时间差,计算出抖动值;
采样数据组存储模块705,用于将所述收包时间以及所述传输延时,作为当前采样数据组存入环型队列,所述环型队列中存储有一个或多个采样数据组;
环型队列数据计算模块706,用于计算所述环型队列中所有收包时间之和、所有传输延时之和、以及所有收包时间的平方之和,计算所述环型队列中每个采样数据的收包时间与传输延时的乘积,并计算所有收包时间与传输延时的乘积之和;
斜率计算模块707,用于在所述环型队列中采样数据组的数量等于预先设置的数量值时,通过所述环型队列中所有收包时间之和、所述所有传输延时之和、所述所有收包时间的平方之和、以及所述所有收包时间与传输延时的乘积之和,计算斜率A;
拥堵状态判断模块708,用于根据所述斜率A,判断所述实时流媒体传输的拥堵状态。
在一实施例中,所述装置,还包括:
平滑延时计算模块,用于根据所述传输延时以及上一次存储的平滑延时,计算当前平滑延时;
当前抖动值计算模块,用于根据相邻两个数据包的收包时间差以及发包时间差,计算出当前抖动值;
平滑抖动值计算模块,用于根据所述当前抖动值以及上一次存储的平滑抖动值,计算当前平滑抖动值。
在一实施例中,所述装置,还包括:
第一判断模块,用于判断预先存储的延时大幅增大次数的数值是否大于1;
次数初始记录模块,用于在所述延时大幅增大次数的数值小于1时,比较所述传输延时与上一次存储的传输延时的大小关系,在所述传输延时大于所述上一次存储的传输延时,且所述传输延时与所述上一次存储的传输延时的差值大于预先设置的第一差值阈值时,记录跳变前的延时值为所述上一次存储的传输延时,且将所述延时大幅增大次数记录为1。
在一实施例中,所述装置还包括:
第二判断模块,用于判断预先存储的延时大幅增大次数的数值是否大于1;
次数记录计算模块,用于在所述延时大幅增大次数的数值大于1时,比较所述传输延时与预先记录的跳变前的延时值的大小关系,在所述传输延时大于所述预先记录的跳变前的延时值,且所述传输延时与所述预先记录的跳变前的延时值的差值大于预先设置的第一差值阈值时,所述延时大幅增大次数加1,在所述传输延时大于所述预先记录的跳变前的延时值,且所述传输延时与所述预先记录的跳变前的延时值的差值小于预先设置的第二差值阈值时,所述延时大幅增大次数减1。
在一实施例中,所述装置还包括:
第三判断模块,用于判断所述延时大幅增大次数的数值与预先存储的次数阈值的大小关系;
重置模块,用于在所述延时大幅增大次数大于预先存储的次数阈值时,清空所述环型队列中的所有采样数据,并且将所述所有收包时间之和、所述所有传输延时之和、所述所有收包时间的平方之和、所述所有收包时间与传输延时的乘积之和置为0。
在一实施例中,所述装置还包括:
延迟处理模块,用于降低数据包中的冗余包,减少重传机制等方式降低码流,并实时监测实时流媒体传输是否解除拥堵,在检测到所述实时流媒体传输拥塞解除后,根据丢包率加入冗余包或重启重传机制。
在一实施例中,所述装置还包括:
比较模块,用于在所述斜率A大于预先设置的第一拥堵阈值时,所述实时流媒体传输为拥堵状态。
在本申请实施例中,本实施例一种实时流媒体传输的拥塞检测方法,由于一旦发生拥塞,在拥塞初期,会出现延时持续上升(或振荡上升)的情况,上升幅度取决于拥塞程度的理论,通过发包时间以及收包时间计算流媒体传输的延时的斜率,进行实时流媒体传输的拥塞检测,可以反映网络整体拥塞状态,判断结果准确,在网络背景环境叠加了丢包因素的场景下,依旧能识别到拥塞行为及退出拥塞行为。
在一实施例中,提供了一种电子装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述实施例中一种实时流媒体传输的拥塞检测方法的步骤。
在一实施例中,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述实施例中一种实时流媒体传输的拥塞检测方法的步骤。
以上所述是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
Claims (10)
1.一种实时流媒体传输的拥塞检测方法,其特征在于,应用于接收端,所述方法包括:
接收当前数据包,并判断收包时间是否处于采样时间;
在所述收包时间为采样时间时,获取当前数据包的发包时间以及收包时间;
根据所述发包时间以及收包时间,计算传输延时;
根据相邻两个数据包的收包时间差以及发包时间差,计算出当前抖动值;
将所述收包时间以及所述传输延时,作为当前采样数据组存入环型队列,所述环型队列中存储有一个或多个采样数据组;
计算所述环型队列中所有收包时间之和、所有传输延时之和、所有收包时间的平方之和,计算所述环型队列中每个采样数据的收包时间与传输延时的乘积,并计算所有收包时间与传输延时的乘积之和;
在所述环型队列中采样数据组的数量等于预先设置的数量值时,通过所述环型队列中所有收包时间之和、所述所有传输延时之和、所述所有收包时间的平方之和、所述所有收包时间与传输延时的乘积之和,计算斜率A;
根据所述斜率A,判断所述实时流媒体传输的拥堵状态。
2.根据权利要求1所述的实时流媒体传输的拥塞检测方法,其特征在于,所述根据所述发包时间以及收包时间,计算传输延时的步骤后,包括:
判断预先存储的延时大幅增大次数的数值是否大于1;
在所述延时大幅增大次数的数值小于1时,比较所述传输延时与上一次存储的传输延时的大小关系,在所述传输延时大于所述上一次存储的传输延时,且所述传输延时与所述上一次存储的传输延时的差值大于预先设置的第一差值阈值时,记录跳变前的延时值为所述上一次存储的传输延时,且将所述延时大幅增大次数记录为1。
3.根据权利要求2所述的实时流媒体传输的拥塞检测方法,其特征在于,所述根据所述发包时间以及收包时间,计算传输延时的步骤后,包括:
判断预先存储的延时大幅增大次数的数值是否大于1;
在所述延时大幅增大次数的数值大于1时,比较所述传输延时与预先记录的跳变前的延时值的大小关系,在所述传输延时大于所述预先记录的跳变前的延时值,且所述传输延时与所述预先记录的跳变前的延时值的差值大于预先设置的第一差值阈值时,所述延时大幅增大次数加1,在所述传输延时大于所述预先记录的跳变前的延时值,且所述传输延时与所述预先记录的跳变前的延时值的差值小于预先设置的第二差值阈值时,所述延时大幅增大次数减1。
4.根据权利要求2或3所述的实时流媒体传输的拥塞检测方法,其特征在于,所述根据所述发包时间以及收包时间,计算传输延时的步骤后,包括:
判断所述延时大幅增大次数的数值与预先存储的次数阈值的大小关系;
在所述延时大幅增大次数大于预先存储的次数阈值时,清空所述环型队列中的所有采样数据,并且将所述所有收包时间之和、所述所有传输延时之和、所述所有收包时间的平方之和、所述所有收包时间与传输延时的乘积之和置为0。
5.根据权利要求1所述的实时流媒体传输的拥塞检测方法,其特征在于,所述根据所述发包时间以及收包时间,计算传输延时的步骤后,包括:
根据所述传输延时以及上一次存储的平滑延时,计算当前平滑延时;
根据相邻两个数据包的收包时间差以及发包时间差,计算出当前抖动值;
根据所述当前抖动值以及上一次存储的平滑抖动值,计算当前平滑抖动值。
6.根据权利要求1所述的实时流媒体传输的拥塞检测方法,其特征在于,所述根据所述斜率A,判断所述实时流媒体传输的拥堵状态后,包括:
降低数据包中的冗余包,减少重传机制等方式降低码流,并实时监测实时流媒体传输是否解除拥堵,在检测到所述实时流媒体传输拥塞解除后,根据丢包率加入冗余包或重启重传机制。
7.根据权利要求1所述的实时流媒体传输的拥塞检测方法,其特征在于,所述根据所述斜率A,判断所述实时流媒体传输的拥堵状态,包括:
在所述斜率A大于预先设置的第一拥堵阈值时,所述实时流媒体传输为拥堵状态。
8.一种实时流媒体传输的拥塞检测装置,其特征在于,应用于接收端,所述装置包括:
数据包接收模块,用于接收当前数据包,并判断当前时间是否处于采样时间;
时间获取模块,用于在所述当前时间为采样时间时,获取当前数据包的发包时间以及收包时间;
传输延时计算模块,用于根据所述发包时间以及收包时间,计算传输延时;
抖动计算模块,用于根据相邻两个数据包的收包时间差以及发包时间差,计算出抖动值;
采样数据组存储模块,用于将所述收包时间以及所述传输延时,作为当前采样数据组存入环型队列,所述环型队列中存储有一个或多个采样数据组;
环型队列数据计算模块,用于计算所述环型队列中所有收包时间之和、所有传输延时之和、以及所有收包时间的平方之和,计算所述环型队列中每个采样数据的收包时间与传输延时的乘积,并计算所有收包时间与传输延时的乘积之和;
斜率计算模块,用于在所述环型队列中采样数据组的数量等于预先设置的数量值时,通过所述环型队列中所有收包时间之和、所述所有传输延时之和、所述所有收包时间的平方之和、以及所述所有收包时间与传输延时的乘积之和,计算斜率A;
拥堵状态判断模块,用于根据所述斜率A,判断所述实时流媒体传输的拥堵状态。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至7中任意一项所述的实时流媒体传输的拥塞检测方法。
10.一种电子装置,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任意一项所述的实时流媒体传输的拥塞检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110016982.3A CN112822117B (zh) | 2021-01-07 | 2021-01-07 | 一种实时流媒体传输的拥塞检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110016982.3A CN112822117B (zh) | 2021-01-07 | 2021-01-07 | 一种实时流媒体传输的拥塞检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112822117A CN112822117A (zh) | 2021-05-18 |
CN112822117B true CN112822117B (zh) | 2022-11-22 |
Family
ID=75868405
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110016982.3A Active CN112822117B (zh) | 2021-01-07 | 2021-01-07 | 一种实时流媒体传输的拥塞检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112822117B (zh) |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5193151A (en) * | 1989-08-30 | 1993-03-09 | Digital Equipment Corporation | Delay-based congestion avoidance in computer networks |
JP3841256B2 (ja) * | 2000-02-15 | 2006-11-01 | 三菱電機株式会社 | 通信システム及び通信方法及び送信端末 |
CN104243242B (zh) * | 2014-09-26 | 2017-11-17 | 厦门亿联网络技术股份有限公司 | 一种基于网络抖动算法反应网络拥塞的方法 |
WO2016055574A1 (en) * | 2014-10-10 | 2016-04-14 | Telefonaktiebolaget L M Ericsson (Publ) | Determination of bitrate request |
CN106301684B (zh) * | 2016-08-12 | 2020-04-10 | 广州市百果园网络科技有限公司 | 一种媒体数据传输方法及装置 |
CN107070805A (zh) * | 2017-03-22 | 2017-08-18 | 上海华为技术有限公司 | 一种流量控制的方法及节点 |
EP3677003A4 (en) * | 2017-08-31 | 2021-05-26 | Pensando Systems Inc. | METHODS AND SYSTEMS FOR OVERLOAD MANAGEMENT IN A NETWORK |
CN107979542A (zh) * | 2017-12-14 | 2018-05-01 | 中央电视台 | 网络拥塞确定方法及本端网元 |
CN109257252B (zh) * | 2018-09-12 | 2021-10-26 | 复旦大学 | 一种判断网络拥塞状态的方法 |
CN109361566A (zh) * | 2018-11-13 | 2019-02-19 | 天津津航计算技术研究所 | 利用报文序号和报文时间戳预测udp拥塞程度的方法 |
CN109474538B (zh) * | 2018-12-29 | 2021-07-30 | 北京达佳互联信息技术有限公司 | 一种数据传输方法、装置、终端设备及存储介质 |
-
2021
- 2021-01-07 CN CN202110016982.3A patent/CN112822117B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112822117A (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3841256B2 (ja) | 通信システム及び通信方法及び送信端末 | |
CN102325274B (zh) | 一种自适应网络带宽的视频流传输控制方法 | |
JP2813119B2 (ja) | 伝送リンク上での伝送誤り率のモニタ装置及びその方法並びに伝送誤り率に基づく伝送リンクの制御装置及びその方法 | |
EP3128704A1 (en) | Method and apparatus for limiting rate by means of token bucket, and computer storage medium | |
CN101971629B (zh) | 用于适配视频信号的目标速率的设备和方法 | |
CN106301684B (zh) | 一种媒体数据传输方法及装置 | |
EP2140590B1 (en) | Method of transmitting data in a communication system | |
EP2166700A1 (en) | Method and system for detecting qos abnormal | |
CN111193673B (zh) | 数据传输速率控制方法、系统和用户设备 | |
CN101924603A (zh) | 数据传输速率的自适应调整方法、装置及系统 | |
JP5406983B2 (ja) | 通信ネットワークにおけるジッタの検出 | |
CN101800699A (zh) | 一种丢弃报文的方法及装置 | |
US7349330B1 (en) | Packet receiver with the influence of jitter and packet losses reduced before a buffer becomes idle due to data delays and packet receiving method using the same | |
US9736077B2 (en) | Enhanced media quality management | |
JP2006254383A (ja) | 通信制御システムおよび通信制御方法 | |
EP2586235A1 (en) | Method and arrangement for detecting congestion in a communications network | |
CN112492646B (zh) | 基于拥塞成因识别的拥塞控制方法及装置 | |
CN111741249A (zh) | 一种网络拥塞检测方法及装置 | |
CN112822117B (zh) | 一种实时流媒体传输的拥塞检测方法及装置 | |
CN114945004A (zh) | 拥塞控制方法、装置、电子设备及存储介质 | |
US8521869B2 (en) | Method and system for reporting defects within a network | |
CN109274550B (zh) | 一种iSCSI自适应IO队列深度匹配方法 | |
CN113364698B (zh) | 带宽估计方法、系统、电子设备与存储介质 | |
CN112579396A (zh) | 软件系统动态限流方法、装置及设备 | |
CN110381036A (zh) | 一种用于dash流媒体的tcp拥塞控制方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |