如何调整TCP窗口大小?

分享于 

2分钟阅读

互联网

  繁體

问题:

以下是一些信息:

  • OS : Ubuntu 20.04 (LTS) x64
  • 服务器: Apache/2.4.41
  • 应用类型: Python - Flask
  • 托管公司:Digital Ocean

在告诉我改变窗口大小不能工作之前,请参考这个答案,https://networkengineering.stackexchange.com/a/2297/71565


答案1:

由于TCP头的限制,基本窗口大小不能超过65535字节,来自RFC 1323:

TCP标头使用16位字段向发送方报告接收窗口大小,因此,可以使用的最大窗口是2*16 *65K字节。

这并不意味着TCP窗口不能更大,因为现代的OSes支持TCP窗口缩放,其中窗口大小通过向上缩放来动态增加14X,但是,可以在达到最大缩放比例之前配置上限。

供参考,这些是Ubuntu 20.04上的相关参数(及其默认值):


net.ipv4.tcp_window_scaling = 1 ;scaling enabled


net.ipv4.tcp_rmem = 4096 131072 6291456 ;min, default and max receive window


net.ipv4.tcp_wmem = 4096 16384 4194304 ;min, default and max send window


net.core.rmem_max = 212992 ;max absolute limit for receive buffer


net.core.wmem_max = 212992 ;max absolute limit for send buffer



实际的最大窗口大小在[r|w]mem_maxtcp_[r|w]mem的第三个值之间较小,因此在Ubuntu 20.04上,默认情况下实际的最大接收和发送窗口为212992字节。要将该限制增加到4MB,可以执行以下操作:


sysctl -w net.core.rmem_max=4194304


sysctl -w net.core.wmem_max=4194304



如果有效,可以通过编辑/etc/sysctl.conf来保留设置



Window  尺寸  TCP  
相关文章