您好,欢迎光临系统之家!

系统之家 - 为您打造全网优秀的系统论坛!

 找回密码
 注册
搜索

ubuntu、centos开启TCP的BBR算法提高网络吞吐量

查看: 1094|回复: 2

[教程] ubuntu、centos开启TCP的BBR算法提高网络吞吐量 [复制链接]

Rank: 64Rank: 64Rank: 64Rank: 64

UID
5
帖子
6562
威望
4312 点
黄金
10544 金币
在线时间
4572 小时
注册时间
2005-5-13
最后登录
2024-5-10

终身成就奖 宣传大使奖

发表于 2019-9-1 09:24:30 |显示全部楼层
一句话解释BBR的好处:做为拥堵算法,BBR依据对丢包率的变化而不断调整发包量。
先说个最简单的情况,查看内核版本,高版本的内核比如4.10的后续版本都自带bbr,但可能默认未开启。
  1. uname -r
复制代码
可以查看现有算法,通常默认都是cubic
  1. sysctl net.ipv4.tcp_congestion_control
复制代码
可以查看支持的算法,bbr cubic reno是比较常见的结果,本例假设返回结果有bbr。
  1. sysctl net.ipv4.tcp_available_congestion_control
复制代码
修改sysctl.conf:
  1. vi /etc/sysctl.conf
复制代码
增加一行:
  1. net.ipv4.tcp_congestion_control=bbr
复制代码
之后,使之生效。
  1. sysctl -p
复制代码
最后
  1. sysctl net.ipv4.tcp_congestion_control
复制代码
如果返回结果:
  1. net.ipv4.tcp_congestion_control = bbr
复制代码
即已成功。
但有些技术比较落后的厂商(比如阿里云)内核版本可能会非常低,就是另一种情况,需要升级内核。顺手可以看看
  1. sysctl net.core.default_qdisc
复制代码
大多主机都是基于fq的,也就是flow queue,不用改。
只有少数技术比较落后的厂商(比如阿里云)是基于fifo的,也就是first in first out。

非简单情况:ubuntu16或18,无bbr选项,这个正常内核版本够的话,按说应该有。没有的话可以apt search linux-generic-hwe,找到对应版本后。
  1. apt install linux-generic-hwe-18.04
复制代码
再uname -r查看内核,不出错应该会升级到5.3,就应该有BBR的选项了。其它内核版本下载可以到:
https://kernel.ubuntu.com/~kernel-ppa/mainline/
查看其它现有内核版本:
  1. dpkg -l | grep linux-image
复制代码

中华人民共和国宪法第四十条:
中华人民共和国公民的通信自由和通信秘密受法律的保护。

使用道具 举报

Rank: 64Rank: 64Rank: 64Rank: 64

UID
5
帖子
6562
威望
4312 点
黄金
10544 金币
在线时间
4572 小时
注册时间
2005-5-13
最后登录
2024-5-10

终身成就奖 宣传大使奖

发表于 2020-6-23 17:47:55 |显示全部楼层
几个月之后增加一个比较复杂的情况,内核版本也够了,可是sysctl net.ipv4.tcp_available_congestion_control
没有BBR选项,那不如再升级一次内核了。不过盲猜不升级内核应该也可以直接用下面的方法。
官方下载地址:https://kernel.ubuntu.com/~kernel-ppa/mainline/
选好版本之后需要下载1个*all.deb和3个*generic*.deb,我试了5.7可以。
安装这4个deb,想省事可以:
  1. dpkg -i *.deb
复制代码
很快就done了,老版本比如ubuntu14需要update-grub。
ubuntu14内核版本过高后可能直接崩溃,可以选4.10,不要问我怎么知道的。
18可以直接重启后uname -r就可以看到新内核已经生效了。
  1. dpkg --get-selections | grep linux
复制代码
用上面查看已经安装的内核,实再看着不顺眼还可以用"apt-get purge 版本号"删除掉旧内核,之后进入重点:
  1. echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
复制代码
使之生效:
  1. sysctl -p
复制代码
此时两项都应该显示BBR了:
  1. sysctl net.ipv4.tcp_congestion_control
复制代码
  1. lsmod | grep bbr
复制代码



中华人民共和国宪法第四十条:
中华人民共和国公民的通信自由和通信秘密受法律的保护。

使用道具 举报

Rank: 64Rank: 64Rank: 64Rank: 64

UID
5
帖子
6562
威望
4312 点
黄金
10544 金币
在线时间
4572 小时
注册时间
2005-5-13
最后登录
2024-5-10

终身成就奖 宣传大使奖

发表于 2020-6-24 00:47:34 |显示全部楼层
CentOS内核elrepo下载地址:
https://elrepo.org/linux/kernel/el7/x86_64/RPMS/
官方下载地址:
http://mirror.centos.org/altarch/7/kernel/x86_64/Packages/
选ml版下载,安装的姿势:
  1. yum localinstall -y https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-5.7.5-1.el7.elrepo.x86_64.rpm
复制代码
重启前还需要修改grub的默认内核选项:
  1. awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
复制代码
一般新内核都是排第一位的0,所以可以
  1. grub2-set-default 0
复制代码
其实修改的都是/etc/default/grub,有些版本save是引自于/boot/grub2/grubenv,可以由以下确认:
  1. grub2-editenv list
复制代码
重启后新内核生效,就可以看上一贴的“进入重点”部分了。

官方地址使用的姿势也可以是酱婶儿的:
  1. yum-config-manager --enable centos-kernel
复制代码
  1. yum -y install kernel
复制代码

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

回顶部