天天看點

linux 升核心 bbr,Linux 更新核心開啟 TCP BBR 實作高效單邊加速

前言

自從銳速釋出以來,這款牛逼的單邊加速神器的确為一些線路不太優秀的伺服器帶來了更優秀的體驗。但是呢,過高的價格和不再低端售賣。導緻了我們并無法實作一個免費好用的單邊加速功能。

但是捏,谷歌為我們帶來了幹貨 新的 TCP 擁塞控制算法 BBR (Bottleneck Bandwidth and RTT)。 目前在 Linux Kernel 4.9 中加入了該算法,是以我們隻要更新核心就可以爽一波了。

難懂的文言文,我們也不說了,TCP BBR 的目的就是要盡量跑滿帶寬,并且盡量不要有排隊的情況。

下面介紹一下如何在 RHEL、CentOS、Debian 和 Ubuntu 還有其他系統開啟 TCP BBR。

注: 更新核心有一定風險,請注意備份。

開啟 TCP BBR

隻要 Linux 發行版的 Kernel 即核心版本大于等于 4.9 即可開啟,開啟方法是通用的,如何更新至 Kernel 将在下面介紹。

修改系統變量:

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf

echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

儲存生效

sysctl -p

執行

sysctl net.ipv4.tcp_available_congestion_control

如果結果是這樣

"[email protected]:~# sysctl net.ipv4.tcp_available_congestion_control

net.ipv4.tcp_available_congestion_control = bbr cubic reno

就開啟了。

執行  lsmod | grep bbr,以檢測 BBR 是否開啟。

Debian、Ubuntu 更新核心至 4.9rc

核心下載下傳位址:

這裡以 Debian 8 amd64 為例,其他 32bit 或者 Ubuntu 系統隻要修改核心 deb 軟體名稱即可。

一、下載下傳核心

wget http://mirrors.kernel.org/debian/pool/main/l/linux/linux-image-4.9.0-rc8-amd64-unsigned_4.9~rc8-1~exp1_amd64.deb

二、安裝核心

dpkg -i linux-image-4.9.0-rc8-amd64-unsigned_4.9~rc8-1~exp1_amd64.deb

三、檢視已經安裝的核心

dpkg -l|grep linux-image

會回報如下:

ii linux-image-3.16.0-4-amd64 3.16.36-1+deb8u2 amd64 Linux 3.16 for 64-bit PCs

ii linux-image-4.9.0-rc8-amd64-unsigned 4.9~rc8-1~exp1 amd64 Linux 4.9-rc8 for 64-bit PCs

ii linux-image-amd64 3.16+63 amd64 Linux for 64-bit PCs (meta-package)

四、解除安裝舊核心

apt-get remove `核心名`

五、更新引導并重新開機

update-grub #更新引導

reboot #重新開機

然後我們可以檢視一下目前的核心版本:

[email protected]:~# uname -r

4.9.0-rc8-amd64

可見已經是最新的了。

RHEL、CentOS 更新核心至 4.9rc

因為 elrepo 方面并沒有推出已經封裝好的核心,是以我們這裡借用 Debian 的核心為例。

這裡以 CentOS 7 64bit 為例,教程需要系統最少 CentOS6

一、下載下傳核心二進制包

wget http://mirrors.kernel.org/debian/pool/main/l/linux/linux-image-4.9.0-rc8-amd64-unsigned_4.9~rc8-1~exp1_amd64.deb

二、解壓安裝

ar x linux-image-4.9.0-rc8-amd64-unsigned_4.9~rc8-1~exp1_amd64.deb

tar -Jxf data.tar.xz

install -m644 boot/vmlinuz-4.9.0-rc8-amd64 /boot/vmlinuz-4.9.0-rc8-amd64

cp -Rav lib/modules/4.9.0-rc8-amd64 /lib/modules/

depmod -a 4.9.0-rc8-amd64

三、加入引導

dracut -f -v --hostonly -k '/lib/modules/4.9.0-rc8-amd64'  /boot/initramfs-4.9.0-rc8-amd64.img 4.9.0-rc8-amd64

grub2-mkconfig -o /boot/grub2/grub.cfg

四、修改引導順序

1. 檢視引導内有哪些核心

cat /boot/grub2/grub.cfg |grep menuentry

輸入結果:

[[email protected] ~]# cat /boot/grub2/grub.cfg |grep menuentry

if [ x"${feature_menuentry_id}" = xy ]; then

menuentry_id_option="--id"

menuentry_id_option=""

export menuentry_id_option

menuentry 'CentOS Linux (4.9.0-rc8-amd64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.9.0-rc8-amd64-advanced-508f0c60-8ce4-48fa-a00e-8db45fa56da8' {

menuentry 'CentOS Linux (3.10.0-327.36.3.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.36.3.el7.x86_64-advanced-508f0c60-8ce4-48fa-a00e-8db45fa56da8' {

menuentry 'CentOS Linux (0-rescue-d45b6a27fe9641bd8979101342a4f20b) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-d45b6a27fe9641bd8979101342a4f20b-advanced-508f0c60-8ce4-48fa-a00e-8db45fa56da8' {

2.配置從預設核心啟動,下面指令的核心名稱根據系統内部查到的實際名稱來替換:

grub2-set-default 'CentOS Linux (4.9.0-rc8-amd64) 7 (Core)'

3.驗證是否配置成功:

grub2-editenv list

輸入結果:

saved_entry=CentOS Linux (4.9.0-rc8-amd64) 7 (Core)

重新開機就可以完成更新核心了!