1.一种基于延迟的自适应拥塞控制方法,其特征在于,在排队延迟抖动的周期内,根据排队延迟是否曾到达0点,动态地改变拥塞控制过程中拥塞窗口的调节系数,包括以下步骤:步骤一,发送端每收到一个ACK包时,通过如下公式调节拥塞窗口cwnd:
其中,cwnd′为根据当前拥塞窗口cwnd计算得到的新拥塞窗口,δ为预设置且不变化的参数,V和θ是动态变化的参数,CR为当前速率,TR为目标速率;
步骤二,发送端每收到一个ACK包时,根据拥塞窗口cwnd的变化情况动态调节参数V:当窗口持续变大或变小时则增大V,否则将V置为1;
步骤三,发送端每收到一个ACK包时,根据每个振荡周期内排队延迟dq是否曾到达过0点来动态调节参数θ,当排队延迟dq曾到达过0点则减小θ,否则增加θ;其中振荡周期通过以下方法获得:若当前排队延迟大于历史排队延迟,记排队延迟变化方向为增,否则记排队延迟变化方向为减;当排队延迟由增变为减或由减变为增时,认为排队延迟变化方向发生一次转向,以排队延迟每发生两次转向的时间为一个振荡周期;
所述的步骤二包括以下步骤:
步骤A1,发送端每收到一个ACK包时,根据ACK包的接收时间减去该ACK包的发送时间得到瞬时往返延迟RTT;发送端记当前时刻之前一个RTT时刻的拥塞窗口大小为历史窗口;若当前时刻的拥塞窗口大于历史窗口,则在发送端记窗口调节方向为正,反之,记窗口调节方向为负;
步骤A2,判断最近连续三个RTT以内窗口调节方向是否一致,若一致,则将V加倍;若最近连续三个RTT内窗口调节方向不一致,则将V重置为1;
所述的步骤三中,若在当前周期内发现dq=0,则认为dq曾经到达过0点,此时,先记录当前的θ值为θempty,然后记录当前周期的结束时刻为Tempty,最后将θ调节为β*θ,其中β是小于1且大于0的系数;若在当前周期内没有发现dq=0,则根据当前时刻t距离Tempty的时间长度的三次函数增加θ,公式如下:其中,w为默认值为0.1的参数,t为当前时刻。
2.根据权利要求1所述的方法,其特征在于,所述的步骤一中,CR和TR通过以下公式计算:CR=cwnd/RTTstand
TR=δ/dq
其中,排队延迟dq=RTTstand‑RTTmin,RTTstand为最近0.5srtt内测量所得的最小往返延迟数值,其中srtt为TCP中默认的往返延迟的指数加权平滑值,RTTmin为最近10秒内测量到的最小往返延迟数值。