传统的TCP拥塞控制算法是基于丢包反馈协议的。
基于“丢包反馈”的协议是一种被动的拥塞控制机制,根据网络中的丢包事件来判断网络拥塞。即使在网络负载较高的情况下,只要没有拥塞和丢包,协议也不会主动降低其发送速度。
该协议可以充分利用网络的剩余带宽,提高吞吐量。但由于丢包反馈协议在网络接近饱和时的激进性,一方面大大提高了网络的带宽利用率;另一方面,对于基于丢包反馈的拥塞控制协议来说,大幅度提高网络利用率意味着下一次拥塞丢包事件不远了,所以这些协议在提高网络带宽利用率的同时,也间接增加了网络的丢包率,造成整个网络的抖动加剧。
还有谁导致了丢包?数据包丢失并不总是由拥塞引起的。数据包丢失有许多可能的原因,例如:
自然,我们不喜欢GWF,这是一种人为的随机丢包策略。当经过GWF时,数据丢失了。我们应该立即重新发送数据包,增加发送频率,而不是降低速度,也就是不希望传统的TCP拥塞算法来控制。
因此出现了基于无丢包的拥塞控制算法CDG,它以时延作为判断依据。延迟增加表示拥塞,数据开始在路由器的缓冲区中累积。缩小发送窗口。然而,CDG算法与基于分组丢失的算法不兼容。只有全世界的设备都换成CDG,但这是不可能的。目前,市场上的设备不能同时切换到CDG,所以谷歌很不高兴。谷歌科学家开发了一种转换算法来解决这个问题。这个算法的名字叫BBR(瓶颈带宽和RTT),是一种全新的拥塞控制算法。BBR和CDG的想法一样,都是不用丢包作为拥塞控制信号,但是和CDG不同,BBR可以和立方、雷诺共存。
?使用BBR/ByGoogle前后网络吞吐量对比图
BBR由Google开发,由Linux内核的TCP协议栈使用。借助BBR算法,Linux服务器可以显著提高吞吐量,降低连接延迟。简单地说,BBR可以加快网络传输速度。此外,部署BBR很容易,因为该算法只需要发送方的支持,而不需要网络或接收方的支持。
CentOS7服务器实例上部署BBR下面我将与您分享我如何在CentOS7KVM服务器实例上部署BBR。
步骤〇:前置条件要使用BBR,需要将CentOS7机器的内核升级到4.9.0。您可以通过使用ELRepoRPM的第三方仓库轻松实现这一点。
在升级之前,您可以检查当前内核:
该命令可能会输出如下所示的字符串:
如你所见,当前的内核是3.10.0,所以我们需要更新它。
在更新内核之前,请安装ELRepo存储库:
使用ELReporepo安装4.9.0内核:
确认结果:
如果安装成功,您应该会看到类似下面的内容,并且在输出列表中会看到kernel-ml-4.18.5-1.el7.Elrepo.x86_64:
现在,您需要通过将默认引导设置为grub2来启用4.18.5内核。
显示grub2菜单中的所有条目:
结果应该是这样的:
由于行数从0开始,而4.18.5内核条目位于第一行,因此默认的引导条目应该设置为0:
重启系统:
当服务器重新联机时,请再次登录并重新运行uname命令,以确认您使用的是正确的内核:
您应该会看到以下结果:
要启用BBR算法,您需要修改sysctl配置,如下所示:
现在,您可以使用以下命令来确认BBR是否已启用:
在正常情况下,应该会输出类似如下的字符串:
接下来,继续验证:
输出应该类似于以下字符串:
最后,检查内核模块是否已加载:
输出应该类似于:
要测试BBR的网络性能是否得到增强,您可以在Web服务器目录中创建一个文件以供下载,然后从桌面上的Web浏览器测试下载速度。
最后,http://[your-server-IP]/500MB.zip从台式电脑上的Web浏览器访问URL,然后评估下载速度。
当然,如果服务器在国外,也可以直接在YouTube上打开一个4K画质的视频进行感官速度测试,如下图:
?使用BBR后的YouTube速度jandou
这样,享受高速网络带来的全新体验。
步骤④(可选):删除无用的旧内核升级内核后,旧内核仍然存在。执行以下命令将自动过滤并删除当前无用的系统内核版本。
详情请参考文章:CentOS7删除无用旧内核。
非专业技术人员福利如果您不是专业技术人员,您可以使用一键安装脚本并执行以下命令:
详情请参考文章:一键安装最新内核,打开BBR脚本。
参考链接:
Tcp拥塞控制来到GCP——你的互联网刚刚变得更快
TCP拥塞控制算法的优缺点适用环境性能分析
如何在centos7上部署GoogleBBR由Vultr
TCP流量控制和拥塞控制机制
GoogleTCPBBR浅识
技术感谢
尼尔·卡德韦尔,高级软件工程师;
YuchungCheng,高级软件工程师;
C.StephenGunn,高级参谋可靠性工程师;
SoheilHassasYeganeh,高级软件工程师;
范·雅各布森,研究科学家;
AminVahdat,谷歌研究员。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)