BBR 算法伪代码详解:实现高性能网络传输
BBR 算法伪代码如下:
-
初始化 1.1 读取网络拓扑及链路信息 1.2 确定初始拥塞窗口大小'cwnd' 1.3 计算最大带宽'bw'和最小'RTTmin' 1.4 设置阈值'thresh' 1.5 初始化队列长度
-
在每个'RTT'开始时 2.1 记录当前时间为't' 2.2 记录上一个'RTT'的接收速率'r' 2.3 计算'pacing_rate',根据'pacing_gain'和'btlbw'计算得到 2.4 计算'cwnd_gain',根据'cwnd_gain_constant'和'rtt'计算得到 2.5 计算'cwnd_inc',根据'cwnd_inc_const'、'cwnd'、'bw'和'RTT'计算得到 2.6 计算'cwnd_target',根据'cwnd'、'cwnd_inc'和队列长度计算得到 2.7 更新拥塞窗口的大小'cwnd'
-
每隔一段时间'T'进行一次带宽探测 3.1 记录当前时间为't' 3.2 发送几个数据包,等待接收端返回'ACK',统计接收速率'r' 3.3 计算'btlbw',根据'r'和'RTT'计算得到 3.4 如果'btlbw'比当前最大带宽'bw'大,则更新'bw'
-
每次接收到'ACK'时 4.1 记录当前时间为't' 4.2 根据收到'ACK'的时间计算'RTT' 4.3 如果'RTT'比当前最小'RTTmin'小,则更新'RTTmin'
-
检测网络拥塞 5.1 记录当前时间为't' 5.2 如果队列长度超过阈值'thresh',则启动 BBR 拥塞控制算法 5.3 否则,根据当前拥塞窗口大小发送数据包
-
BBR 拥塞控制算法 6.1 记录当前时间为't' 6.2 根据'RTT'和'cwnd'计算当前的'btlbw' 6.3 计算'pacing_gain'和'cwnd_gain' 6.4 根据'pacing_gain'和'btlbw'计算得到'pacing_rate' 6.5 根据'cwnd_gain'和'btlbw'计算得到'cwnd_target' 6.6 如果'cwnd_target'比当前拥塞窗口小,则将拥塞窗口缩小到'cwnd_target' 6.7 否则,根据'cwnd_inc_const'和队列长度计算'cwnd_inc',将拥塞窗口增加'cwnd_inc'大小 6.8 更新拥塞窗口的大小'cwnd'
-
返回步骤 2
原文地址: https://www.cveoy.top/t/topic/lDqZ 著作权归作者所有。请勿转载和采集!