Google tcp bbr拥塞算法实测

TCP拥塞控制的策略可以总结为,“”增性加,乘性减“”。TCP每个包的数据大小MSS,由双方协议决定。如何决定什么时候应该往网络中扔多少数据包呢?一开始TCP拥塞策略采用慢启动,慢启动过程CWND的大小呈指数增长。慢启动直到拥塞窗口阀值的时候,变CWND的增长方式为线性增长,当线性增长丢包时区CWND阀值一半重新线性增长。当线性增长掉包时,重新启动慢启动算法。TCP拥塞算法是一种不贴合实际的算法,假设网络链路带宽很大,但是延迟很高,同时丢包率较高。根据TCP拥塞算法,拥塞窗口的大小会被控制在一个很小的值,但是整个链路实际允许占用很大的数据量,导致整个链路的流量一直上不去。bbr算法不考虑丢包率,它取一段时间带宽BW的极大值,延迟时间RTT的极小值,利用二者的乘积再乘一个增益因子G作为拥塞窗口的大小。因为现在网络上的算法基本都是TCP的拥塞算法,此时若有采用bbr算法将一路绿灯畅行无阻。

Linux内核版本4.90以上才支持bbr算法:

  查看当前内核版本: uname -a 或者cat /proc/version

  获取内核dpkg包

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9/linux-headers-4.9.0-040900_4.9.0-040900.201612111631_all.deb

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9/linux-headers-4.9.0-040900-generic_4.9.0-040900.201612111631_amd64.deb

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9/linux-image-4.9.0-040900-generic_4.9.0-040900.201612111631_amd64.deb
安装内核
sudo dpkg -i *.deb

重启:

    reboot

查看内核版本:

dpkg -l | grep linux-image

开启bbr算法:

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

测试bbr算法的传输速度:

第一步:wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py

第二步: chmod a+rx speedtest.py

第三步: sudo mv speedtest.py /usr/local/bin/speedtest

第四步:sudo chown root:root /usr/local/bin/speedtest

第五步:speedtest

上个图:下载速度达到了100多兆每秒




没有更多推荐了,返回首页