AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 10955
Accepted
JB.
JB.
Asked: 2009-05-22 11:34:33 +0800 CST2009-05-22 11:34:33 +0800 CST 2009-05-22 11:34:33 +0800 CST

何时关闭 TCP SACK?

  • 772

我一直在查看 Linux 调整参数,并查看了一些关闭 SACK 的配置。谁能解释一下?

这将针对繁忙的 Web 服务器进行调整。

linux http web-server
  • 3 3 个回答
  • 46010 Views

3 个回答

  • Voted
  1. Best Answer
    sh-beta
    2009-05-22T13:11:57+08:002009-05-22T13:11:57+08:00

    一个基本的 TCP ACK 说“我收到了直到 X 的所有字节”。选择性 ACK 允许您说“我收到了字节 XY 和 VZ”。

    因此,例如,如果主机向您发送了 10,000 个字节,而 3000-5000 字节在传输过程中丢失,ACK 会说“我得到了 3000 以内的所有内容”。另一端必须再次发送字节 3001-10000。SACK 可以说“我得到了 1000-2999 和 5001-10000”,主机只会发送 3000-5000。

    这在高带宽、有损(或高延迟)链路上非常有用。问题是它可能在特定情况下导致严重的性能问题。正常的 TCP ACK 将使服务器处理高带宽、有损连接(发送 500 字节、等待、发送 500 字节、等待等)。SACK 让它适应高延迟,因为它确切知道实际丢失了多少数据包。

    这是可能发生坏事的地方。攻击者可以强迫您的服务器长时间保持大量的重传队列,然后一遍又一遍地处理整个该死的事情。这可能会占用 CPU、占用 RAM 并消耗超出应有的带宽。简而言之,轻量级系统可以针对更强大的服务器发起 DoS。

    如果您的服务器很健壮并且不提供大文件,那么您可以很好地避免这种情况。

    如果您主要为 Intranet 或其他低延迟用户组提供服务,那么 SACK 不会给您带来任何好处,并且可以出于安全原因将其关闭而不会造成性能损失。

    如果您使用的是低带宽链接(例如 1Mbps 或更低,这是一个完全任意的经验法则),SACK 可能会通过使您的连接饱和而导致正常操作出现问题,因此应将其关闭。

    最终,这取决于你。考虑您服务的对象、服务对象、服务对象,并权衡您的风险程度与 SACK 的性能影响。

    这里对 SACK 及其漏洞有一个很好的概述。

    • 40
  2. Chris Markle
    2009-12-30T15:25:17+08:002009-12-30T15:25:17+08:00

    TCP SACK 经常被禁用的另一个原因是有大量的网络设备无法正确处理此选项。我们一直在使用我们提供的使用 TCP 的高速文件传输产品看到这一点。最常见的问题是网关设备的问题,例如随机化通过设备从内部网络传输到外部的 TCP 数据包的序列号,但不会“取消随机化”可能从远程发送的 TCP SACK 选项结尾。如果这些设备没有将实际的 SACK 值转换回正确的值,那么当远程端尝试使用 SACK 来获得选择性 ACK 好处时,TCP 会话将永远不会在面对丢包的情况下完成。

    如果人们更积极地对这个设备应用预防性软件维护,这可能不会成为问题,但他们往往不会。

    • 12
  3. Isaac
    2013-09-27T15:13:39+08:002013-09-27T15:13:39+08:00

    我可以从痛苦的经验中确认,当使用某些 Cisco ASA 防火墙设备时,tcp_sack = 1 会导致通过 sftp/rsync/scp 等文件传输超过 12mb 的数据停滞。

    每次它都会停滞不前。

    我们在两个不同数据中心的主机 A 和主机 B 之间通过专用的 100mbps 链路传输,都使用 cisco 防火墙和带有 centos 的交换机硬件。

    这可以通过修改缓冲区大小来有所缓解——例如,除非我将 sftp 缓冲区设置为 2048,否则我无法通过 sftp 从主机 A 向主机 B 传输 1GB 文件,但无论主机 B 是否从 A 中提取文件,我都可以。

    使用 rsync 和发送/接收缓冲区调整对同一文件进行的实验使我能够从 A 推送到 B 的 1GB 文件的 70mb 左右。

    然而,最终的答案是禁用主机 A 上的 tcp_sack。最初通过在内核中即时设置 tcp_sack = 0 - 但最终 - 我将它添加到我的 /etc/sysctl.conf

    • 7

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve