BBR拥塞控制状态机分析

目录

BBR 源码文件的描述

四个阶段理想状态图

STARTUP进入和退出条件

DRAIN进入和退出条件 

PROBE_BW进入和退出条件

PROBE_RTT进入和退出条件

PROBE_BW内部状态分析

PROBE_UP状态进入和退出

PROBE_DOWN状态进入和退出

PROBE_USE状态进入和退出

后续


BBR 源码文件的描述

 * A BBR flow starts in STARTUP, and ramps up its sending rate quickly.
 * When it estimates the pipe is full, it enters DRAIN to drain the queue.
 * In steady state a BBR flow only uses PROBE_BW and PROBE_RTT.
 * A long-lived BBR flow spends the vast majority of its time remaining
 * (repeatedly) in PROBE_BW, fully probing and utilizing the pipe's bandwidth
 * in a fair manner, with a small, bounded queue. *If* a flow has been
 * continuously sending for the entire min_rtt window, and hasn't seen an RTT
 * sample that matches or decreases its min_rtt estimate for 10 seconds, then
 * it briefly enters PROBE_RTT to cut inflight to a minimum value to re-probe
 * the path's two-way propagation delay (min_rtt). When exiting PROBE_RTT, if
 * we estimated that we reached the full bw of the pipe then we enter PROBE_BW;
 * otherwise we enter STARTUP to try to fill the pipe. 

四个阶段理想状态图

       BBR全状态图 :

 PROBE_BW状态细节:

 

STARTUP :TCP连接启动后进入的阶段,主要目的是带宽探测,要考虑收敛性,快速的收敛到链路的最大带宽。该状态退出的条件是当前已经采集到了链路的最大带宽。

DRAIN:在STARTUP阶段最大链路带宽的采集是粗暴的,会导致很多数据报文缓存在链路的buffer中,链路的最大带宽不会因为中间链路数据缓存了而增大,所以需要排空这些缓存的数据。该状态的退出条件infilgh的报文数量刚好等于max bw对应的cwnd。

PROBE_BW:带宽的利用和上探阶段,一方面保证被探测到的带宽被充分利用,另外还实时上探感知链路带宽的变化。

PROBE_RTT:多流公平性考虑引入的超级机制,在PROBE_BW状态持续很长时间后,需要惩罚他,释放出部分带宽给其他流使用。

STARTUP进入和退出条件

1. TCP连接初始化启动,默认进入STARTUP阶段;

2. TCP连接在PROBE_RTT状态退出时,如果当前没有采集到full bw,进入STARTUP状态

3. 在STARTUP阶段采集到full bw后,退出STARTU,进入DRAIN状态

DRAIN进入和退出条件 

1. 在STARTUP阶段采集到full bw后,退出STARTU,进入DRAIN状态

2. 在DRAIN状态,当前inflight数量小于等于max bw换算的target cwnd时,退出DRAIN,进入PROBE_BW状态。

PROBE_BW进入和退出条件

1. 在DRAIN状态,当前inflight数量小于等于max bw换算的target cwnd时,退出DRAIN,进入PROBE_BW状态。

2. TCP连接在PROBE_RTT状态退出时,如果采集到full bw,进入PROBE_BW状态

3. 在PROBE_BW状态太长时间,从没有采集到更小rtt起,持续10s后进入PROBE_RTT状态

PROBE_RTT进入和退出条件

1. 在PROBE_BW状态太长时间,从没有采集到更小rtt起,持续10s后进入PROBE_RTT状态

2. 在PROBE_RTT状态持续200ms后,退出PROBE_RTT状态,进入STARTUP或者PROBE_BW状态。

PROBE_BW内部状态分析

跟进PROBE_BW状态的pacing 系数,可以分为3中状态:

1. 系数大于1, 带宽上探测状态,简称为PROBE_UP

2. 系数小于1,带宽上探后drain,简称为PROBE_DOWN

3. 系数等于1,带宽充分利用状态,简称为PROBE_USE

PROBE_UP状态进入和退出

1. 刚进PROBE_BW时的第一个小状态,随机进入

2. PROBE_BW状态时内部小状态轮询依次进入

3. 退出条件,当前PROBE_UP持续了min_rtt_us时间,并且发生了丢包或者inflight大于max bw换算的target cwnd。

PROBE_DOWN状态进入和退出

1. 刚进PROBE_BW时的第一个小状态,随机进入

2. PROBE_BW状态时内部小状态轮询依次进入

3. 退出条件,当前PROBE_UP持续了min_rtt_us时间,或者inflight小于等于max bw换算的target cwnd。

PROBE_USE状态进入和退出

1. 刚进PROBE_BW时的第一个小状态,随机进入

2. PROBE_BW状态时内部小状态轮询依次进入

3. 在PROBE_USE状态持续了min_rtt_us时间,直接退出

后续

机制的合理性和优化策略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值