我正在使用带有 Linux 内核版本 3.13.0-34 的 Ubuntu 14.04 LTS。
我如何才能知道默认的或当前正在使用的 TCP 拥塞控制算法是什么?
谢谢。
答案1
没有 TCP 变体,只有 TCP拥塞控制算法:
sysctl net.ipv4.tcp_congestion_control
cat /proc/sys/net/ipv4/tcp_congestion_control
默认值通常是cubic
或reno
,尽管还有许多其他可用的算法,并且程序可以设置首选算法单独的连接(例如,如果可用,则启用传输lp
)。
(尽管名称不同,但同一个旋钮可以同时影响 IPv4 和 IPv6。)
答案2
添加到@grawity答案,可以使用以下命令检查所有可用的 TCP 拥塞控制算法:
sysctl net.ipv4.tcp_available_congestion_control
一些可能的输出(即可用风格)的列表如下:
里诺:几乎所有其他操作系统都使用传统 TCP。(默认)
立方体: 立方TCP
比克: BIC-TCP
超高速连接: 汉密尔顿TCP
拉斯维加斯: TCP 维加斯
韦斯特伍德:针对有损网络进行了优化
是的:延迟感知/状态启用,使管道保持在阈值或低于阈值
注意:如果立方体和/或超高速连接没有列出'sysctl net.ipv4.tcp_available_congestion_control'
,请尝试以下操作,因为大多数发行版都将它们作为可加载内核模块包含:
/sbin/modprobe tcp_htcp
/sbin/modprobe tcp_cubic
欲了解更多详细信息,请参阅此处:
希望能帮助到你。
干杯,
哥们。
答案3
如果你想找出每个连接上当前使用的拥塞控制算法,你可以使用命令ss
(iproute2包/工具):
ss -ti
以下是一些示例输出:在连接详细信息下方,参数输出中的第一项是拥塞控制算法 - 在本例中cubic
- 后面是与 TCP 连接相关的各种参数。
ESTAB 0 0 192.168.56.102:ssh 192.168.56.1:61795
cubic wscale:6,7 rto:201 rtt:0.218/0.038 ato:40 mss:1448 rcvmss:1392
advmss:1448 cwnd:10 bytes_acked:8753 bytes_received:3945 segs_out:40
segs_in:63 send 531.4Mbps lastsnd:1 lastrcv:2 lastack:1
pacing_rate 1059.1Mbps rcv_rtt:2 rcv_space:28960
注意:应用程序可以通过使用TCP_CONGESTION
setsockopt() 调用。