目前tcp拥塞控制算法已有很多种,典型的如tcp_reno,tcp_vegas,tcp_cubic等,很多拥塞控制算法是针对都是相应网络情况的优化,比如tcp_bic和tcp_cubic就很适合长距离且高速低丢包的网络情况,我们可以针对我们自己的网络需求开启相应的拥塞控制算法,下面介绍在centos中修改tcp拥塞控制算法的方法(具体拥塞控制算法的针对场景以及支持的内核版本请自行查阅)
首先是一种简单的办法
终端输入:cat /proc/sys/net/ipv4/tcp_allowed_congestion_control
可以产看到当前可用的拥塞控制算法,本机显示为cubic reno
输入:cat /proc/sys/net/ipv4/tcp_congestion_control
可以看到当前使用的拥塞控制算法,本机显示为cubic
输入:sysctl net.ipv4.tcp_congestion_control = reno
修改当前拥塞控制算法为tcp_reno
下面演示添加hybla拥塞控制算法的过程
运行
sysctl net.ipv4.tcp_available_congestion_control
会得到 net.ipv4.tcp_available_congestion_control = cubic reno
这时我们来添加一个hybla拥塞控制算法
运行
/sbin/modprobe tcp_hybla
sysctl net.ipv4.tcp_available_congestion_control
得到net.ipv4.tcp_available_congestion_control = cubic reno hybla
这时表明hybla已经可以使用了。
运行
cp /etc/sysctl.conf /root/
这个是复制sysctl.conf文件,作个备份
修改sysctl.conf文件,优化TCP参数
vi /etc/sysctl.conf
按键盘i建进入编辑模式,光标移到刚才复制的net.ipv4.tcp_fastopen = 3的下面一行,复制以下内容。
————————————————复制以下内容————————
fs.file-max = 51200
#提高整个系统的文件限制
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 3240000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = hybla
————————————————复制以上内容————————
复制完成后,回个车,为底部再留下空行,按键盘Esc 键退出编辑模式,输入:wq回车,保存并退出。
运行
sysctl -p
使上面的配置生效。
至此,优化也完成了。你可以尽情使用。
注:如需要检查TCP Fast Open有没有生效运行
sysctl net.ipv4.tcp_fastopen
得到 net.ipv4.tcp_fastopen = 3,表示已经成功生效了。