TCP BBR(Bottleneck Bandwidth and Round-trip propagation time)是由google設(shè)計,于2016年發(fā)布的擁塞算法。以往大部分擁塞算法是基于丟包來作為降低傳輸速率的信號,而BBR則基于模型主動探測。該算法使用網(wǎng)絡(luò)最近出站數(shù)據(jù)分組當時的最大帶寬和往返時間來創(chuàng)建網(wǎng)絡(luò)的顯式模型。數(shù)據(jù)包傳輸?shù)拿總€累積或選擇性確認用于生成記錄在數(shù)據(jù)包傳輸過程和確認返回期間的時間內(nèi)所傳送數(shù)據(jù)量的采樣率。
Google在YouTube上應(yīng)用該算法,將全球平均的YouTube網(wǎng)絡(luò)吞吐量提高了4%,在一些國家超過了14%。根據(jù)實地測試,在部署了最新版內(nèi)核并開啟了 TCP BBR 的機器上,網(wǎng)速甚至可以提升好幾個數(shù)量級。
從 4.9 開始,linux 內(nèi)核已經(jīng)用上了該算法,并且對于QUIC可用。如果想在Linux使用BBR,那么首先就是判斷內(nèi)核版本是否大于4.9,如果符合版本標準,那么直接啟動BBR就可以了,如果低于4.9,升級內(nèi)核之后啟動就行了。
下面就介紹一下在centos 7.3上安裝TCP BBR的方法。
首先將Centos系統(tǒng)更新,更新到7.3版本。
yum update
查看系統(tǒng)版本,輸出的release數(shù)值大于7.3即可。
cat /etc/redhat-release
對于某些機器來說,安裝一下wget
yum install wget
方法1:自動安裝,使用一鍵安裝腳本
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
方法2:手動安裝
使用下面命令安裝elrepo并升級內(nèi)核
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
更新grub文件并重啟(reboot后,ssh會斷開,稍等一會兒重新連接)
egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d '
grub2-set-default 0
reboot
開機后查看內(nèi)核是否已更換為4.9
uname -r
啟動BBR。依次執(zhí)行下面命令就可以了。
echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf
sysctl -p
驗證bbr是否已經(jīng)開啟
A,驗證當前TCP控制算法的命令:
sysctl net.ipv4.tcp_available_congestion_control
返回值一般為:net.ipv4.tcp_available_congestion_control = bbr cubic reno 或者為:net.ipv4.tcp_available_congestion_control = reno cubic bbr
B,驗證BBR是否已經(jīng)啟動。
sysctl net.ipv4.tcp_congestion_control
返回值一般為:net.ipv4.tcp_congestion_control = bbr
lsmod | grep bbr
返回值有 tcp_bbr 模塊即說明 bbr 已啟動。