TCP选择性ACK(SACK)永远不会工作,延迟ACK(DelAck)仅偶尔用于入站流量,但OS配置为支持两者


0

Windows性能监视器的性能图表显示:

  • 对于仅在我的ISP的速度测试页面之外测试的所有Internet连接,发送的段数(nsend)≈接收的段数(nrecv)用于入站流量(下载)。对于ISP速度测试页面,nsend≈nrecv/ 2用于下载。

  • 对于所有测试的LAN连接,nsend≈nrecv/(在注册表中设置的TcpAckFrequency值)进行下载。

图表: ISP速度测试页面 互联网流量1 互联网流量2 局域网流量1 局域网流量2

这意味着:

  • 从未使用过SACK。

  • DelAck调整到我的偏好仅用于LAN。

  • 除了该ISP页面之外,每个数据包都被确认用于Internet下载。

我期望的是,对于所有网络连接,无论是Internet还是LAN:

  • 发送≤recv/ TcpAckFrequency进行下载。

  • 理想情况下,当且仅当已填充完整的RWIN时,才应发送一个且仅一个ACK,其中接收方告知发送方已成功接收所有段。

我相信启用SACK和DelAck可以减少TCP开销,从而提高吞吐量,因为只需要发送少量的ACK数据包,并且可以节省处理能力来解析所有这些无关的ACK。

OS配置:

  • Win7 64位PC,版本6.1.7601

  • Realtek PCIe网卡

  • 200Mbit / s FTTH订阅,在国际流量中具有周期性和戏剧性(512kbps至20 mbps)连接速度变化

  • HKLM \ SYSTEM \ CurrentControlSet \ services \ Tcpip \ Parameters \ SackOpts = 1

  • HKLM \ SYSTEM \ CurrentControlSet \ services \ Tcpip \ Parameters \ Tcp1323Opts = 2

  • HKLM \ SYSTEM \ CurrentControlSet \ services \ Tcpip \ Parameters \ Interfaces \ GUID \ TcpAckFrequency = 4 //也试过2和6

  • HKLM \ SYSTEM \ CurrentControlSet \ services \ Tcpip \ Parameters \ Interfaces \ GUID \ TcpDelAckTicks = 3 //对于互联网流量,RTT通常为70到150毫秒,所以我在操作系统默认值上添加了100毫秒,这样延迟的ack可能会更好地工作而不会使初始RWIN过多

  • HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ Tcpip \ Parameters \ Interfaces \ GUID \ TcpNoDelay = 1

  • 使用NETSH实用程序也可以启用接收侧扩展和RWIN自动调整。


有时在“国际流量”中的同一主机是否只能让您达到512 kbps,在其他时间可以让您全速运行?通过应用这些设置,您实际尝试解决的问题是什么?
Seth

@Seth是的。互联网服务提供商让整个城市“享受”2年的光纤DSL,8到80的每个人都注册,因为ISP说它会给你100MB / s。国际连接的性能由于太多用户如此严重以至于不时发生数据包丢失而降级,并且ISP似乎是围绕带宽分配使我们感觉事情并不那么糟糕,导致“随机”不规则带宽和丢包率。我认为除了像RWIN和RTO这样的其他调整之外,减少需要发送的ACK数量以消除数据包丢弃是明智的。
user786008

有了这个假设你不会丢失更多的数据包吗?毕竟你只会经常发出声明。如果您的提供商有不良对等,那么您无能为力。对于大多数应用程序,TCP ACK的开销可以忽略不计。你有没有和你的ISP谈过这个问题?你怎么做才能注意到这些问题?
Seth

我考虑过你的疑问,但我认为这实际上是一场赌博。 (a)认为发送的ACK越多,ACK数据包丢失的可能性就越大,因此更有可能重新传输已经确认的段,因此更加不必要的混乱,以及(b)认为发送的ACK越多,就越有可能另一方会及时发送丢失的数据包,因此速度更快。由于默认行为属于(b),我会尝试查看(a)是否更好。 ISP刚刚表示他们只是按照上述速度保持“全市”吞吐量。我正在验证调整结果,并进入了这个
user786008
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.