BBR 算法伪代码如下:

  1. 初始化 1.1 读取网络拓扑及链路信息 1.2 确定初始拥塞窗口大小'cwnd' 1.3 计算最大带宽'bw'和最小'RTTmin' 1.4 设置阈值'thresh' 1.5 初始化队列长度

  2. 在每个'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'

  3. 每隔一段时间'T'进行一次带宽探测 3.1 记录当前时间为't' 3.2 发送几个数据包,等待接收端返回'ACK',统计接收速率'r' 3.3 计算'btlbw',根据'r'和'RTT'计算得到 3.4 如果'btlbw'比当前最大带宽'bw'大,则更新'bw'

  4. 每次接收到'ACK'时 4.1 记录当前时间为't' 4.2 根据收到'ACK'的时间计算'RTT' 4.3 如果'RTT'比当前最小'RTTmin'小,则更新'RTTmin'

  5. 检测网络拥塞 5.1 记录当前时间为't' 5.2 如果队列长度超过阈值'thresh',则启动 BBR 拥塞控制算法 5.3 否则,根据当前拥塞窗口大小发送数据包

  6. 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'

  7. 返回步骤 2

BBR 算法伪代码详解:实现高性能网络传输

原文地址: https://www.cveoy.top/t/topic/lDqZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录