平时使用服务器的时候发现网络质量总是不行,特别是海外服务器,这时候就可以启用bbr来加速网络,原本只能420p可以到1080p甚至2k,提升还是很大的,平时遇到跨速率连接时启用bbr也可以缓解速度跑不满的情况。
一、什么是bbr
BBR是一种网络拥塞控制算法,全称为Bottleneck Bandwidth and Round-trip propagation time。它是由Google开发的一种TCP拥塞控制算法,旨在提高网络的吞吐量和延迟。BBR通过动态地估计网络的带宽和往返时延,并根据这些信息来调整TCP的发送速率,以实现更高的网络性能。BBR的核心思想是通过不断地测量网络的带宽和往返时延,来确定网络的瓶颈带宽和拥塞程度。然后,BBR根据这些信息来调整TCP的发送速率,使其适应当前网络的状况,从而实现更高的吞吐量和更低的延迟。
相比传统的TCP拥塞控制算法,BBR具有更好的性能表现。它能够更准确地估计网络的带宽和往返时延,避免了传统算法中的一些不必要的拥塞控制行为,从而提高了网络的吞吐量和响应速度。BBR已经被广泛应用于Google的网络服务中,并逐渐得到了其他互联网公司和网络设备厂商的采用。
二、bbr好处
1、更高的吞吐量:BBR通过动态地估计网络的带宽和往返时延,并根据这些信息来调整TCP的发送速率,使其适应当前网络的状况。这样可以最大限度地利用网络的带宽,提高数据传输的吞吐量。
2、更低的延迟:BBR能够更准确地估计网络的往返时延,并根据这些信息来调整TCP的发送速率。这样可以减少数据包在网络中的排队时间,从而降低数据传输的延迟。
3、更好的网络利用率:传统的TCP拥塞控制算法在网络出现拥塞时会采取保守的控制策略,导致网络的利用率较低。而BBR通过动态地估计网络的瓶颈带宽和拥塞程度,可以更准确地调整TCP的发送速率,使其在网络拥塞时能够更好地利用网络资源。
4、更好的适应性:BBR能够根据网络的状况动态地调整TCP的发送速率,适应不同网络环境下的变化。无论是高带宽的网络还是高延迟的网络,BBR都能够根据实时的网络条件来进行调整,以实现更好的性能表现。
三、适用范围
1、海外服务器,海外相当一部分服务器网络质量堪忧,特别是高丢包环境,启用bbr通过暴力发包可以极大缓解网络质量差的问题。
2、内外跨速率链接,部分设备跨速率连接时会存在不能跑满带宽等情况,这里跨速率指的是nas 2.5g接入,但是电脑千兆接入,部分多速率交换机本身也存在着跨速率导致降速的问题,这时候启用bbr也能够缓解这一情况。
3、虚拟机,当多个虚拟机共用一个网口的时候也会存在网络堵塞的情况,启用bbr也可以缓解这个问题。
四、启用bbr
提醒:在部分网络下启用bbr反而会更慢,如果网络质量非常好,可以不启用bbr。
1、linux
linux中新的内核已经自带bbr,只需要启动即可,老旧内核需要先升级到4.9或者更高版本就可以开启,先检查内核版本:
uname -r
1.1若内核版本大于4.9:
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
应用更改:
sudo sysctl -p
检查BBR是否启用:
sysctl net.ipv4.tcp_available_congestion_control
返回值一般为:net.ipv4.tcp_available_congestion_control = reno cubic bbr
sysctl net.ipv4.tcp_congestion_control
返回值一般为:net.ipv4.tcp_congestion_control = bbr
sysctl net.core.default_qdisc
返回值一般为:net.core.default_qdisc = fq
lsmod | grep bbr
返回值有类似:tcp_bbr 20480 10则BBR模块已启动
如果需要关闭bbr则在/etc/sysctl.conf注释掉刚刚添加的两行并应用更改即可。
1.2内核版本小于4.9:
这里用一键脚本安装bbr:
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
lsmod | grep bbr
2、windows
管理员运行cmd,输入以下命令:
netsh int tcp set supplemental Template=Internet CongestionProvider=bbr2
netsh int tcp set supplemental Template=Datacenter CongestionProvider=bbr2
netsh int tcp set supplemental Template=Compat CongestionProvider=bbr2
netsh int tcp set supplemental Template=DatacenterCustom CongestionProvider=bbr2
netsh int tcp set supplemental Template=InternetCustom CongestionProvider=bbr2
输入以下命令检测是否生效:
Get-NetTCPSetting | Select SettingName, CongestionProvider
提别提醒:windows下开启bbr可能会导致部分游戏出现网络延迟忽高忽低的情况,也可能会导致虚拟机网络异常,如果开启之后导致的出现网络异常请用下面的命令恢复。
windows恢复命令:
netsh int tcp set supplemental template=internet congestionprovider=CUBIC
netsh int tcp set supplemental template=internetcustom congestionprovider=CUBIC
netsh int tcp set supplemental template=Compat congestionprovider=NewReno
netsh int tcp set supplemental template=Datacenter congestionprovider=CUBIC
netsh int tcp set supplemental template=Datacentercustom congestionprovider=CUBIC
五、测试对比
这里我就直接引用他人的测试
未开启bbr:
开启bbr:
评论前必须登录!
注册