我在 Ubuntu 服务器 12.04 上
$ sudo cat /etc/issue /etc/lsb-release
Ubuntu 12.04.1 LTS \n \l
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.1 LTS"
$ uname -a
Linux vps2 2.6.32-042stab078.28 #1 SMP Mon Jul 8 10:17:22 MSK 2013 x86_64 x86_64 x86_64 GNU/Linux
根据这个http://manpages.ubuntu.com/manpages/precise/man7/tcp.7.html
应该有 tcp_westwood,但我在我的服务器上找不到:
$ sudo echo 1 > /proc/sys/net/ipv4/tcp_westwood
-bash: /proc/sys/net/ipv4/tcp_westwood: No such file or directory
$ sudo tail /proc/sys/net/ipv4/*congest*
==> /proc/sys/net/ipv4/tcp_allowed_congestion_control <==
cubic reno
==> /proc/sys/net/ipv4/tcp_available_congestion_control <==
cubic reno
==> /proc/sys/net/ipv4/tcp_congestion_control <==
cubic
那么我该如何为 12.04 lts 启用 tcp westwood?
答案1
如果你再读一遍,它会告诉你原因:
tcp_westwood(布尔值;默认值:禁用;Linux2.4.26/2.6.3 至 2.6.13) 启用 TCP Westwood+ 拥塞控制算法。TCP Westwood+ 是 TCP Reno 协议栈的发送方修改版,可优化 TCP 拥塞控制的性能。它基于端到端带宽估计,在拥塞事件发生后设置拥塞窗口和慢启动阈值。使用此估计,TCP Westwood+ 自适应地设置慢启动阈值和拥塞窗口,其中考虑了发生拥塞时使用的带宽。TCP Westwood+ 显著提高了有线网络中 TCP Reno 的公平性和无线链路上的吞吐量。
那么,这里发生了什么?
- 默认情况下,内核中未激活该选项。
- 旨在在内核 2.4.26/2.6.3 到 2.6.13 中实现。
- 应该有比您尝试做的事情更新的替代方案。
选项:
- 没用这个。
- 构建您自己的内核并激活该选项。
- 使用
-generic
内核。 - 正在安装程序
user-mode-linux
包。
答案2
仅通过模块提供。在 Ubuntu > 18.04 中,只需设置 sysctl -w net.ipv4.tcp_congestion_control=westwood,就像 Westwood 指令的创建者一样: 指导官员