CN107800638A - 一种拥塞控制方法及装置 - Google Patents
一种拥塞控制方法及装置 Download PDFInfo
- Publication number
- CN107800638A CN107800638A CN201610802483.6A CN201610802483A CN107800638A CN 107800638 A CN107800638 A CN 107800638A CN 201610802483 A CN201610802483 A CN 201610802483A CN 107800638 A CN107800638 A CN 107800638A
- Authority
- CN
- China
- Prior art keywords
- rtt
- congestion window
- size
- ave
- congestion
- 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.)
- Granted
Links
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/12—Avoiding congestion; Recovering from congestion
-
- 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/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
-
- 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/28—Flow control; Congestion control in relation to timing considerations
- H04L47/283—Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
-
- 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/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
Abstract
本发明实施例公开了一种拥塞控制方法,包括:在拥塞避免阶段,当发生丢包时,获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave,根据RTTmin、RTTave及拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ,如果是,则拒绝调整所述拥塞窗口大小,如果否,则调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低,根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。可见,本发明实施提供的方案中在发生丢包时,先判断丢包类型,只有发生拥塞丢包时,才会降低当前拥塞窗口大小的取值,大大提高了带宽的吞吐率及利用率。
Description
技术领域
本发明涉及网络技术领域,特别涉及一种拥塞控制方法及装置。
背景技术
网络中的拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信陷入停顿状态,严重影响网络中数据的传输。
传输控制协议(Transmission Control Protocol,TCP)是一种最为常用的传输层协议,拥塞控制方法是指在一个TCP连接中,发送端设备为充分利用网络同时不使网络发生拥塞,采用的一种探测网络并调整拥塞窗口大小(cwnd)的一种方法。拥塞控制方法采用算法的基本模型是Reno算法,采用Reno算法的拥塞控制方法一般包括慢启动、拥塞避免、快速重传和快速恢复阶段。
由Reno算法衍生出诸多其他算法,包括BIT-TCP、CUBIC、Westwood及HTCP等算法。其中,采用Westwood算法的拥塞控制方法中,发送端设备通过持续不断地检测往返时间(Round-Trip Time,RTT,表示从发送端设备发送数据开始,到发送端设备收到来自接收端设备的ACK总共经历的时间)值来进行带宽估计,当丢包发生时,用带宽估计值来调整拥塞窗口和慢启动阈值。
随着无线网络技术的发展,无线网络在现行网络中占有大量比例。区别于以电缆作为载体的传统网络,无线网络采用电磁波作为传输载体,这样链路就容易受信道衰落、气候条件、主机移动、噪声等各种干扰的影响,产生丢失数据包的情况,这种情况被称为无线网络中的随机丢包。随机丢包是无线网络的一种特性,它随机发生,与带宽没有关系,不需要降低拥塞窗口大小。
无线网络中,由于随机丢包对带宽估计值的影响较小,使得随机丢包对拥塞窗口降低的影响减小,所以采用Westwood算法的拥塞控制方法与基于其他算法的拥塞控制方法相比,可以在一定程度上提高无线网络的带宽吞吐率。
但是,在采用Westwood算法的拥塞控制方法中,默认传输链路由有线信道组成,不能区分传输过程中的丢包类型,每一次丢包都会认为其是由网络拥塞使路由器缓冲区暂满引起的拥塞丢包,因此,当发生随机丢包时,也会认为此时达到了链路的拥塞值,从而降低拥塞窗口大小,减少当前的传输带宽,进而降低了带宽的吞吐率及利用率。
发明内容
本发明实施例公开了一种拥塞控制方法及装置,用于解决的现有拥塞控制方法不能区分丢包类型导致的带宽吞吐率及利用率低的问题。技术方案如下:
第一方面,本发明实施例提供了一种拥塞控制方法,包括:
在拥塞避免阶段,当发生丢包时,获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ;
如果是,则拒绝调整所述拥塞窗口大小;
如果否,则调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。
可选的,所述调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低具体为:
按照以下表达式,调整所述拥塞窗口大小,
其中,cwnd'表示调整后所述拥塞窗口大小,cwnd表示调整前所述拥塞窗口大小,a为大于1的常数。
可选的,所述方法还包括:
接收用于表示数据包成功发送的确认字符;
获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ;
如果是,则按照以下表达式,调整所述拥塞窗口大小,
cwnd'=cwnd+(γ-N);
如果否,则按照以下表达式,调整所述拥塞窗口大小,
cwnd'=cwnd+b,
其中,b为预设的大于0的整数;
根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。
可选的,所述方法还包括:
判断网络状态是否满足预设的往返时间重置条件;
如果是,则对RTTmin和RTTave进行重置。
可选的,所述对RTTmin和RTTave进行重置具体为:
将RTTave及RTTmin置为0,并将重置标识设置为第一预设值,其中,所述第一预设值用于表示对RTTmin和RTTave进行了重置操作。
可选的,所述RTTave的确定方式具体为:
判断所述重置标识是否等于所述第一预设值;
如果是,则将RTTave置为RTTmin,并将所述重置标识置为第二预设值,其中,所述第二预设值用于表示未对RTTmin和RTTave进行重置操作;
如果否,则根据公式计算并将RTTave置为其中,n为将RTTave置为RTTmin后,当前时刻已接收到的所述用于表示数据包成功发送的确认字符的次数,且n>1,为接收到第n个所述确认字符时的平均往返时间,RTT为实际往返时间,x、y为预设的系数,x+y=1。
可选的,在所述获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave之后还包括:
判断RTTmin是否等于RTTave;
如果是,则调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
如果否,则根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ。
可选的,所述当前路由器中等待发送的数据包的数量N通过公式计算得到。
第二方面,本发明实施例还提供了一种拥塞控制装置,包括:
第一计算模块,用于在拥塞避免阶段,当发生丢包时,获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
第一判断模块,用于根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ;
第一执行模块,用于在N小于预设的阈值γ时,拒绝调整所述拥塞窗口大小;
第二执行模块,用于在N不小于预设的阈值γ时,调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
第一发送模块,用于根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。
可选的,所述第二执行模块具体用于:
在N不小于预设的阈值γ时,按照以下表达式,调整所述拥塞窗口大小,
其中,cwnd'表示调整后所述拥塞窗口大小,cwnd表示调整前所述拥塞窗口大小,a为大于1的常数。
可选的,所述装置还包括:
接收模块,用于接收用于表示数据包成功发送的确认字符;
第二计算模块,用于获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
第二判断模块,用于根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ;
第三执行模块,用于在N小于预设的阈值γ时,按照以下表达式,调整所述拥塞窗口大小,
cwnd'=cwnd+(γ-N);
第四执行模块,用于在N不小于预设的阈值γ时,按照以下表达式,调整所述拥塞窗口大小,
cwnd'=cwnd+b,
其中,b为预设的大于0的整数;
第二发送模块,用于根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。
可选的,所述装置还包括:
网络状态判断模块,用于判断网络状态是否满足预设的往返时间重置条件;
重置模块,用于在所述网络状态满足预设的往返时间重置条件时,对RTTmin和RTTave进行重置。
可选的,所述重置模块,具体用于:
在所述网络状态满足预设的往返时间重置条件时,将RTTave及RTTmin置为0,并将重置标识设置为第一预设值,其中,所述第一预设值用于表示对RTTmin和RTTave进行了重置操作。
可选的,所述第一计算模块包括:
重置标识判断单元,用于在拥塞避免阶段,当发生丢包时,判断所述重置标识是否等于所述第一预设值;
第一往返时间确定单元,用于在所述重置标识等于所述第一预设值时,将RTTave置为RTTmin,并将所述重置标识置为第二预设值,其中,所述第二预设值用于表示未对RTTmin和RTTave进行重置操作;
第二往返时间确定单元,用于在所述重置标识不等于所述第一预设值时,根据公式计算并将RTTave置为其中,n为将RTTave置为RTTmin后,当前时刻已接收到的所述用于表示数据包成功发送的确认字符的次数,且n>1,为接收到第n个所述确认字符时的平均往返时间,RTT为实际往返时间,x、y为预设的系数,x+y=1。
可选的,所述装置还包括:
第三判断模块,用于在所述获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave之后,判断RTTmin是否等于RTTave;
拥塞窗口调整模块,用于在RTTmin等于RTTave时,调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
所述第一判断模块还用于,用于在RTTmin不等于RTTave时,根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ。
可选的,其特征在于,所述当前路由器中等待发送的数据包的数量N通过公式计算得到。
本发明实施例提供的方案中,在拥塞避免阶段,当发生丢包时,首先获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave,然后根据RTTmin、RTTave及当前拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ,如果是,这种情况可以理解为是随机丢包的情况,则拒绝调整当前拥塞窗口大小,如果否,这种情况可以理解为是发生拥塞丢包的情况,则调整当前拥塞窗口大小,使得当前拥塞窗口大小的取值降低,最后根据调整后的拥塞窗口大小,通过拥塞窗口发送数据包。可见,本发明实施提供的方案中在发生丢包时,先判断丢包类型,只有发生拥塞丢包时,才会降低当前拥塞窗口大小的取值,大大提高了带宽的吞吐率及利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的第一种拥塞控制方法的流程图;
图2为本发明实施例所提供的第二种拥塞控制方法的流程图;
图3为本发明实施例所提供的第三种拥塞控制方法的流程图;
图4为本发明实施例所提供的拥塞控制方法与现有拥塞控制方法在不同丢包率下的带宽吞吐量的对比图;
图5为本发明实施例所提供的第一种拥塞控制装置的结构示意图;
图6为本发明实施例所提供的第二种拥塞控制装置的结构示意图;
图7为本发明实施例所提供的第三种拥塞控制装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了提高拥塞控制方法中带宽吞吐率及利用率,本发明实施例提供了一种拥塞控制方法及装置,应用于TCP连接中的发送端设备。
现有拥塞控制方法采用的算法的基本模型是Reno算法,采用Reno算法的拥塞控制方法一般包括慢启动、拥塞避免及快速重传和快速恢复阶段。其中,
慢启动阶段:当一个TCP连接建立时,发送端设备将拥塞窗口大小初始化为1,每接收到一个接收端设备发送的确认字符(acknowledgement,ACK),就将拥塞窗口增加1。即每一次被确认的数据包都会使拥塞窗口加倍,使得拥塞窗口呈现指数形式增长。
拥塞避免阶段:当拥塞窗口增长到慢启动阈值(ssthresh)时,TCP就进入拥塞避免阶段,每一次成功传输就将拥塞窗口线性地增长,即发送端设备收到拥塞窗口中所有数据包的ACK后,就将拥塞窗口大小增加1。
快速重传和快速恢复阶段:当数据包超时时,TCP认为网络发生了拥塞。当发送端设备收到3个或以上重复的ACK时,认为数据包已经丢失,即发生了拥塞丢包,则重传丢失的数据包,同时将慢启动阈值设置为当前拥塞窗口大小的一半,再次进入拥塞避免阶段。
由Reno算法衍生出诸多其他算法,包括BIT-TCP、CUBIC、Westwood及HTCP等算法。其中,CUBIC算法在拥塞避免阶段的拥塞窗口调整中使用了一个三次函数,在三次函数曲线中存在一个凹和凸的部分,该曲线形状取代BIC-TCP算法中二分查找方式确定的拥塞窗口增长曲线。通过计算该增长曲线,采用CUBIC算法的拥塞控制方法可以做到在合适的带宽处保持一定时间的拥塞窗口维持,提高了带宽的吞吐率。采用Westwood算法的拥塞控制方法中,发送端设备通过持续不断地检测往返时间(Round-Trip Time,RTT,表示从发送端设备发送数据包开始,到发送端设备收到来自接收端设备的ACK总共经历的时间)值来进行带宽估计,当丢包发生时,用带宽估计值来调整拥塞窗口和慢启动阈值。
本发明实施例所提供的一种拥塞控制方法及装置是基于现有采用Westwood算法的拥塞控制方法提出的,下面首先对本发明实施例所提供的一种拥塞控制方法及装置所基于的原理进行阐述。
假设在理想链路中,所有数据包都直接被路由器转发,不进入路由器的缓冲区等待发送。同时,数据包充满了所有的链路,带宽达到最大值,缓冲区的数据包为0。那么此时,带宽便等于链路中的数据包的数量与数据包的RTT的比值,可以理解的是,此时所有数据包的RTT是相同的。
但是,在实际链路中,有的数据包会进入路由器的缓冲区等待发送,而有的数据包则不进入路由器的缓冲区,所以可以认为所有数据包中,RTT值最小的数据包是没有进入缓冲区而直接被发送的。对于没有进入缓冲区而直接被发送的数据包所在的TCP连接,可以近似地认为当前拥塞窗口大小是链路中数据包的数目。
综上所述,在理想链路中,则可以得到如下表达式:
Bwe1=cwnd/RTTmin
其中,Bwe1表示理想带宽,cwnd表示当前拥塞窗口大小,RTTmin表示数据包的最小往返时间。
在实际链路中,则可以得到如下表达式:
Bwe2=cwnd/RTT
其中,Bwe2表示实际带宽,cwnd表示当前拥塞窗口大小,RTT表示数据包的实际往返时间。
在这两种情况下,往返时间的差距即是数据包在路由器中等待的时间。假设数据包等待时间为Tx,则有:
RTT=RTTmin+Tx
每当一个数据包被接收端设备成功接收,路由器的缓冲区中的数据包的数量就减少一个,此时,发送两个数据包的时间差就应当是1/Bwe2。
假设路由器中排队的数据包的数量为N,则Tx=(N-1)/Bwe2,综上,可以得到如下表达式:
RTT=RTTmin+(N-1)/Bwe2。
结合上述所有表达式,即可得到:
N=cwnd(1-RTTmin/RTT)+1
将上式进行变形即得到下式:
下面结合上述原理对本发明实施例所提供的第一种拥塞控制方法进行介绍。
如图1所示,一种拥塞控制方法,包括以下步骤:
S101,在拥塞避免阶段,当发生丢包时,获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
当检测到发生丢包时,为了后续步骤中对路由器中等待发送的数据包的数量N的计算,需要获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,进而根据RTTmin计算往返时间的平均值RTTave。
具体的,可以通过调用预先设置的函数来获取当前时刻往返时间的最小值RTTmin。拥塞窗口大小即为当前时刻发送数据包的拥塞窗口的大小。获得了RTTmin后,可以根据RTTmin计算往返时间的平均值RTTave,例如,可以令RTTave=RTTmin。当然还可以获取当前时刻的实际往返时间RTT,进而根据RTT和RTTmin计算RTTave,例如,令RTTave等于RTT和RTTmin的平均值,这都是合理的。
需要说明的是,当前时刻的实际往返时间RTT即为,当前时刻从发送端设备发送数据包开始,到接收到来自接收端设备发送的表示该数据包成功发送的ACK总共经历的时间。
S102,根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ,如果是,则执行步骤S103,如果否,则执行步骤S104;
确定了RTTave后,便可以根据RTTmin、RTTave及当前时刻的拥塞窗口大小计算路由器中等待发送的数据包的数量N。具体的,为了更加准确地计算N值,可以采用步骤S101中确定的往返时间的平均值RTTave替换公式中的RTT,得到如下计算公式:
其中,cwnd为当前时刻拥塞窗口大小。
根据该公式确定了N之后,可以将N与预设的阈值γ的大小进行比较,以根据N与预设的阈值γ的大小关系确定当前网络发生随机丢包的可能。
需要说明的是,该预设的阈值γ的大小可以由本领域技术人员根据不同的无线网络环境的参数进行调整,在此不做具体限定,例如可以将该预设的阈值γ设置为5。当无线网络中有较差的无线连接链路时,由于发生随机丢包的可能性比较大,所以可以适当调高γ的值,从而提高带宽吞吐率及利用率。
S103,拒绝调整所述拥塞窗口大小;
当确定了N小于预设的阈值γ时,说明此时在路由器中等待发送的数据包的数量并不多,造成拥塞丢包的可能性很小,所以当前发生的丢包的类型为随机丢包的可能性很大,那么便可以不对当前拥塞窗口大小进行调整,以保证带宽的充分利用,提高带宽的吞吐率及利用率。
举例而言,如果通过步骤S103计算得到的N为3,而预设的阈值γ为5,显然N小于γ,不需要对当前拥塞窗口大小进行调整。
S104,调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
当确定了N不小于预设的阈值γ时,说明此时在路由器中等待发送的数据包的数量较多,造成拥塞丢包的可能性就较高,那么便可以对当前拥塞窗口大小进行调整,使得当前拥塞窗口大小的取值降低,以保证发送数据包的成功率,避免因为网络拥塞造成更多数据包丢失。
具体的,可以按照以下表达式,调整拥塞窗口大小,
其中,cwnd'表示调整后该拥塞窗口大小,cwnd表示调整前该拥塞窗口大小,a为大于1的常数。
需要说明的是,cwnd为调整前该拥塞窗口大小,即为步骤S101-S103中所说的当前拥塞窗口大小。
进一步的,上式中a为大于1的常数,其取值可以由本领域技术人员根据当前网络状况及N的大小确定,在此不做具体限定。可以理解的是,a的值越大,拥塞窗口大小降低的程度越大,调整后该拥塞窗口大小越小,带宽吞吐率及利用率也就越低,所以为了保证带宽被充分利用,a的取值不宜过大,一般取值为2较为合适,即可以降低拥塞窗口大小,避免更多数据包丢失,同时又能尽量保证带宽被合理利用,提高带宽的吞吐率及利用率。
S105,根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。
调整了拥塞窗口大小之后,便可以通过大小调整后的该拥塞窗口发送数据包。需要说明的是,上述步骤S103虽然执行的操作是不对当前拥塞窗口大小进行改变,但是该操作也可以认为是对拥塞窗口大小的一种调整,只是保持了当前拥塞窗口大小不变,所以在执行了步骤S103后,也通过拥塞窗口大小未发生变化的拥塞窗口发送数据包。
可见本实施例中,在拥塞避免阶段,当发生丢包时,首先获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave,然后根据RTTmin、RTTave及当前拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ,如果是,这种情况可以理解为是随机丢包的情况,则拒绝调整当前拥塞窗口大小,如果否,这种情况可以理解为是发生拥塞丢包的情况,则调整当前拥塞窗口大小,使得当前拥塞窗口大小的取值降低,最后根据调整后的拥塞窗口大小,通过拥塞窗口发送数据包。可见,在发生丢包时,先判断丢包类型,只有发生拥塞丢包时,才会降低当前拥塞窗口大小的取值,提高带宽的吞吐率及利用率。特别在无线网络状况较差时,随机丢包发生更加频繁,采用本方案提供的方法可以大大提高带宽的吞吐率及利用率。
下面对本发明实施例提供的第二种拥塞控制方法进行介绍。
如图2所示,一种拥塞控制方法,所述方法包括:
S201,在拥塞避免阶段,当发生丢包时,获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
S202,根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ,如果是,则执行步骤S203,如果否,则执行步骤S204;
S203,拒绝调整所述拥塞窗口大小;
S204,调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
S205,根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包;
上述五个步骤分别与步骤S101、步骤S102、步骤S103、步骤S104及步骤S105相似,相关之处参见步骤S101、步骤S102、步骤S103、步骤S104及步骤S105的部分说明即可,在此不再赘述。
S206,接收用于表示数据包成功发送的确认字符;
一个数据包成功被接收端设备接收时,发送端设备会收到一个来自接收端设备的确认字符,该确认字符即表示该数据包已经成功发送。
S207,获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
为了后续步骤中对路由器中等待发送的数据包的数量N的计算,需要获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,进而根据RTTmin计算往返时间的平均值RTTave。
具体的,可以通过调用预先设置的函数来获取当前时刻往返时间的最小值RTTmin。拥塞窗口大小即为当前时刻发送数据包的拥塞窗口的大小。获得了RTTmin后,可以根据RTTmin计算往返时间的平均值RTTave,例如,可以令RTTave=RTTmin。当然还可以获取当前时刻的实际往返时间RTT,进而根据RTT和RTTmin计算RTTave,例如,令RTTave等于RTT和RTTmin的平均值,这都是合理的。
S208,根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ,如果是,则执行步骤S209,如果否,则执行步骤S210;
确定了RTTave后,便可以根据RTTmin、RTTave及当前时刻的拥塞窗口大小计算路由器中等待发送的数据包的数量N。具体的,为了更加准确地计算N值,可以采用步骤S207中确定的往返时间的平均值RTTave替换公式中的RTT,得到如下公式进行计算:
其中,cwnd为当前时刻拥塞窗口大小。
根据该公式确定了N之后,可以将N与预设的阈值γ的大小进行比较,以根据N与预设的阈值γ的大小关系确定当前网络的拥塞状况。
需要说明的是,该预设的阈值γ的大小可以由本领域技术人员根据不同的无线网络环境的参数进行调整,在此不做具体限定,例如可以将该预设的阈值γ设置为5。
S209,按照以下表达式,调整所述拥塞窗口大小,
cwnd'=cwnd+(γ-N)
当确定了N小于预设的阈值γ时,说明此时在路由器中等待发送的数据包的数量并不多,而且已经接收到用于表示数据包成功发送的确认字符,所以此时造成拥塞丢包的可能性较小,所以可以适当地大幅度增加当前拥塞窗口大小。一般可以增加(γ-N),例如,当前拥塞窗口大小为8,N为2,γ为6,那么便可以将拥塞窗口大小调节为8+6-2=12,这样可以充分利用带宽,提高带宽的吞吐率及利用率。
S210,按照以下表达式,调整所述拥塞窗口大小,
cwnd'=cwnd+b,
其中,b为预设的大于0的整数。
当确定了N不小于预设的阈值γ时,说明此时在路由器中等待发送的数据包的数量较多,造成拥塞丢包的可能性就较高,为了避免拥塞窗口大小增加过多造成大量数据包丢失,所以此时可以将拥塞窗口大小增加最小值,即b取值为1,这样就可以尽量充分利用带宽,又能避免造成大量数据包丢失。
S211,根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。
需要说明的是,在通过拥塞窗口大小调整后的拥塞窗口发送数据包后,如果发生丢包现象,便返回步骤S201,如果接收到用于表示数据包成功发送的确认字符,便返回步骤S206。
可见本实施例中,在上述第一种方法基础上增加了在接收到用于表示数据包成功发送的确认字符时的拥塞控制方法,在确定当前路由器中等待发送的数据包的数量N后,通过判断N与预设的阈值γ的大小,确定增加拥塞窗口大小的程度,充分利用带宽,进一步提高了带宽的吞吐率及利用率。
下面对本发明提供的第三种拥塞控制方法进行介绍。
如图3所示,一种拥塞控制方法,所述方法包括:
S301,判断网络状态是否满足预设的往返时间重置条件,如果是,则执行步骤S302;
该网络状态可以采用现有的网络状态机等进行检测,预设的往返时间重置条件可以为网络状态为无序状态。因为当网络状态为无序状态时,说明当前网络状态较差,数据包的往返时间可能已经混乱,很可能导致后续的计算结果错误,所以可以将网络状态为无序状态设置为往返时间重置条件。
S302,对RTTmin和RTTave进行重置;
当检测出网络状态满足预设的往返时间重置条件时,说明往返时间的值很可能发生错误,所以需要对RTTmin和RTTave进行重置。
具体的,对RTTmin和RTTave进行重置可以采用下述方式:
将RTTave及RTTmin置为0,并将重置标识设置为第一预设值。
因为此时的往返时间很可能是错误的,所以可以将RTTave及RTTmin置为0,以保证后续计算结果的准确。该第一预设值用于表示对RTTmin和RTTave进行了重置操作,对其取值可以由本领域技术人员根据具体计算机程序进行选择,例如,可以将该第一预设值设置为1等整数,在此不做具体限定。
需要说明的是,上述步骤S301及步骤S302与步骤S303并无先后顺序要求,步骤S301是在实时进行的,用于检测当前的网络状态,当网络状态满足预设的往返时间重置条件时便触发步骤S302。而在拥塞避免阶段发生丢包时,则进行步骤S303。
S303,在拥塞避免阶段,当发生丢包时,获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
具体的,往返时间的平均值RTTave的确定方式可以为:
判断所述重置标识是否等于所述第一预设值;
如果是,则将RTTave置为RTTmin,并将所述重置标识置为第二预设值;
其中,所述第二预设值用于表示未对RTTmin和RTTave进行重置操作。
如果否,则根据公式计算并将RTTave置为
由于RTTave及RTTmin可能被进行了重置,所以首先需要确定RTTave及RTTmin的重置情况,即需要判断重置标识是否等于第一预设值。
当判断出重置标识等于第一预设值时,说明RTTave及RTTmin刚刚被进行了重置操作,那么在此之前的所有已发送的数据包对应的RTTave及RTTmin都已经不再具有参考价值,所以在计算RTTave时,则可以将当前的RTTmin作为RTTave的值即可。其中,RTTmin可以通过调用预先设置的函数来获取。
同时,由于此时RTTave及RTTmin的值已经不再是0,在该步骤中也未对RTTave及RTTmin进行重置操作,所以需要将该重置标识置为第二预设值,该第二预设值用于表示未对RTTmin和RTTave进行重置操作。对于该第二预设值的取值可以由本领域技术人员根据具体计算机程序进行选择,例如,可以将该第二预设值设置为0等与第一预设值不同的整数,在此不做具体限定。
当判断出重置标识不等于第一预设值时,说明RTTave及RTTmin没有被进行重置操作,那么在此之前到最近一次重置RTTave及RTTmin之间,所有已发送的数据包对应的RTTave及RTTmin都具有参考价值,所以在计算RTTave时,为了准确地计算出RTTave,可以根据公式计算并将RTTave置为
其中,n为最近一次将RTTave置为RTTmin后,到当前时刻为止,已接收到的用于表示数据包成功发送的确认字符的次数,且n>1。RTT为实际往返时间,即当前时刻发送数据包的实际往返时间。x、y为预设的系数,x+y=1,对于x、y的取值可以由本领域技术人员根据网络状况等因素进行选择,在发明人经过大量实验验证后确定x、y的取值分别优选为1/8和7/8。
表示接收到第n个确认字符时的平均往返时间,同理的,则表示接收到第n-1个确认字符时的平均往返时间,可以看出,上述公式为一个迭代公式,即从最近一次将RTTave置为RTTmin后,接收到第1个确认字符时的平均往返时间为接收到第2个确认字符时的平均往返时间为 以此类推,便可以得到
需要说明的是,为了计算方便,可以预先将该计算公式编写至预先设置的函数中,在需要计算时,便可以调用该预先设置的函数来获取的值,可以更加方便快速地获得RTTave的值。
S304,判断RTTmin是否等于RTTave,如果是,则执行步骤S305,如果否,则执行步骤S306;
由于在步骤S303中可能将RTTmin作为RTTave的值,所以需要判断RTTmin是否等于RTTave,以方便后续的计算过程。
S305,调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
当判断出RTTmin等于RTTave时,说明RTTave及RTTmin刚刚被进行了重置操作,进一步说明了网络状况刚刚进入过无序状态,为了保证数据包的成功发送率,避免造成拥塞丢包,所以此时可以适当降低拥塞窗口大小的取值,例如,可以将降低拥塞窗口大小降至当前大小的一半,当然并不局限于此。
S306,根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ,如果是,则执行步骤S307,如果否,则执行步骤S309;
S307,拒绝调整所述拥塞窗口大小;
S308,调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
S309,根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。
上述步骤S306-S309分别与步骤S102、步骤S103、步骤S104及步骤S105相似,相关之处参见步骤S102、步骤S103、步骤S104及步骤S105的部分说明即可,在此不再赘述。
如图4所示,为本发明实施例所提供的拥塞控制方法与现有拥塞控制方法在不同无线网络丢包率(1%-10%)下的带宽吞吐量的对比图,其中,zwestwood表示本发明实施例提供的拥塞控制方法在不同丢包率下的带宽吞吐量,westwood表示采用westwood算法的拥塞控制方法在不同丢包率下的带宽吞吐量,cubic表示采用cubic算法的拥塞控制方法在不同丢包率下的带宽吞吐量。
从图中可以看出,在丢包率为1%-10%时,采用本发明实施例提供的拥塞控制方法的带宽吞吐量均高于其他两种现有拥塞控制方法的带宽吞吐量。在丢包率为5%时,采用本发明实施例提供的拥塞控制方法的带宽吞吐量比采用westwood算法的拥塞控制方法的带宽吞吐量提高18%,而比采用cubic算法的拥塞控制方法的带宽吞吐量提高了将近50%。可见,采用本发明实施例提供的拥塞控制方法大大提高了带宽吞吐量,进而提高了带宽利用率。
可见本实施例中,在上述第一种方法基础上增加了对网络状态的检测,进而决定是否对RTTave及RTTmin进行重置,在计算RTTave时也根据RTTave及RTTmin的重置情况进行确定,使确定的RTTave更加准确,进而使后续对拥塞窗口大小的调整更加准确,进一步提高了带宽的吞吐率及利用率。
需要说明的是,上述第三种方法中的步骤S301-S305也可以运用在本发明实施例提供的第二种拥塞控制方法中的相应步骤,由于执行过程与上述过程基本一致,所以在此不再进行详细说明。
相应于上述方法实施例,本发明实施例还提供拥塞控制装置。下面对本发明实施例提供的第一种拥塞控制装置进行介绍。
如图5所示,一种拥塞控制装置,所述装置包括:
第一计算模块501,用于在拥塞避免阶段,当发生丢包时,获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
第一判断模块502,用于根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ;
第一执行模块503,用于在N小于预设的阈值γ时,拒绝调整所述拥塞窗口大小;
第二执行模块504,用于在N不小于预设的阈值γ时,调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
第一发送模块505,用于根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。
可见本实施例中,在拥塞避免阶段,当发生丢包时,首先获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave,然后根据RTTmin、RTTave及当前拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ,如果是,这种情况可以理解为是随机丢包的情况,则拒绝调整当前拥塞窗口大小,如果否,这种情况可以理解为是发生拥塞丢包的情况,则调整当前拥塞窗口大小,使得当前拥塞窗口大小的取值降低,最后根据调整后的拥塞窗口大小,通过拥塞窗口发送数据包。可见,在发生丢包时,先判断丢包类型,只有发生拥塞丢包时,才会降低当前拥塞窗口大小的取值,提高带宽的吞吐率及利用率。特别在无线网络状况较差时,随机丢包发生更加频繁,采用本方案提供的方法可以大大提高带宽的吞吐率及利用率。
具体的,第二执行模块504可以用于:
在N不小于预设的阈值γ时,按照以下表达式,调整所述拥塞窗口大小,
其中,cwnd'表示调整后所述拥塞窗口大小,cwnd表示调整前所述拥塞窗口大小,a为大于1的常数。
具体的,所述当前路由器中等待发送的数据包的数量N通过公式计算得到。
下面对本发明实施提供的第二种拥塞控制方法进行介绍。
如图6所示,一种拥塞控制装置,所述装置包括:
第一计算模块601,用于在拥塞避免阶段,当发生丢包时,获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
第一判断模块602,用于根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ;
第一执行模块603,用于在N小于预设的阈值γ时,拒绝调整所述拥塞窗口大小;
第二执行模块604,用于在N不小于预设的阈值γ时,调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
第一发送模块605,用于根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。
接收模块606,用于接收用于表示数据包成功发送的确认字符;
第二计算模块607,用于获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
第二判断模块608,用于根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ;
第三执行模块609,用于在N小于预设的阈值γ时,按照以下表达式,调整所述拥塞窗口大小,
cwnd'=cwnd+(γ-N);
第四执行模块610,用于在N不小于预设的阈值γ时,按照以下表达式,调整所述拥塞窗口大小,
cwnd'=cwnd+b,
其中,b为预设的大于0的整数;
第二发送模块611,用于根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。
可见本实施例中,在上述第一种装置基础上增加了在接收到用于表示数据包成功发送的确认字符时的拥塞控制装置,在确定当前路由器中等待发送的数据包的数量N后,通过判断N与预设的阈值γ的大小,确定增加拥塞窗口大小的程度,充分利用带宽,进一步提高了带宽的吞吐率及利用率。
具体的,第二执行模块604可以用于:
在N不小于预设的阈值γ时,按照以下表达式,调整所述拥塞窗口大小,
其中,cwnd'表示调整后所述拥塞窗口大小,cwnd表示调整前所述拥塞窗口大小,a为大于1的常数。
具体的,所述当前路由器中等待发送的数据包的数量N通过公式计算得到。
下面对本发明实施提供的第三种拥塞控制方法进行介绍。
如图7所示,一种拥塞控制装置,所述装置包括:
网络状态判断模块701,用于判断网络状态是否满足预设的往返时间重置条件;
重置模块702,用于在所述网络状态满足预设的往返时间重置条件时,对RTTmin和RTTave进行重置;
第一计算模块703,用于在拥塞避免阶段,当发生丢包时,获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
第三判断模块704,用于在所述获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave之后,判断RTTmin是否等于RTTave;
拥塞窗口调整模块705,用于在RTTmin等于RTTave时,调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
第一判断模块706,用于在RTTmin不等于RTTave时,根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ;
第一执行模块707,用于在N小于预设的阈值γ时,拒绝调整所述拥塞窗口大小;
第二执行模块708,用于在N不小于预设的阈值γ时,调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
第一发送模块709,用于根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。
可见本实施例中,在上述第一种装置基础上增加了对网络状态的检测,进而决定是否对RTTave及RTTmin进行重置,在计算RTTave时也根据RTTave及RTTmin的重置情况进行确定,使确定的RTTave更加准确,进而使后续对拥塞窗口大小的调整更加准确,进一步提高了带宽的吞吐率及利用率。
具体的,重置模块702可以用于:
在所述网络状态满足预设的往返时间重置条件时,将RTTave及RTTmin置为0,并将重置标识设置为第一预设值,其中,所述第一预设值用于表示对RTTmin和RTTave进行了重置操作。
具体的,第一计算模块703可以包括:
重置标识判断单元,用于在拥塞避免阶段,当发生丢包时,判断所述重置标识是否等于所述第一预设值;
第一往返时间确定单元,用于在所述重置标识等于所述第一预设值时,将RTTave置为RTTmin,并将所述重置标识置为第二预设值,其中,所述第二预设值用于表示未对RTTmin和RTTave进行重置操作;
第二往返时间确定单元,用于在所述重置标识不等于所述第一预设值时,根据公式计算并将RTTave置为
其中,n为将RTTave置为RTTmin后,当前时刻已接收到的所述用于表示数据包成功发送的确认字符的次数,且n>1,为接收到第n个所述确认字符时的平均往返时间,RTT为实际往返时间,x、y为预设的系数,x+y=1。
具体的,第二执行模块710可以用于:
在N不小于预设的阈值γ时,按照以下表达式,调整所述拥塞窗口大小,
其中,cwnd'表示调整后所述拥塞窗口大小,cwnd表示调整前所述拥塞窗口大小,a为大于1的常数。
具体的,所述当前路由器中等待发送的数据包的数量N通过公式计算得到。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (16)
1.一种拥塞控制方法,其特征在于,包括:
在拥塞避免阶段,当发生丢包时,获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ;
如果是,则拒绝调整所述拥塞窗口大小;
如果否,则调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。
2.如权利要求1所述的方法,其特征在于,所述调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低具体为:
按照以下表达式,调整所述拥塞窗口大小,
<mrow>
<msup>
<mi>cwnd</mi>
<mo>&prime;</mo>
</msup>
<mo>=</mo>
<mi>c</mi>
<mi>w</mi>
<mi>n</mi>
<mi>d</mi>
<mo>&times;</mo>
<mfrac>
<mn>1</mn>
<mi>a</mi>
</mfrac>
<mo>,</mo>
</mrow>
其中,cwnd'表示调整后所述拥塞窗口大小,cwnd表示调整前所述拥塞窗口大小,a为大于1的常数。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
接收用于表示数据包成功发送的确认字符;
获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ;
如果是,则按照以下表达式,调整所述拥塞窗口大小,
cwnd'=cwnd+(γ-N);
如果否,则按照以下表达式,调整所述拥塞窗口大小,
cwnd'=cwnd+b,
其中,b为预设的大于0的整数;
根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
判断网络状态是否满足预设的往返时间重置条件;
如果是,则对RTTmin和RTTave进行重置。
5.如权利要求4所述的方法,其特征在于,所述对RTTmin和RTTave进行重置具体为:
将RTTave及RTTmin置为0,并将重置标识设置为第一预设值,其中,所述第一预设值用于表示对RTTmin和RTTave进行了重置操作。
6.如权利要求5所述的方法,其特征在于,所述RTTave的确定方式具体为:
判断所述重置标识是否等于所述第一预设值;
如果是,则将RTTave置为RTTmin,并将所述重置标识置为第二预设值,其中,所述第二预设值用于表示未对RTTmin和RTTave进行重置操作;
如果否,则根据公式计算并将RTTave置为其中,n为将RTTave置为RTTmin后,当前时刻已接收到的所述用于表示数据包成功发送的确认字符的次数,且n>1,为接收到第n个所述确认字符时的平均往返时间,RTT为实际往返时间,x、y为预设的系数,x+y=1。
7.如权利要求6所述的方法,其特征在于,在所述获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave之后还包括:
判断RTTmin是否等于RTTave;
如果是,则调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
如果否,则根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ。
8.如权利要求1-7任一项所述的方法,其特征在于,所述当前路由器中等待发送的数据包的数量N通过公式计算得到。
9.一种拥塞控制装置,其特征在于,包括:
第一计算模块,用于在拥塞避免阶段,当发生丢包时,获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
第一判断模块,用于根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ;
第一执行模块,用于在N小于预设的阈值γ时,拒绝调整所述拥塞窗口大小;
第二执行模块,用于在N不小于预设的阈值γ时,调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
第一发送模块,用于根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。
10.如权利要求9所述的装置,其特征在于,所述第二执行模块具体用于:
在N不小于预设的阈值γ时,按照以下表达式,调整所述拥塞窗口大小,
<mrow>
<msup>
<mi>cwnd</mi>
<mo>&prime;</mo>
</msup>
<mo>=</mo>
<mi>c</mi>
<mi>w</mi>
<mi>n</mi>
<mi>d</mi>
<mo>&times;</mo>
<mfrac>
<mn>1</mn>
<mi>a</mi>
</mfrac>
<mo>,</mo>
</mrow>
其中,cwnd'表示调整后所述拥塞窗口大小,cwnd表示调整前所述拥塞窗口大小,a为大于1的常数。
11.如权利要求9所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收用于表示数据包成功发送的确认字符;
第二计算模块,用于获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave;
第二判断模块,用于根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ;
第三执行模块,用于在N小于预设的阈值γ时,按照以下表达式,调整所述拥塞窗口大小,
cwnd'=cwnd+(γ-N);
第四执行模块,用于在N不小于预设的阈值γ时,按照以下表达式,调整所述拥塞窗口大小,
cwnd'=cwnd+b,
其中,b为预设的大于0的整数;
第二发送模块,用于根据调整后的所述拥塞窗口大小,通过拥塞窗口发送数据包。
12.如权利要求9所述的装置,其特征在于,所述装置还包括:
网络状态判断模块,用于判断网络状态是否满足预设的往返时间重置条件;
重置模块,用于在所述网络状态满足预设的往返时间重置条件时,对RTTmin和RTTave进行重置。
13.如权利要求12所述的装置,其特征在于,所述重置模块,具体用于:
在所述网络状态满足预设的往返时间重置条件时,将RTTave及RTTmin置为0,并将重置标识设置为第一预设值,其中,所述第一预设值用于表示对RTTmin和RTTave进行了重置操作。
14.如权利要求13所述的装置,其特征在于,所述第一计算模块包括:
重置标识判断单元,用于在拥塞避免阶段,当发生丢包时,判断所述重置标识是否等于所述第一预设值;
第一往返时间确定单元,用于在所述重置标识等于所述第一预设值时,将RTTave置为RTTmin,并将所述重置标识置为第二预设值,其中,所述第二预设值用于表示未对RTTmin和RTTave进行重置操作;
第二往返时间确定单元,用于在所述重置标识不等于所述第一预设值时,根据公式计算并将RTTave置为其中,n为将RTTave置为RTTmin后,当前时刻已接收到的所述用于表示数据包成功发送的确认字符的次数,且n>1,为接收到第n个所述确认字符时的平均往返时间,RTT为实际往返时间,x、y为预设的系数,x+y=1。
15.如权利要求14所述的装置,其特征在于,所述装置还包括:
第三判断模块,用于在所述获得当前时刻往返时间的最小值RTTmin及拥塞窗口大小,并根据RTTmin计算往返时间的平均值RTTave之后,判断RTTmin是否等于RTTave;
拥塞窗口调整模块,用于在RTTmin等于RTTave时,调整所述拥塞窗口大小,使得所述拥塞窗口大小的取值降低;
所述第一判断模块还用于,用于在RTTmin不等于RTTave时,根据RTTmin、RTTave及所述拥塞窗口大小计算路由器中等待发送的数据包的数量N,并判断N是否小于预设的阈值γ。
16.如权利要求9-15任一项所述的装置,其特征在于,所述当前路由器中等待发送的数据包的数量N通过公式计算得到。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610802483.6A CN107800638B (zh) | 2016-09-05 | 2016-09-05 | 一种拥塞控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610802483.6A CN107800638B (zh) | 2016-09-05 | 2016-09-05 | 一种拥塞控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107800638A true CN107800638A (zh) | 2018-03-13 |
CN107800638B CN107800638B (zh) | 2020-07-31 |
Family
ID=61529843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610802483.6A Active CN107800638B (zh) | 2016-09-05 | 2016-09-05 | 一种拥塞控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107800638B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789719A (zh) * | 2016-12-15 | 2017-05-31 | 中国科学院沈阳自动化研究所 | 一种面向工业无线Mesh网络的拥塞控制方法及装置 |
CN109039900A (zh) * | 2018-08-10 | 2018-12-18 | 北京邮电大学 | 一种发送credit包的停止信号的方法和装置 |
CN110120921A (zh) * | 2019-05-13 | 2019-08-13 | 深圳市赛为智能股份有限公司 | 拥塞避免方法、装置、计算机设备及存储介质 |
CN111314961A (zh) * | 2020-02-19 | 2020-06-19 | 航天恒星科技有限公司 | Tcp传输方法、装置和系统 |
CN112492646A (zh) * | 2020-11-27 | 2021-03-12 | 清华大学 | 基于拥塞成因识别的拥塞控制方法及装置 |
CN112640373A (zh) * | 2018-08-08 | 2021-04-09 | 英国电讯有限公司 | 改善的拥塞响应 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1556629A (zh) * | 2004-01-06 | 2004-12-22 | �����ʵ��ѧ | 通信网络中调整拥塞窗口的方法 |
CN101094047A (zh) * | 2007-07-06 | 2007-12-26 | 中国人民解放军国防科学技术大学 | 基于网络状态测量的分阶段慢启动传输控制方法 |
US20110110230A1 (en) * | 2008-07-16 | 2011-05-12 | Huawei Technologies Co., Ltd. | Method and apparatus for controlling congestion of wireless multi-hop network |
CN102468941A (zh) * | 2010-11-18 | 2012-05-23 | 华为技术有限公司 | 网络丢包处理方法及装置 |
CN103051555A (zh) * | 2013-01-05 | 2013-04-17 | 北京航空航天大学 | 基于网络有效带宽和ecn机制的tcp拥塞控制方法 |
US20150188830A1 (en) * | 2013-12-30 | 2015-07-02 | Comcast Cable Communications, Llc | Systems And Methods For Managing Congestion |
CN105704055A (zh) * | 2016-01-18 | 2016-06-22 | 河南科技大学 | 一种基于自然启发的网络拥塞预防方法 |
-
2016
- 2016-09-05 CN CN201610802483.6A patent/CN107800638B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1556629A (zh) * | 2004-01-06 | 2004-12-22 | �����ʵ��ѧ | 通信网络中调整拥塞窗口的方法 |
CN101094047A (zh) * | 2007-07-06 | 2007-12-26 | 中国人民解放军国防科学技术大学 | 基于网络状态测量的分阶段慢启动传输控制方法 |
US20110110230A1 (en) * | 2008-07-16 | 2011-05-12 | Huawei Technologies Co., Ltd. | Method and apparatus for controlling congestion of wireless multi-hop network |
CN102468941A (zh) * | 2010-11-18 | 2012-05-23 | 华为技术有限公司 | 网络丢包处理方法及装置 |
CN103051555A (zh) * | 2013-01-05 | 2013-04-17 | 北京航空航天大学 | 基于网络有效带宽和ecn机制的tcp拥塞控制方法 |
US20150188830A1 (en) * | 2013-12-30 | 2015-07-02 | Comcast Cable Communications, Llc | Systems And Methods For Managing Congestion |
CN105704055A (zh) * | 2016-01-18 | 2016-06-22 | 河南科技大学 | 一种基于自然启发的网络拥塞预防方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789719A (zh) * | 2016-12-15 | 2017-05-31 | 中国科学院沈阳自动化研究所 | 一种面向工业无线Mesh网络的拥塞控制方法及装置 |
CN106789719B (zh) * | 2016-12-15 | 2019-06-04 | 中国科学院沈阳自动化研究所 | 一种面向工业无线Mesh网络的拥塞控制方法及装置 |
CN112640373A (zh) * | 2018-08-08 | 2021-04-09 | 英国电讯有限公司 | 改善的拥塞响应 |
CN109039900A (zh) * | 2018-08-10 | 2018-12-18 | 北京邮电大学 | 一种发送credit包的停止信号的方法和装置 |
CN110120921A (zh) * | 2019-05-13 | 2019-08-13 | 深圳市赛为智能股份有限公司 | 拥塞避免方法、装置、计算机设备及存储介质 |
CN110120921B (zh) * | 2019-05-13 | 2022-07-01 | 深圳市赛为智能股份有限公司 | 拥塞避免方法、装置、计算机设备及存储介质 |
CN111314961A (zh) * | 2020-02-19 | 2020-06-19 | 航天恒星科技有限公司 | Tcp传输方法、装置和系统 |
CN112492646A (zh) * | 2020-11-27 | 2021-03-12 | 清华大学 | 基于拥塞成因识别的拥塞控制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107800638B (zh) | 2020-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107800638B (zh) | 一种拥塞控制方法及装置 | |
US7835273B2 (en) | Method for transmitting data in mobile ad hoc network and network apparatus using the same | |
CN112165355B (zh) | 一种面向卫星网络的基于udp的可靠数据传输方法 | |
US8418016B2 (en) | Communication system, communication device, and communication method | |
US7808910B2 (en) | Communication terminal, congestion control method, and congestion control program | |
US8514715B2 (en) | Congestion window control based on queuing delay and packet loss | |
JP4708978B2 (ja) | 高スループットを実現する通信システム、通信端末、セッション中継装置、及び通信プロトコル | |
KR100904586B1 (ko) | 송신 제어 프로토콜의 왕복 시간 관리를 위한 시스템과지원 방법 및 장치 | |
US8306062B1 (en) | Method and apparatus of adaptive large receive offload | |
JP5625748B2 (ja) | 通信装置、通信システム、プログラム及び通信方法 | |
CN107360101B (zh) | 一种基于自适应参数的tcp拥塞控制算法 | |
CN106789702B (zh) | 控制tcp传输性能的方法及装置 | |
US8565249B2 (en) | Queue management system and methods | |
CN110677355A (zh) | 一种丢包应对方法、装置、电子设备及存储介质 | |
Waghmare et al. | Comparative Analysis of different TCP variants in a wireless environment | |
Lai et al. | Enhancing wireless TCP: A serialized-timer approach | |
US7613976B2 (en) | Method for setting the retransmission timeout period in a packet switched communication network | |
KR100912178B1 (ko) | 무선 환경에서의 혼잡제어방법 및 기록매체 | |
CN104980365A (zh) | 一种基于连续丢包拥塞判断的tcp传输加速方法 | |
Altahir et al. | Performance evaluation of TCP congestion control mechanisms using NS-2 | |
Park et al. | Distinguishing the cause of TCP retransmission timeouts in multi-hop wireless networks | |
KR101334990B1 (ko) | 전송 제어 프로토콜의 혼잡 윈도우 제어 방법 | |
TWI308012B (en) | Method for adaptive estimation of retransmission timeout in wireless communication systems | |
Dave et al. | Performance comparison between TCP sack and TCP Vegas using NS-2 Simulator | |
KR100915996B1 (ko) | 대역폭변화에 따른 적응형 전송 제어 프로토콜을 이용한데이터 패킷 전송 방법 및 그를 위한 송신측 단말장치 |
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 |