当前位置:网站首页>Analysis of BBR congestion control state machine
Analysis of BBR congestion control state machine
2022-06-24 21:24:00 【already_ skb】
Catalog
BBR Description of the source file
Four stage ideal state diagram
STARTUP Entry and exit conditions
DRAIN Entry and exit conditions
PROBE_BW Entry and exit conditions
PROBE_RTT Entry and exit conditions
PROBE_BW Internal state analysis
PROBE_DOWN State entry and exit
PROBE_USE State entry and exit
BBR Description of the source file

* 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.
Four stage ideal state diagram
BBR Full state diagram :

PROBE_BW Status details :

STARTUP :TCP The stage entered after the connection is started , The main purpose is bandwidth detection , Consider convergence , Fast convergence to the maximum bandwidth of the link . The condition for this status to exit is that the maximum bandwidth of the link has been collected .
DRAIN: stay STARTUP The acquisition of the maximum link bandwidth in the phase is rough , This will cause many data packets to be cached in the link buffer in , The maximum bandwidth of the link will not increase because the intermediate link data is cached , So you need to empty the cached data . Exit conditions for this state infilgh The number of messages is just equal to max bw Corresponding cwnd.
PROBE_BW: Bandwidth utilization and uplink stage , On the one hand, it ensures that the detected bandwidth is fully utilized , In addition, it also detects the change of link bandwidth in real time .
PROBE_RTT: Multi stream fairness considers the introduction of a super mechanism , stay PROBE_BW After the state lasts for a long time , He needs to be punished , Free up some bandwidth for other streams .
STARTUP Entry and exit conditions
1. TCP Connection initialization start , Default entry STARTUP Stage ;
2. TCP Connected to the PROBE_RTT When the state exits , If no... Is currently collected full bw, Get into STARTUP state
3. stay STARTUP Phase acquired full bw after , sign out STARTU, Get into DRAIN state
DRAIN Entry and exit conditions
1. stay STARTUP Phase acquired full bw after , sign out STARTU, Get into DRAIN state
2. stay DRAIN state , At present inflight Less than or equal to max bw Converted target cwnd when , sign out DRAIN, Get into PROBE_BW state .
PROBE_BW Entry and exit conditions
1. stay DRAIN state , At present inflight Less than or equal to max bw Converted target cwnd when , sign out DRAIN, Get into PROBE_BW state .
2. TCP Connected to the PROBE_RTT When the state exits , If... Is collected full bw, Get into PROBE_BW state
3. stay PROBE_BW Status too long , Nothing smaller has ever been collected rtt rise , continued 10s Back entry PROBE_RTT state
PROBE_RTT Entry and exit conditions
1. stay PROBE_BW Status too long , Nothing smaller has ever been collected rtt rise , continued 10s Back entry PROBE_RTT state
2. stay PROBE_RTT The state lasts 200ms after , sign out PROBE_RTT state , Get into STARTUP perhaps PROBE_BW state .
PROBE_BW Internal state analysis
To follow up PROBE_BW State of pacing coefficient , Can be divided into 3 Medium state :
1. The coefficient is greater than 1, Probe status on bandwidth , Referred to as PROBE_UP
2. Coefficient less than 1, After bandwidth uplink drain, Referred to as PROBE_DOWN
3. The coefficient is equal to 1, Bandwidth utilization status , Referred to as PROBE_USE
PROBE_UP State entry and exit
1. Just in PROBE_BW The first small state of , Random entry
2. PROBE_BW The internal small status polling enters in turn
3. Exit conditions , At present PROBE_UP lasted min_rtt_us Time , And packet loss or inflight Greater than max bw Converted target cwnd.
PROBE_DOWN State entry and exit
1. Just in PROBE_BW The first small state of , Random entry
2. PROBE_BW The internal small status polling enters in turn
3. Exit conditions , At present PROBE_UP lasted min_rtt_us Time , perhaps inflight Less than or equal to max bw Converted target cwnd.
PROBE_USE State entry and exit
1. Just in PROBE_BW The first small state of , Random entry
2. PROBE_BW The internal small status polling enters in turn
3. stay PROBE_USE The state lasted min_rtt_us Time , immediate withdrawal
follow-up
Rationality of the mechanism and optimization strategy .
边栏推荐
- Read all text from stdin to a string
- memcached全面剖析–3. memcached的删除机制和发展方向
- Codeforces Round #720 (Div. 2)
- Learn together and make progress together. Welcome to exchange
- go_ keyword
- Apple mobile phone can see some fun ways to install IPA package
- B站带货当学新东方
- Mr. Hu Bo, CIO of weiduomei, a scientific innovator: digitalization is a bloodless revolution, and the correct answer lies in the field of business
- Power apps Guide
- VirtualBox虚拟机安装Win10企业版
猜你喜欢

Variable setting in postman

Basic database syntax learning

Learn to use a new technology quickly

What are the problems with traditional IO? Why is zero copy introduced?

Rewrite, maplocal and maplocal operations of Charles

JMeter parameterization

Nifi quick installation (stand-alone / cluster)

Network security review office starts network security review on HowNet

Address mapping of virtual memory paging mechanism

OSI notes sorting
随机推荐
Common member methods of the calendar class
Call process of package receiving function
Golang daily question
Summary of idea practical skills: how to rename a project or module to completely solve all the problems you encounter that do not work. It is suggested that the five-star collection be your daughter
Static routing job
Arkit与Character Creator动画曲线的对接
Jar package operation
Create a multithreaded thread class
data link layer
Poj1061 frog dating (extended Euclid)
ping: www.baidu.com: 未知的名称或服务
Rip/ospf protocol notes sorting
Common data model (updating)
基于STM32的物联网下智能化养鱼鱼缸控制控制系统
It was Tencent who jumped out of the job with 26k. It really wiped my ass with sandpaper. It gave me a hand
Markdown use
Sleep revolution - find the right length of rest
TCP Jprobe utilization problem location
Foundations of Cryptography
Network layer