centos开启Google bbr服务

bbr :TCP拥塞控制算法

传统 TCP 拥塞控制算法,基于丢包反馈的协议。

基于「丢包反馈」的协议是一种 被动式 的拥塞控制机制,其依据网络中的丢包事件来做网络拥塞判断。即便网络中的负载很高时,只要没有产生拥塞丢包,协议就不会主动降低自己的发送速度。

这种协议可以最大程度的利用网络剩余带宽,提高吞吐量。然而,由于基于丢包反馈协议在网络近饱和状态下所表现出来的侵略性,一方面大大提高了网络的带宽利用率;但另一方面,对于基于丢包反馈的拥塞控制协议来说,大大提高网络利用率同时意味着下一次拥塞丢包事件为期不远了,所以这些协议在提高网络带宽利用率的同时也间接加大了网络的丢包率,造成整个网络的抖动性加剧。

还有谁导致了丢包?

丢包并不总是拥塞导致,丢包可能原因是多方面,比如:
全球最牛的防火墙 GWF 的随机丢包策略
网路中由于多路径衰落(multi-path fading)所造成的信号衰减(signal degradation)
通道阻塞造成的丢包(packet drop),再者损坏的封包(corrupted packets)被拒绝通过
有缺陷的网路硬件、网路驱动软件发生故障
信号的信噪比(SNR)的影响

Google BBR 的出现

我们自然不喜欢 GWF 这种人为的随机丢包策略,当路过 GWF 时,数据被丢包,我们在此时应该立刻重新发包,增大发送的频率,而不希望降低速度,也就是不希望传统的 TCP 拥塞算法去控制。
由此,就出现了基于不丢包的拥塞控制算法 CDG, 以 延迟 作为判断依据,延迟增大说明拥塞, 数据开始在路由器的缓冲中积累. 降低发送 窗口。然而 CDG 算法与基于丢包的算法不兼容, 只有全球的设备都换上 CDG,但这是不可能的,目前市面上的设备不可能一下子都切换到 CDG,因此 Google 就不开心了,Google 的科学家们开发了一种过渡算法来解决这个问题,这个算法的名字就是 BBR(Bottleneck Bandwidth and RTT),它是一种全新的 拥塞控制算法,BBR 同 CDG 一致的思想是不以丢包作为拥塞控制信号,但是和 CDG 不同的是,BBR 能和 cubic 和 reno 共存。
在这里插入图片描述
使用BBR前后网络吞吐量对比图 / By Google

BBR 由 Google 开发,供 Linux 内核的 TCP 协议栈使用,有了 BBR 算法,Linux 服务器可以显著提高吞吐量并减少连接延迟,简单来说 BBR 能加速网络传输速度。此外,部署 BBR 也很容易,因为该算法只需要发送方,而不需要网络或接收方的支持。

环境准备:

YUM安装

安装elrepo并升级内核

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

注意centos版本!!!!!!
centos8

yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm

centos7

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# 安装 ML 版本
yum --enablerepo=elrepo-kernel install  kernel-ml-devel kernel-ml -y   

# 安装 LT 版本,K8S全部选这个
yum --enablerepo=elrepo-kernel install kernel-lt-devel kernel-lt -y

安装完成后使用下面命令查看当前已安装的内核

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

返回
0 : CentOS Linux (5.17.4-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.62.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-6e98720bd59a4953b058c3a9d5c9da15) 7 (Core)

5、把CentOS Linux (5.17.4-1.el7.elrepo.x86_64) 7 (Core)内核设置为默认

grub2-set-default 0

6、重启服务器

reboot

RPM安装
1、查找版本
因 ELRepo 源都是最新版本,所以旧版本内核只能手动下载。
查找 kernel rpm 历史版:http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/

2、共需要下载三个类型 rpm

wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.203-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.203-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.203-1.el7.elrepo.x86_64.rpm

3、安装内核

rpm -ivh kernel-lt-5.4.203-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-lt-devel-5.4.203-1.el7.elrepo.x86_64.rpm
或者
#一键安装所有
rpm -Uvh *.rpm

4、确认已经安装的内核版本

[root@ecs-2b3c ~]# rpm -qa | grep kernel
kernel-lt-devel-5.4.203-1.el7.elrepo.x86_64
kernel-devel-3.10.0-1160.53.1.el7.x86_64
kernel-lt-5.4.203-1.el7.elrepo.x86_64
kernel-3.10.0-1127.el7.x86_64
kernel-devel-3.10.0-1127.el7.x86_64
kernel-headers-3.10.0-1160.53.1.el7.x86_64
kernel-3.10.0-1160.53.1.el7.x86_64
kernel-tools-libs-3.10.0-1160.53.1.el7.x86_64
kernel-tools-3.10.0-1160.53.1.el7.x86_64

5、设置启动

# 查看启动顺序
[root@ecs-2b3c ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (5.4.203-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.53.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1127.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-c9b49c6c11334518a7adc404ff6315b6) 7 (Core)

# 设置启动顺序
[root@ecs-2b3c ~]# grub2-set-default 0

# 重启生效
[root@ecs-2b3c ~]# reboot

设置BBR

1、编辑sysctl配置文件

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

2、加载系统参数(正常情况下会输出我们之前添加的内容)

sysctl -p

返回
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

验证BBR是否已经开启

1、输入

sysctl net.ipv4.tcp_available_congestion_control

如果返回
net.ipv4.tcp_available_congestion_control = reno cubic bbr
则安装 成功

2、输入

lsmod | grep bbr

如果返回
tcp_bbr 20480 1
则安装成功

删除无用的旧内核(可选)

升级内核之后,往往老旧的内核也保留下来了,执行以下命令,将自动筛选并删除当前无用的系统内核版本。

yum remove $(rpm -qa | grep kernel | grep -v $(uname -r))
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值