1. 程式人生 > >使用標準方式在 Ubuntu 16.04 下啟用 TCP 擁塞控制之 BBR

使用標準方式在 Ubuntu 16.04 下啟用 TCP 擁塞控制之 BBR

BBR 簡介

BBR 是 Google 推出的一個「TCP 擁塞控制演算法」,它是以 Linux 核心模組的形式載入,可以最大化 Linux Server 的網路吞吐量。

簡單地說,開啟 BBR 的 Linux Server 和不開啟 BBR 的 Linux Server,在持續傳輸資料方面可以有非常大的不同。這個技術非常合適應用在視訊、下載網站上,個人的話,當然是科學上網了。

BBR 儘管還沒有在主流發行版中預設開啟,但 Google 已經在 YouTube 網站上實踐了很久,可以說是很成熟的一樣技術了。

下面我就介紹一下我是如何在 Ubuntu 16.04 上使用最標準的方式來開啟 BBR 支援的。

如何檢測 BBR 是否開啟

在開始之前,我們可以先看看 BBR 是否已經啟用了(沒準你用的雲主機商已經做了這件事情):

執行這條指令可以返回當前 Linux 核心可以使用的 TCP 擁堵控制演算法:

sysctl net.ipv4.tcp_available_congestion_control

在我的 Server 上,返回了:

net.ipv4.tcp_available_congestion_control = cubic reno

很明顯,預設的 Ubuntu 16.04 用的是 Linux 4.4.0 核心,自然是看不到 BBR 的。

我們再確認一次當前使用的控制演算法:

sysctl net.ipv4.tcp_congestion_control

返回內容是:

net.ipv4.tcp_congestion_control = cubic

沒錯,就是使用 cubic 這個預設的演算法。接下去我們通過最標準的模式來為這臺 Ubuntu 16.04 啟用 BBR。

為 Ubuntu 16.04 安裝 4.10 + 新核心

如果你簡單地瞭解過 BBR,那麼就知道 BBR 只能配合 Linux Kernel 4.10 以上核心才能使用。但是在 Ubuntu 16.04 上怎麼使用 4.10 呢?難道要手動下載和安裝嗎?

不能!這會有一個安全隱患,手動下載安裝的新核心,無法保證後續能得到及時的安全更新。那麼怎麼辦?這裡我推薦使用 HWE 版本的核心,它就在官方源裡。

HWE,即:HareWare Enablement,是專門為在老的系統上支援新的硬體而推出的核心。你可以像安裝其他軟體包一樣在 Ubuntu 16.04 裡非常容易的安裝它:

sudo apt-get install linux-generic-hwe-16.04

只要這樣,就 OK 了…是不是超簡單?這裡還有一個 Tips:假如你想使用更激進的新核心,可以使用 edge 版本:

sudo apt-get install linux-generic-hwe-16.04-edge

這兩個軟體包不同的是,前一個安裝的是 4.10 核心,後一個安裝的是 4.11,充分滿足想追求使用新核心的同學的需求。

安裝好以後重啟電腦,然後輸入:

uname -a

看看是不是變成 4.10 核心了?

Linux hostname 4.10.0-33-generic

為 Ubuntu 16.04 啟用 BBR

有了新核心以後,我們就可以為新核心裝載 BBR 模組了:

sudo modprobe tcp_bbr

echo "tcp_bbr" | sudo tee -a /etc/modules-load.d/modules.conf

裝載後,再執行 sysctl net.ipv4.tcp_available_congestion_control 命令,你就可以看到 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

執行完這幾條指令後,再用 sysctl net.ipv4.tcp_congestion_control 驗證一下,看到返回結果是:

net.ipv4.tcp_congestion_control = bbr

It works!

總結

在為我們的系統啟用各種新特性的情況下,我看到網路上很多教材都是去下載一些獨立的核心軟體包、甚至有教程教使用者自己去編譯核心模組…這不但麻煩,而且帶來很大的維護成本,所以我不推薦這種方式。希望本文的方式能成為接下去大家都會去使用的一種方式。

對了,大家啟用 BBR 前後,記得通過下載測個速,你就會發現前後的改變是非常顯著的。