【问题标题】:disabling linux tcp receiver window auto tuning禁用 linux tcp 接收器窗口自动调整
【发布时间】:2013-03-09 12:19:15
【问题描述】:

我正在处理 linux (2.6.43.8-1.fc15.i686.PAE) 并遇到一些问题来禁用 TCP 接收器窗口的自动调整。

我正在尝试找到一个给定的设置,该设置会强制我的客户公布一个固定的接收器窗口。我试图给 net.core.rmem_max (/proc/sys/net/core/rmem_max) 和 net.core.rmem_default (/proc/sys/net/core/rmem_default) 以及 ipv4.tcp_rmem (net.ipv4 .tcp_rmem)但是在检查广告窗口时(使用wireshark)它绝对不会改变任何东西......

这是为了研究 TCP 行为,如果有人能回答我,我将非常感激

提前致谢

PS:我用this post调参数

【问题讨论】:

    标签: linux tcp performance


    【解决方案1】:

    关闭 TCP 接收缓冲区大小的自动调整。在接收器上:

    $ sudo sysctl net.ipv4.tcp_moderate_rcvbuf=0
    

    或者

    $ sudo echo 0 > /proc/sys/net/ipv4/tcp_moderate_rcvbuf
    

    【讨论】:

    • 非常感谢您快速而清晰的回答。这也给了我一个指向this page 的指针,其中所有参数都得到了广泛的解释。然而,尽管尝试了两个 cmd(并且仍然将上述参数保持在相同的值),我可以观察到来自我的客户端的广告 TCP 窗口正在增加(在我的实验中,我下载了一个 60MB 对象并从 17536 win 开始到 1049805 结束) .有人知道这可能来自哪里?提前致谢
    • 你应该禁用 TCP 窗口缩放 echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
    • 停用接收器窗口自动调谐:
      $sudo echo 0 > /proc/sys/net/ipv4/tcp_moderate_rcvbuf
      * 然后固定为 4000000 min/default/max 进行自动调谐 $sudo echo 4000000 4000000 4000000 > /proc/sys/net/ipv4/tcp_rmem
      * 固定为 4000000 rmem_default/max
      $sudo echo 4000000 > /proc/sys/net/core/rmem_default
      $sudo echo 4000000 > /proc/sys/net/core/rmem_max
      * 将广播接收器窗口的第一个值覆盖到一个足够高到超过 4MB 的值
      $ip 路由更改默认通过 0.0.0.0 dev eth0 proto static initwnd 5000
    • sudo echo foo > xxx永远按预期工作,因为重定向 (>) 是由 shell 完成的。以 root 身份运行 echo 不会有任何效果。你可能想要这个:echo foo | sudo tee xxx.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2011-01-14
    相关资源
    最近更新 更多