一种网络拥塞控制方法、装置及存储介质转让专利

申请号 : CN202310504861.2

文献号 : CN116684359B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王恒唐孝国

申请人 : 铜仁职业技术学院

摘要 :

本发明公开了本发明提供一种网络拥塞控制方法、装置和存储介质,通过估算瓶颈带宽和最小往返时间,实时监测网络状态。在收到确认数据包ACK时,检查数据包丢失情况,根据丢包和高往返时间阈值调整发送速率和拥塞窗口。同时,采用自适应重传策略,根据往返时间样本更新重传超时时间RTO估计值。此外,还引入Reed‑Solomon编码纠错编码方案和基于队列长度的丢包策略,以提高网络性能。通过动态调整发送速率和拥塞窗口,本发明在高丢包率环境下能降低延迟、提高带宽利用率和抗丢包性能。

权利要求 :

1.一种网络拥塞控制方法,其特征在于,所述方法包括以下步骤:S01、估算瓶颈带宽和最小往返时间,通过监测已确认数据包的到达速率和往返时间来估算当前网络的瓶颈带宽BtlBw和最小往返时间min_rtt,检查当前最小往返时间是否超过预先设定的阈值,如果最小往返时间超过阈值,将高往返时间标志位high_rtt_detected设为True;

S02、更新控制循环状态,根据瓶颈带宽和最小往返时间的估计值,BBR控制循环按照TCP拥塞控制算法BBR在探测瓶颈带宽、探测最小往返时间和启动阶段之间切换;

S03、在收到确认数据包ACK时,检查是否有数据包丢失,如果发现连续的丢包事件,将丢包标志位packet_loss_detected设为True;

S04、根据丢包标志位packet_loss_detected和高往返时间标志位high_rtt_detected来调整发送速率和拥塞窗口:如果丢包标志位packet_loss_detected为True,且高往返时间标志位high_rtt_detected为False,降低发送速率并缩小拥塞窗口;

如果丢包标志位packet_loss_detected为False,且高往返时间标志位high_rtt_detected为True,增加拥塞窗口;

如果丢包标志位packet_loss_detected和高往返时间标志位high_rtt_detected均为True,则通过以下加权窗口调整方法调整拥塞窗口:a)计算拥塞窗口调整值:

Δcend=w_loss*shrink_factor‑w_rtt*increase_factorb)更新拥塞窗口:cwnd_new=cwnd_old+Δcwnd其中:Δcwnd表示拥塞窗口的调整值;cwnd_new表示更新后的拥塞窗口大小;cwnd_old表示更新前的拥塞窗口大小;w_loss表示数据包丢失的权重系数;w_rtt表示往返时间的权重系数;shrink_factor表示缩小拥塞窗口的程度;increase_factor表示增加拥塞窗口的程度;

如果丢包标志位packet_loss_detected和高往返时间标志位high_rtt_detected均为False,按照TCP拥塞控制算法BBR调整发送速率和拥塞窗口;

S05、在每次控制循环状态更新时,将丢包标志位packet_loss_detected和高往返时间标志位high_rtt_detected重置为False。

2.根据权利要求1所述的网络拥塞控制方法,其特征在于,还包括自适应重传,所述自适应重传的步骤为:步骤1、将重传超时时间RTO的初始值设为一个预先设定的值;

步骤2、每当发送一个数据包,记录其发送时间,同时,记录所有未确认数据包的发送时间;

步骤3、每当接收到一个确认数据包ACK,计算往返时间样本,所述往返时间样本为确认的数据包的发送时间与接收ACK的时间之差,然后,使用往返时间样本更新重传超时时间RTO估计值,RTO估计值的更新方法为:RTO_new=α*RTO_old+(1‑α)*RTT_sample其中,RTO_new为更新后的重传超时时间RTO估计值,α为权重系数,取值范围在0到1之间,RTO_old为更新前的重传超时时间RTO估计值,RTT_sample为一个新收到的往返时间样本,即数据包发送与对应ACK接收之间的时间差;

步骤4、当检测到数据包丢失时,检查已发送但未确认的数据包,对于已经超过RTO估计值的数据包,将其标记为需要重传,并将重传超时时间RTO估计值增加一个固定值;

步骤5、当检测到连续的丢包事件时,降低发送速率。

3.根据权利要求2所述的网络拥塞控制方法,其特征在于,所述将重传超时时间RTO估计值增加一个固定值的方法为:RTO_new=RTO_old+delta

其中,RTO_new为更新后的重传超时时间RTO估计值,RTO_old为更新前的重传超时时间RTO估计值,delta为时间增量值;

时间增量值delta的计算方法为:

i.将delta设置为一个默认值delta_initial,delta=delta_initial;

ii.计算丢包率loss_rate;

iii.计算调整因子adjustment_factor:adjustment_factor=(loss_rate‑target_loss_rate)/target_loss_rate,target_loss_rate表示目标丢包率;

iv.根据调整因子,更新delta值:

delta=delta*(1+adjustment_factor);

v.将delta值限制最小增量delta_min和最大增量delta_max之间:delta=max(delta_min,min(delta,delta_max))。

4.根据权利要求1所述的网络拥塞控制方法,其特征在于,还包括:将待发送的数据包分割成k个相等大小的数据块,使用Reed‑Solomon编码纠错编码方案为k个数据块生成n‑k个校验块,将k个数据块和n‑k个校验块通过一个数据包发送给接收端。

5.根据权利要求1所述的网络拥塞控制方法,其特征在于,还包括:A1、设置队列长度最小阈值min_th和最大阈值max_th、最大丢包概率max_p和权重参数w_q;当网络设备接收到数据包时,计算当前队列长度queue_length和平均队列长度avg_queue_length;

A2、根据平均队列长度avg_queue_length与最小阈值min_th和最大阈值max_th的关系,确定丢包策略,所述丢包策略为:如果平均队列长度小于最小阈值min_th,接收数据包,不执行丢包操作;

如果平均队列长度在最小阈值min_th和最大阈值max_th之间,计算丢包概率,并根据丢包概率决定是否丢弃数据包;

如果平均队列长度大于最大阈值max_th,丢弃数据包。

6.根据权利要求5所述的网络拥塞控制方法,其特征在于,所述计算丢包概率,并根据丢包概率决定是否丢弃数据包的具体方法为:计算平均队列长度:

avg_queue_length=(1‑w_q)*avg_queue_length+w_q*queue_length计算相对队列长度:

relative_queue_length=(avg_queue_length‑min_th)/(max_th‑min_th)计算丢包概率:drop_probability=max_p*relative_queue_length根据丢包概率决定是否丢弃数据包:

生成一个随机数rand;如果rand

其中,relative_queue_length代表相对队列长度,表示平均队列长度与最小阈值和最大阈值之间的相对位置,值域为0到1;

avg_queue_length代表平均队列长度,表示当前队列长度的加权平均值;

drop_probability表示丢包概率,表示当前平均队列长度下,数据包被丢弃的概率;

rand表示随机数,值域为0到1。

7.一种网络拥塞控制装置,其特征在于,所述装置包括:处理器和存储器,其中,所述存储器中存储有适于所述处理器执行的计算机程序指令,所述计算机程序指令被所述处理器运行时使得所述处理器执行如权利要求1‑6任一项所述的网络拥塞控制方法。

8.一种存储介质,包括存储在所述存储介质上的计算机程序指令,其中,所述计算机程序指令被处理器运行时执行如权利要求1‑6任一项所述的网络拥塞控制方法。

说明书 :

一种网络拥塞控制方法、装置及存储介质

技术领域

[0001] 本发明涉及一种网络拥塞控制方法、装置及存储介质,属于网络技术领域。

背景技术

[0002] 网络拥塞控制是计算机网络中关键的技术之一,它主要负责防止网络过载、确保数据包有效传输、避免拥塞和降低延迟。传统的拥塞控制算法,如TCP拥塞控制算法(例如Tahoe、Reno、Cubic等),主要依靠对数据包丢失、延迟和网络状态的反馈来动态调整传输速率和拥塞窗口大小。然而,在复杂多变的网络环境中,这些传统算法很难充分适应各种场景,可能导致网络性能不佳,从而影响用户体验。例如,传统TCP拥塞控制算法在高速长距离网络场景中可能无法实现最优网络传输性能:在高速长距离网络中,由于传播延迟较大,传统TCP拥塞控制算法(如Tahoe、Reno等)可能无法充分利用网络带宽。这是因为它们主要依赖数据包丢失作为拥塞信号,而数据包丢失会导致窗口削减,从而降低传输速率。在高速长距离网络中,这种机制可能导致带宽利用率低下,降低网络性能。
[0003] 为了解决以上问题,现有技术通过使用TCP拥塞控制算法BBR(BottleneckBandwidthandRound‑trippropagationtime)。BBR利用测量的瓶颈带宽和往返时间来调整发送速率,而不仅仅依赖于数据包丢失。这样,在高速长距离网络中,BBR能够更好地适应变化的网络条件,提高带宽利用率和网络性能。
[0004] 但是TCP拥塞控制算法BBR存在的问题是:在高丢包率环境下,由于BBR主要关注带宽和往返时间的估计,而不是数据包丢失,这使得BBR可能无法很好地调整传输速率,导致性能下降。

发明内容

[0005] 本发明要解决的技术问题是:提供一种网络拥塞控制方法、装置及存储介质,以克服现有技术的不足。
[0006] 本发明的技术方案是:
[0007] 第一方面,提供一种网络拥塞控制方法,所述方法包括以下步骤:
[0008] S01、估算瓶颈带宽和最小往返时间,通过监测已确认数据包的到达速率和往返时间来估算当前网络的瓶颈带宽BtlBw和最小往返时间min_rtt,检查当前最小往返时间是否超过预先设定的阈值,如果最小往返时间超过阈值,将高往返时间标志位high_rtt_detected设为True;
[0009] S02、更新控制循环状态,根据瓶颈带宽和最小往返时间的估计值,BBR控制循环按照TCP拥塞控制算法BBR在探测瓶颈带宽、探测最小往返时间和启动阶段之间切换;
[0010] S03、在收到确认数据包ACK时,检查是否有数据包丢失,如果发现连续的丢包事件,将丢包标志位packet_loss_detected设为True;
[0011] S04、根据丢包标志位packet_loss_detected和高往返时间标志位high_rtt_detected来调整发送速率和拥塞窗口:
[0012] 如果丢包标志位packet_loss_detected为True,且高往返时间标志位high_rtt_detected为False,降低发送速率并缩小拥塞窗口;
[0013] 如果丢包标志位packet_loss_detected为False,且高往返时间标志位high_rtt_detected为True,增加拥塞窗口;
[0014] 如果丢包标志位packet_loss_detected和高往返时间标志位high_rtt_detected均为True,则通过以下加权窗口调整方法调整拥塞窗口:
[0015] a)计算拥塞窗口调整值:
[0016] Δcwnd=w_loss*shrink_factor‑w_rtt*increase_factor
[0017] b)更新拥塞窗口:cwnd_new=cwnd_old+Δcwnd
[0018] 其中:Δcwnd表示拥塞窗口的调整值;cwnd_new表示更新后的拥塞窗口大小;cwnd_old表示更新前的拥塞窗口大小;w_loss表示数据包丢失的权重系数;w_rtt表示往返时间的权重系数;shrink_factor表示缩小拥塞窗口的程度;increase_factor表示增加拥塞窗口的程度;
[0019] 如果丢包标志位packet_loss_detected和高往返时间标志位high_rtt_detected均为False,按照TCP拥塞控制算法BBR调整发送速率和拥塞窗口;
[0020] S05、在每次控制循环状态更新时,将丢包标志位
[0021] packet_loss_detected和高往返时间标志位high_rtt_detected重置为False。
[0022] 进一步地,还包括自适应重传,所述自适应重传的步骤为:
[0023] 步骤1、将重传超时时间RTO的初始值设为一个预先设定的值;
[0024] 步骤2、每当发送一个数据包,记录其发送时间,同时,记录所有未确认数据包的发送时间;
[0025] 步骤3、每当接收到一个确认数据包ACK,计算往返时间样本,所述往返时间样本为确认的数据包的发送时间与接收ACK的时间之差,然后,使用往返时间样本更新重传超时时间RTO估计值,RTO估计值的更新方法为:
[0026] RTO_new=α*RTO_old+(1‑α)*RTT_sample
[0027] 其中,RTO_new为更新后的重传超时时间RTO估计值,α为权重系数,取值范围在0到1之间,RTO_old为更新前的重传超时时间RTO估计值,RTT_sample为一个新收到的往返时间样本,即数据包发送与对应ACK接收之间的时间差;
[0028] 步骤4、当检测到数据包丢失时,检查已发送但未确认的数据包,对于已经超过RTO估计值的数据包,将其标记为需要重传,并将重传超时时间RTO估计值增加一个固定值;
[0029] 步骤5、当检测到连续的丢包事件时,降低发送速率。
[0030] 进一步地,所述将重传超时时间RTO估计值增加一个固定值的方法为:
[0031] RTO_new=RTO_old+delta
[0032] 其中,RTO_new为更新后的重传超时时间RTO估计值,RTO_old为更新前的重传超时时间RTO估计值,delta为时间增量值;
[0033] 时间增量值delta的计算方法为:
[0034] i.将delta设置为一个默认值delta_initial,delta=delta_initial;
[0035] ii.计算丢包率loss_rate;
[0036] iii.计算调整因子adjustment_factor:
[0037] a)adjustment_factor=(loss_rate‑target_loss_rate)/target_loss_rate,[0038] b)target_loss_rate表示目标丢包率;
[0039] iv.根据调整因子,更新delta值:
[0040] delta=delta*(1+adjustment_factor);
[0041] v.将delta值限制最小增量delta_min和最大增量delta_max之间:
[0042] delta=max(delta_min,min(delta,delta_max))。
[0043] 进一步地,还包括:将待发送的数据包分割成k个相等大小的数据块,使用Reed‑Solomon编码纠错编码方案为k个数据块生成n‑k个校验块,将k个数据块和n‑k个校验块通过一个数据包发送给接收端。
[0044] 进一步地,还包括:
[0045] A1、设置队列长度最小阈值min_th和最大阈值max_th、最大丢包概率max_p和权重参数w_q;当网络设备接收到数据包时,计算当前队列长度queue_length和平均队列长度avg_queue_length;
[0046] A2、根据平均队列长度avg_queue_length与最小阈值min_th和最大阈值max_th的关系,确定丢包策略,所述丢包策略为:
[0047] 如果平均队列长度小于最小阈值min_th,接收数据包,不执行丢包操作;
[0048] 如果平均队列长度在最小阈值min_th和最大阈值max_th之间,计算丢包概率,并根据丢包概率决定是否丢弃数据包;
[0049] 如果平均队列长度大于最大阈值max_th,丢弃数据包。
[0050] 具体地,所述计算丢包概率,并根据丢包概率决定是否丢弃数据包的具体方法为:
[0051] 计算平均队列长度:
[0052] avg_queue_length=(1‑w_q)*avg_queue_length+w_q*queue_length[0053] 计算相对队列长度:
[0054] relative_queue_length=(avg_queue_length‑min_th)/(max_th‑min_th)[0055] 计算丢包概率:
[0056] drop_probability=max_p*relative_queue_length
[0057] 根据丢包概率决定是否丢弃数据包:
[0058] 生成一个随机数rand;如果rand
[0059] 其中,relative_queue_length代表相对队列长度,表示平均队列长度与最小阈值和最大阈值之间的相对位置,值域为0到1;
[0060] avg_queue_length代表平均队列长度,表示当前队列长度的加权平均值;
[0061] drop_probability表示丢包概率,表示当前平均队列长度下,数据包被丢弃的概率;
[0062] rand表示随机数,值域为0到1。
[0063] 第二方面,提供一种网络拥塞控制装置,所述装置包括:处理器和存储器,其中,所述存储器中存储有适于所述处理器执行的计算机程序指令,所述计算机程序指令被所述处理器运行时使得所述处理器执行如第一方面任一项所述的网络拥塞控制方法。
[0064] 第三方面,提供一种存储介质,包括存储在所述存储介质上的计算机程序指令,其中,所述计算机程序指令被处理器运行时执行第一方面任一项所述的网络拥塞控制方法。
[0065] 本发明的有益效果是:与现有技术相比,
[0066] 1)本发明在发生连续丢包事件时,通过降低发送速率并缩小拥塞窗口,有助于减少网络拥塞,提高数据包传输的成功率。当往返时间过高时,增加拥塞窗口以充分利用网络带宽,从而提高网络传输效率;
[0067] 2)本发明在TCP拥塞控制算法BBR的基础上,通过引入丢包标志位和高往返时间标志位,可以在不同网络条件下更好地平衡延迟和带宽利用率。这样,在高丢包率环境下可以降低发送速率以减小拥塞,同时在高速长距离网络中可以保持较高的带宽利用率;
[0068] 3)本发明通过动态调整重传超时时间RTO估计值,可以更准确地判断数据包是否丢失,从而避免因为固定RTO导致的不必要的重传,提高网络资源利用率;
[0069] 4)通过计算往返时间样本并更新RTO估计值,使得重传机制能够更好地适应网络状况的变化,减少因网络延迟波动导致的误判和不必要的重传;
[0070] 5)当检测到数据包丢失时,对已发送但未确认的超过RTO估计值的数据包进行重传,提高数据包传输的可靠性。此外,在连续丢包事件发生时,通过降低发送速率可以有效减少网络拥塞,进一步提高数据传输的成功率;
[0071] 6)本发明通过调整发送速率和拥塞窗口,以及实现自适应重传,可以在保证数据传输可靠性的同时,更好地进行拥塞控制,提高网络性能;
[0072] 7)本发明通过根据当前网络状况计算调整因子并动态调整重传超时时间(RTO)估计值的增量,实现了对重传超时时间的动态调整,使重传机制更加灵活和准确;
[0073] 8)本发明通过计算丢包率,并根据目标丢包率来调整重传超时时间,使得算法能够在保证数据传输可靠性的同时,更好地适应网络环境的变化,减少不必要的重传;
[0074] 9)本发明通过根据丢包率和目标丢包率计算调整因子,实现了对时间增量值delta的自适应调整,使得重传机制能够更好地适应网络状况的变化,降低因网络延迟波动导致的误判和不必要的重传;
[0075] 10)本发明通过将delta值限制在最小增量和最大增量之间,避免了过大或过小的增量值导致的重传超时时间估计值异常,从而提高了网络传输性能;
[0076] 11)本发明通过将待发送的数据包分割成k个相等大小的数据块,并使用Reed‑Solomon编码纠错编码方案为k个数据块生成n‑k个校验块,可以增加数据传输过程中的冗余信息,从而提高数据传输的可靠性;
[0077] 12)本发明利用Reed‑Solomon编码具有良好的容错能力的特点,通过引入n‑k个校验块,使得接收端在数据传输过程中出现错误时,可以根据校验块恢复丢失或损坏的数据块,降低了因丢包或误码导致的数据传输失败的概率;
[0078] 13)本发明由于Reed‑Solomon编码的容错能力,使得即使在数据包丢失或出现错误的情况下,接收端仍可以恢复数据。这样,可以减少因数据包丢失或错误而导致的重传次数,从而降低网络拥塞,提高网络性能;
[0079] 14)本发明可以在队列长度超过阈值时提前采取措施,主动丢弃或标记部分数据包,从而降低网络拥塞和减小队列振荡。这有助于改善BBR在某些场景下导致的队列振荡问题;
[0080] 15)本发明可以动态计算丢包概率,并根据概率决定是否丢弃数据包。这有助于保持队列长度在可控范围内,从而减小队列振荡现象。

附图说明

[0081] 图1为本公开至少一个实施例提供的网络拥塞控制方法的流程图;
[0082] 图2为本公开至少一个实施例提供的网络拥塞控制装置的示意性框图;
[0083] 图3为本公开至少一个实施例提供的存储介质的示意性框图。

具体实施方式

[0084] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0085] 实施例一:
[0086] 参考图1,一种网络拥塞控制方法,所述方法包括以下步骤:
[0087] S01、估算瓶颈带宽和最小往返时间,通过监测已确认数据包的到达速率和往返时间来估算当前网络的瓶颈带宽BtlBw和最小往返时间
[0088] min_rtt,这两个参数可以帮助了解网络的当前状态,从而作出相应的拥塞控制决策。检查当前最小往返时间是否超过预先设定的阈值,如果最小往返时间超过阈值,将高往返时间标志位high_rtt_detected设为True;
[0089] S02、更新控制循环状态,根据瓶颈带宽和最小往返时间的估计值,BBR控制循环按照TCP拥塞控制算法BBR在探测瓶颈带宽、探测最小往返时间和启动阶段之间切换;这些状态之间的切换有助于更准确地调整发送速率和拥塞窗口大小。
[0090] S03、在收到确认数据包ACK时,检查是否有数据包丢失,如果发现连续的丢包事件,将丢包标志位packet_loss_detected设为True;这有助于及时发现网络中的丢包现象,从而采取相应的措施减少网络拥塞。
[0091] S04、根据丢包标志位packet_loss_detected和高往返时间标志位high_rtt_detected来调整发送速率和拥塞窗口:
[0092] 如果丢包标志位packet_loss_detected为True,且高往返时间标志位high_rtt_detected为False,降低发送速率并缩小拥塞窗口;
[0093] 如果丢包标志位packet_loss_detected为False,且高往返时间标志位high_rtt_detected为True,增加拥塞窗口;
[0094] 如果丢包标志位packet_loss_detected和高往返时间标志位high_rtt_detected均为True,则通过以下加权窗口调整方法调整拥塞窗口:
[0095] a)计算拥塞窗口调整值:
[0096] Δcwnd=w_loss*shrink_factor‑w_rtt*increase_factor
[0097] b)更新拥塞窗口:
[0098] cwnd_new=cwnd_old+Δcwnd
[0099] 其中:Δcwnd表示拥塞窗口的调整值;cwnd_new表示更新后的拥塞窗口大小;cwnd_old表示更新前的拥塞窗口大小;w_loss表示数据包丢失的权重系数,可以根据网络环境中数据包丢失的频率和严重程度,为w_loss选择一个合适的值。如果认为数据包丢失对网络性能的影响较大,可以选择较高的权重系数。一般来说,w_loss的取值范围在0到1之间;w_rtt表示往返时间的权重系数,如果认为往返时间对网络性能的影响较大,可以选择较高的权重系数。一般来说,w_rtt的取值范围在0到1之间;shrink_factor表示缩小拥塞窗口的程度,该参数可以根据实际需求和经验进行调整。例如,可以选择一个固定的缩小比例,如0.5,这表示每次检测到数据包丢失时,拥塞窗口将减少一半;increase_factor表示增加拥塞窗口的程度,可以根据实际需求和经验进行调整。例如,您可以选择一个固定的增加比例,如0.1,这表示每次检测到高往返时间时,拥塞窗口将增加10%;
[0100] 如果丢包标志位packet_loss_detected和高往返时间标志位high_rtt_detected均为False,按照TCP拥塞控制算法BBR调整发送速率和拥塞窗口;
[0101] 这一步骤使得拥塞控制方法能够根据当前网络状态灵活地调整发送速率和拥塞窗口大小,从而减轻拥塞现象。
[0102] S05、在每次控制循环状态更新时,将丢包标志位packet_loss_detected和高往返时间标志位high_rtt_detected重置为False。这一步骤确保在每次循环中都以最新的网络状态为基础进行拥塞控制。
[0103] 为了进一步解决在高丢包率环境下,BBR可能无法很好地调整传输速率,导致性能下降的问题,实施例1还包括自适应重传,所述自适应重传的步骤为:
[0104] 步骤1、将重传超时时间RTO的初始值设为一个预先设定的值;这个值是用于判断数据包是否需要重传的基准。
[0105] 步骤2、每当发送一个数据包,记录其发送时间,同时,记录所有未确认数据包的发送时间;这些信息用于后续计算往返时间(RTT)样本和判断是否需要重传。
[0106] 步骤3、每当接收到一个确认数据包ACK,计算往返时间样本,所述往返时间样本为确认的数据包的发送时间与接收ACK的时间之差,然后,使用往返时间样本更新重传超时时间RTO估计值,RTO估计值的更新方法为:
[0107] RTO_new=α*RTO_old+(1‑α)*RTT_sample
[0108] 其中,RTO_new为更新后的重传超时时间RTO估计值,α为权重系数,取值范围在0到1之间,RTO_old为更新前的重传超时时间RTO估计值,RTT_sample为一个新收到的往返时间样本,即数据包发送与对应ACK接收之间的时间差;
[0109] 本步骤的更新方法采用指数加权移动平均(EWMA)算法,通过平衡之前的RTO估计值(RTO_old)和新收到的RTT样本,使得RTO估计值能够适应网络延迟的变化。
[0110] 步骤4、当检测到数据包丢失时,检查已发送但未确认的数据包,对于已经超过RTO估计值的数据包,将其标记为需要重传,并将重传超时时间RTO估计值增加一个固定值;这样,数据包的重传策略能够适应网络状态的变化,避免过早或过晚地重传数据包。
[0111] 步骤5、当检测到连续的丢包事件时,降低发送速率。这有助于减轻网络拥塞,提高数据传输的成功率。
[0112] 通过自适应重传,使得本公开可以根据实时网络状态动态调整重传超时时间,使得重传策略能够更好地适应网络环境的变化。通过记录发送时间和更新RTO估计值,可以在适当的时机触发数据包的重传,避免过早或过晚的重传,从而提高传输效率。在连续丢包事件发生时,降低发送速率有助于减轻网络拥塞,提高数据传输的成功率。自适应重传机制使得重传策略能够根据网络状态的变化进行调整,从而在不同网络环境下保持较好的传输性能和稳定性。
[0113] 实施例1还包括将重传超时时间RTO估计值增加一个固定值的方法为:
[0114] RTO_new=RTO_old+delta
[0115] 其中,RTO_new为更新后的重传超时时间RTO估计值,RTO_old为更新前的重传超时时间RTO估计值,delta为时间增量值;
[0116] 时间增量值delta的计算方法为:
[0117] i.降delta设置为一个默认值delta_initial,delta=delta_initial,这个默认值用作基础RTO增量值。
[0118] ii.计算丢包率loss_rate,用于后续调整delta值。
[0119] iii.计算调整因子adjustment_factor,用于衡量实际丢包率与目标丢包率[0120] (target_loss_rate)之间的偏差。调整因子反映了当前网络丢包状况与期望丢包状况的差距:
[0121] a)adjustment_factor=(loss_rate‑target_loss_rate)/
[0122] target_loss_rate,
[0123] b)target_loss_rate表示目标丢包率;
[0124] iv.根据调整因子,更新delta值,如果实际丢包率高于目标丢包率,delta值将增大;如果实际丢包率低于目标丢包率,delta值将减小。这样,
[0125] delta值能够根据网络状况动态调整:
[0126] delta=delta*(1+adjustment_factor);
[0127] v.将elta值限制最小增量delta_min和最大增量delta_max之间:
[0128] delta=max(delta_min,min(delta,delta_max))。
[0129] 本公开根据实际丢包率和目标丢包率之间的差距动态调整重传超时时间RTO的增量值,使得重传策略能够更好地适应网络环境的变化。通过动态调整RTO增量值,可以在适当的时机触发数据包的重传,避免过早或过晚的重传,从而提高传输效率。在丢包率较高的网络环境下,通过增大delta值,可以延长重传超时时间,从而降低发送速率,减轻网络拥塞,提高数据传输的成功率。该方法使得重传策略能够根据网络状态的变化进行调整,从而在不同网络环境下保持较好的传输性能和稳定性。
[0130] 为了进一步解决在高丢包率环境下,BBR可能无法很好地调整传输速率,导致性能下降的问题,实施例1还包括将待发送的数据包分割成k个相等大小的数据块,使用Reed‑Solomon编码纠错编码方案为k个数据块生成n‑k个校验块,将k个数据块和n‑k个校验块通过一个数据包发送给接收端。
[0131] 在某些场景下,BBR可能会导致队列振荡。BBR通过估计网络的瓶颈带宽和往返时间来调整发送速率,但这些估计值可能会不稳定,从而导致发送速率和队列大小发生周期性波动。
[0132] 例如:在网络路径上有多个队列,每个队列的容量不同。当BBR算法进入探测瓶颈带宽状态时,它会发送足够多的数据包来填满网络的带宽,这会导致第一个队列的队列长度增加,直到其满载。随后,BBR将开始在第二个队列中填充数据包,这将导致第一个队列的队列长度降低,因为数据包从第一个队列转移到第二个队列。一旦第二个队列也满了,BBR会开始在第三个队列中填充数据包,这会导致第二个队列的队列长度降低,以此类推。由此,队列长度和发送速率会周期性地波动,可能会导致网络拥塞和数据包丢失。
[0133] 为了解决以上问题,实施例1还包括以下步骤:
[0134] A1、设置队列长度最小阈值min_th和最大阈值max_th、最大丢包概率max_p和权重参数w_q;当网络设备接收到数据包时,计算当前队列长度queue_length和平均队列长度avg_queue_length;
[0135] A2、根据平均队列长度avg_queue_length与最小阈值min_th和最大阈值max_th的关系,确定丢包策略,所述丢包策略为:
[0136] 如果平均队列长度小于最小阈值min_th,接收数据包,不执行丢包操作;
[0137] 如果平均队列长度在最小阈值min_th和最大阈值max_th之间,计算丢包概率,并根据丢包概率决定是否丢弃数据包;
[0138] 如果平均队列长度大于最大阈值max_th,丢弃数据包。
[0139] 实施例1还包括丢包根据丢包概率决定是否丢弃数据包的具体方法:
[0140] 计算平均队列长度:
[0141] avg_queue_length=(1‑w_q)*avg_queue_length+w_q*queue_length[0142] 计算相对队列长度:
[0143] relative_queue_length=(avg_queue_length‑min_th)/(max_th‑min_th)[0144] 计算丢包概率:
[0145] drop_probability=max_p*relative_queue_length
[0146] 根据丢包概率决定是否丢弃数据包:
[0147] 生成一个随机数rand;如果rand
[0148] 其中,relative_queue_length代表相对队列长度,表示平均队列长度与最小阈值和最大阈值之间的相对位置,值域为0到1;
[0149] avg_queue_length代表平均队列长度,表示当前队列长度的加权平均值;
[0150] drop_probability表示丢包概率,表示当前平均队列长度下,数据包被丢弃的概率;
[0151] rand表示随机数,值域为0到1。
[0152] 当网络中存在多个队列时,由于BBR算法可能会不断地填充数据包,导致队列长度周期性地发生波动。本公开通过设置最小阈值和最大阈值,可以确定丢包策略。当平均队列长度小于最小阈值时,不执行丢包操作;当平均队列长度在最小阈值和最大阈值之间时,根据相对队列长度计算出丢包概率,然后根据随机数判断是否丢包;当平均队列长度大于最大阈值时,直接丢弃数据包。这种方法可以使得队列长度保持在一定范围内,避免队列长度周期性地波动,从而避免了拥塞和数据包丢失。
[0153] 实施例二:
[0154] 本公开的至少一个实施例还提供了一种网络拥塞控制装置。图2是本公开的至少一个实施例提供的防伪装置的示意性框图。该网络拥塞控制装置,包括:处理器和存储器,其中,所述存储器中存储有适于所述处理器执行的计算机程序指令,所述计算机程序指令被所述处理器运行时使得所述处理器执行如实施例一中任意一项所述的网络拥塞控制方法。
[0155] 例如,该处理器例如是中央处理单元(CPU)、图形处理器GPU、张量处理器(TPU)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,例如,该处理器可以实现为通用处理器,并且也可以为单片机、微处理器、数字信号处理器、专用的图像处理芯片、或现场可编程逻辑阵列等。例如,存储器可以包括易失性存储器和非易失性存储器的至少一种,例如存储器可以包括只读存储器(ROM)、硬盘、闪存等。相应地,该存储器可以实现为一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,在所述计算机可读存储介质上可以存储一个或多个计算机程序指令。处理器可以运行所述程序指令,以执行本公开的至少一个实施例提供的任一网络拥塞控制方法。该存储器还可以存储其他各种应用程序和各种数据,例如,所述应用程序使用和/或产生的各种数据等。
[0156] 实施例三:
[0157] 本公开的至少一个实施例还提供了一种存储介质(例如,非暂时性存储介质)。图3是本公开的至少一个实施例提供的存储介质的示意性框图。如图3所示,该存储介质包括存储在所述存储介质上的计算机程序指令。计算机程序指令被处理器运行时执行本公开的至少一个实施例提供的网络拥塞控制方法。
[0158] 例如,存储介质可能有多种形式,包括有形的存储介质,载波介质或物理传输介质等。稳定的存储介质可以包括:光盘或磁盘,以及其他计算机或类似设备中使用的,能够实现图中所描述的系统组件的存储系统。不稳定的存储介质可以包括动态内存,例如计算机平台的主内存等。有形的传输介质可以包括同轴电缆、铜电缆以及光纤,例如计算机系统内部形成总线的线路。载波传输介质可以传递电信号、电磁信号、声波信号或光波信号等。这些信号可以由无线电频率或红外数据通信的方法所产生。通常的存储介质(例如,计算机可读介质)包括硬盘、软盘、磁带、任何其他磁性介质;CD‑ROM、DVD、DVD‑ROM、任何其他光学介质;穿孔卡、任何其他包含小孔模式的物理存储介质;RAM、PROM、EPROM、FLASH‑EPROM,任何其他存储器片或磁带;传输数据或指令的载波、电缆或传输载波的连接装置、任何其他可以利用计算机程序指令(例如,程序代码)和/或计算机读取的数据。
[0159] 可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序指令(例如,程序代码),上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++和Python,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0160] 在一些示例中,本公开的至少一个实施例描述的功能也可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
[0161] 以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。