bbr

bbr

简单记录一些 bbr 的学习笔记, 这些东西大多是理论性的, 并且平时用到的时候比较少. 容易忘记.

发包, 最基本的方式是什么? 就是发一个, client 确认了我再发下一个, 这个应该是最基本的方式.
但是这个方式慢, 慢在哪里呢? 在等对方回包的过程中, 也是可以发包的啊.

其实发送端可以一直发啊, 不停地发. 这样必然是最快的. 但是出现的问题就是, 网络会被打死, 这个
情况出现过. 所以就有 TCP 公平性的问题.

最慢的方式不行, 一直发也不行. 一直发的问题在于可能会出现网络拥塞.

所以有了拥塞算法. 拥塞算法, 我认为就是做了一件事, 我一直发的话, 什么时候要停下来.
这个值叫做发送窗口 cwnd.

这个值的模型一直都是对于网络容量(BDP)进行估算到 BBR 也没有改变这一点. 也就是网络上可以放多少
包.

所以核心的问题就是测试 BDP 的大小. 应用这个值到发送窗口.

BBR 之前的所有的算法都是当出现了丢包的时候认为网络已经满了. 在出现丢包之前一点点地增加发送窗口.

对于丢包的认识 30 年前应该没有什么问题, 但是现在已经不一样的. 除了 BDP 满了, 还有一些错误包之类这些都会出现丢包.
而 BBR 一个改动就是不再依赖丢包来判断 BDP. 它不再关心丢包这个事情. BBR 采用的方式是分别计算带宽和延迟来得到 BDP.

除这个之外, BBR 还接管了 tcp 的发送的控制权. 解决 tcp 可靠传输/拥塞控制解耦. 使用 pacing 来控制发包的速度.


发表评论

邮箱地址不会被公开。 必填项已用*标注