BBR算法,自定义控制协议集成(浅谈一)

对于开发人员来说 Google/BBR 算法,只需要关心以下几个部分:

1、bbr_pacing_rate
    /*
     " BBR.pacing_rate: The current pacing rate for a BBR flow, which
     " controls inter-packet spacing.
     */

即:BBR发送起搏速率,指示间隔多少微妙,脉冲发送 cwnd 大小限制的数据

1000000 分之一秒(单位)

2、bbr_cwnd
 The maximum allowed number of bytes in flight.

即:BBR最大飞行大小,指示起搏飞行的最大字节数限制。

3、flight 
即:BBR正在飞行的大小,UNA未确认的字节数

4、在每次 ack 之后,重新计算 pacing_rate、cwnd,recovery_window、及RTT(需要丢失字节数 lost_bytes)

Based on Google/BbrSender::UpdateBandwidthAndMinRt,但需注意:BBR需要控制协议,提供采样数据,在每次ACK时记录帧的传送TX、ACK_TIME。


重点:
在BBR之中,ACK分为三个过程:

1、ACK前置阶段
标记进入ACK处理状态,且在 ack_state 初始化本次采样的容器及正在飞行的字节数(in_flight/send_una)、早前累积确认的字节数(total_bytes_acked_before)、确认时间等

BBR是一个关注实际传送字节的算法,而不会考虑丢失字节时降低 ssthresh 扩展窗口边缘的算法,因为BBR算法认为,网络产生丢包现象,这并不意味着发生了宽频拥塞。

2、ACK处理阶段
计算本次的采样数据信息,但注意:ACK处理阶段,或会在同一个帧事件之中处理多个连续帧(即:早前已到达对端 rwnd 窗口并缓存的数据)。

BBR算法并不关心,控制协议如何处理丢包的问题,它只关心人们何时输入正确的采样样本,而样本必须在ACK的阶段之中,为它进行输入。

3、ACK后置阶段
BBR算法的RTT、BtlBw、RTProp 更新,BtlBw 表示 Pipe 的实时宽频大小,RTProp 表示物理的传送延迟。

易于理解:BtlBw = 管道宽度,RTProp = 管道长度。
                   宽度 = Bw 宽频大小,长度 = 往返延迟(RTT)。

在BBR算法之中,不关心是否产生网络丢包,不关心管道的断开、打开状态等,它根据内部的状态机(四个状态)来决定,所以:对于已经到达中断报文,控制协议开发人员需要认为进行控制在中断报文以后的 cwnd 大小的控制,而不是仍旧使用BBR算法提供的 cwnd 大小,并产生更多的网络流量。

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值