• 降低 TCP ACK 延迟造成的网络性能损失


    http://blog.donews.com/jackqq/archive/2007/11/28/1232355.aspx

    最近买了一台新机器,装了 FreeBSD 7-stable,却遇到了一个问题。

    别人在我的 http 上下载东西的时候,我从外面进来的 ssh 被挤得几乎不动了。

    以前的机器上跑着 FreeBSD 5-stable,不知道是机器配置低达不到饱和,还是 5-stable 没有这个问题,或者是我 ssh 的很少根本没注意。前两种不大可能, ADSL 512Kbps 的上行速率应该很容易撑满, 5-stable 不是起因请看下面的分析。

    昨天晚上回来查 ssh QoS,发现一种解释。这种问题的起因是网络拥塞导致 TCP ACK 延迟增大,连接的两端就陷入等待、重发和慢启动的循环状态里啦。

    换一种说法,如果 TCP ACK 拥有更高的优先级,那么下行带宽将被更好地利用。尤其是像我这样的家庭用户,提供上传服务是次要的,主要是自己下载,当然最重要的是控制,也就是 ssh。

    所以应该为 TCP ACK 提供更好的 QoS,起码也应该让 ssh 的 TCP ACK 畅通无阻。

    这样一来, pf(4) / altq(4) 似乎是不二之选了。但是学会它们还是需要时间的。以后再说吧。

    我今天想了一个用 ipfw(8) dummynet(4) 实现目前最低目标的方法。把出站数据放到一个 pipe 里,限制速度;而 ssh 的出站流量跳过这个 pipe 即可。配置文件如下:

    # loopback
    add 1 pass all from any to any via lo0
    add 2 deny all from any to 127.0.0.0/8
    add 3 deny all from 127.0.0.0/8 to any

    # open
    add 65500 pass all from any to any

    # ssh (skip throttling)
    add 22 skipto 60000 all from me ssh to any

    # outbound throttling
    pipe 1 config bw 480Kb/s
    add 50000 pipe 1 all from me to not 192.168.1.0/24

  • 相关阅读:
    Docker Machine 管理-管理machine(17)
    Docker Machine 管理-创建machine(16)
    Docker Machine 管理-安装docker-machine(15)
    kvm无人值守安装centos6
    存储-docker volume 生命周期管理(14)
    存储-docker数据共享(13)
    存储-docker存储(12)
    网络-Docker 提供的几种原生网络和自定义网络(11)
    docker容器管理-含静态Ip(10)
    rocketmq单点部署
  • 原文地址:https://www.cnblogs.com/gmth/p/3140768.html
Copyright © 2020-2023  润新知