什么是BBR
BBR算法由Google开发,旨在优化TCP在高带宽和高延迟网络环境下的性能。Google在2016年发布了BBR算法,并将其应用于自己的网络基础设施中,例如Google Cloud和YouTube等服务。BBR算法的设计目标是通过智能的拥塞控制策略,最大程度地利用网络资源,提高数据传输的效率和稳定性。由于其出色的性能表现,BBR算法已经成为了许多网络服务提供商和开发者的首选,被广泛应用于各种网络环境中。
-
测量带宽和延迟:BBR算法通过持续的网络测量来估计网络的带宽和往返传播时间(RTT)。它使用拥塞窗口探测(CWND probing)和往返时间探测(RTT probing)等技术来收集这些信息。
-
拥塞控制:BBR算法采用了一种称为拥塞控制状态机(Cubic with pacing)的拥塞控制策略。它根据网络的拥塞程度动态地调整TCP拥塞窗口的大小。当网络拥塞程度较低时,它会增加拥塞窗口以提高吞吐量;当网络拥塞程度较高时,它会减小拥塞窗口以避免丢包和网络拥塞。
-
带宽估计:BBR算法使用带宽测量器(Bandwidth Estimator)来估计网络的带宽。它根据收到的ACK包和发送的数据包之间的间隔来计算网络的带宽,并根据这些信息调整拥塞窗口的大小。
-
延迟控制:BBR算法还考虑了网络的延迟情况。它会根据网络的延迟动态地调整发送数据的速率,以最大程度地减少数据包的往返时间。
-
流量控制:BBR算法还包括了一种称为流量控制器(Pacing Controller)的机制,用于控制数据包的发送速率,以避免网络拥塞和丢包。
总的来说,BBR算法通过综合考虑网络的带宽、延迟和拥塞程度,动态地调整TCP的拥塞窗口大小和发送速率,以实现更高的吞吐量和更低的延迟。
安装新版内核
更新源
yum update
查看系统版本
cat /etc/redhat-release
查看内核版本
uname -sr
BBR内核要求是4.9+,接下来启用 ELRepo 仓库升级内核
安装elrepo并升级内核
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# 安装新版的稳定版内核
yum --enablerepo=elrepo-kernel install kernel-ml -y
安装完毕后使用下面的命令查看是否安装成功。
rpm -qa | grep kernel
设置系统启动顺序
sudo egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
更新grub文件并重启系统
# 上面我的情况第一行是 CentOS Linux (6.8.9-1.el7.elrepo.x86_64) 7 (Core),从第一行为0依次数,0、1、2、3这样,看你的新内核是第几。然后就输入下面的命令
sudo grub2-set-default 0
reboot
再次查看内核版本
uname -sr
开启BBR
添加配置
echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.conf
加载系统参数,输出了添加的两行配置代表正常
sudo sysctl -p
验证是否开启成功
sudo sysctl net.ipv4.tcp_available_congestion_control
# 输出 net.ipv4.tcp_available_congestion_control = bbr cubic reno
sudo sysctl -n net.ipv4.tcp_congestion_control
# 输出 bbr
lsmod | grep bbr
# 输出 tcp_bbr 16384 1