BBR拥塞控制算法 BBR Startup gain
在查看google的BBR算法时,里面出现了一个 startup gain的推到过程:
- For simplicity, let RTT=1 unit of time.
- For smooth traffic to avoid queue pressure, we want the sending rate to be driven by smooth pacing, so that the sending rate is equal to the pacing rate. To find the smoothest, gentlest pacing approach that roughly matches the growth dynamics of unpaced Reno/CUBIC, we want the pacing rate (sending rate) to double each RTT (each unit time interval). So let the pacing rate (sending rate) at a given time be given by some curve that doubles each unit of time
We use the constant scaling factor of k because different transport protocol implementations may choose different initial sending rates, depending on the environment or applicable standards.
- Based on the BBR architecture, we also want the pacing rate to be some pacing gain g times the estimated bandwidth:
- PacingRate(t) = g • EstimatedBandwidth(t)
-
In Startup, BBR sets the cwnd high enough that sending is governed by the pacing rate. This means that the sending rate is the pacing rate, so we know the rate of sending from (2). This means that we can calculate the amount of data sent over an interval by integrating the pacing rate over the time interval in question:
PacingRate(t) = g • EstimatedBandwidth(t)= g • DataDeliveredInRoundTripUpTo(t)= g • DataSentInRoundTripUpTo(t − 1)
- The Startup gain that BBR used in its original release was 2 / ln(2) = 2.89 . This derivation of 4 ln(2) = 2.77 is about (2.89 − 2.77)/2.89 = 4% lower than the original value
Validation Via Emulation
We have run quick tests using netem, comparing high_gain=2.77 (710 /256 = 2.773) instead of 2.89 (739).They look visually the same, and the Linux TCP BBR throughputs for 2-second transfers over a netem-emulated path with bw=100Mbps, rtt=100ms are quite similar: 78.35M (g=2.89) vs 77.98 (g=2.77), showing less than 0.5% difference in throughput. The delayfrom the first ACK until a bandwidth sample >= 99Mbps was .864 secs with high_gain=2.89, vs .891 secs with high_gain=2.77 (3% longer).
http代理服务器(3-4-7层代理)-网络事件库公共组件、内核kernel驱动 摄像头驱动 tcpip网络协议栈、netfilter、bridge 好像看过!!!!
但行好事 莫问前程
--身高体重180的胖子
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!