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时间,直接退出

后续

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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在网络通信中,拥塞控制是一项至关重要的技术,可以确保网络中的每个节点都能够按照其承诺的速率进行正常的数据传输。由于网络负载和流量的变化,网络中的拥塞控制算法需要不断地进行优化和改进。以下是Internet拥塞控制研究现状的一些方面: 1. TCP拥塞控制算法:TCP是Internet传输控制协议的一种,其拥塞控制算法是Internet最常用的拥塞控制手段。目前TCP拥塞控制算法主要有Reno、NewReno、Cubic、DCTCP等。 2. 数据中心拥塞控制:数据中心是网络中的重要组成部分,因此对于数据中心的拥塞控制也引起了研究人员的广泛关注。数据中心的拥塞控制算法以DCTCP和TCP BBR为代表,这些算法在数据中心的拥塞控制中表现出了很好的性能。 3. 传输控制协议的改进:除了TCP拥塞控制算法的改进之外,还有很多研究人员致力于改进TCP协议本身,以提高其拥塞控制能力。这些改进包括Quick TCP、TCP Prague、TCP Vegas等。 4. 基于机器学习的拥塞控制:近年来,机器学习在拥塞控制领域的应用也成为研究的热点之一。基于机器学习的拥塞控制算法可以根据网络状态和流量变化自动调整拥塞窗口和带宽限制等参数,以提高网络的性能和吞吐量。 综上所述,Internet的拥塞控制研究现状非常丰富,研究人员在不断地探索和改进拥塞控制算法,以提高网络的性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值