是什么导致重复的 ACK 记录?

Sam*_*Sam 19 windows-server-2003 windows-xp tcp wireshark

我们正在审查来自一些客户端机器的 Wireshark 捕获,这些机器显示多个重复的 ACK 记录,然后触发重新传输和失序数据包。

这些显示在以下屏幕截图中。.26 是客户端,.252 是服务器。

在此处输入图片说明

是什么导致重复的ACK记录?

如果有帮助,请提供更多背景信息:

我们正在调查某一特定客户站点的网络吞吐量问题。从用户界面的角度来看,感知到的问题是,尽管 1gbps WAN 连接未得到充分利用,但数据传输速度很慢。

几乎所有的客户端机器都有同样的问题,在 20 多台机器上测试过。我们确实找到了两台没有问题的机器。我们正在确定它们的配置有何不同。我们确实注意到,在没有问题的两台机器中,我们最多只看到一个重复的 ACK 记录。有问题的机器通常有三个重复的 ACK 记录。一个显着的区别是,运行良好的机器都属于网络运营团队的成员,而所有其他机器都是为“普通”员工使用的。这些机器应该是标准的,但网络管理员可以对他们的本地系统进行更改,这是我们正在研究的另一个方面。

我们尝试更改服务器上的TcpMaxDupAcks设置,但我们真正需要的值是 5,有效范围仅为 1-3。

服务器是 Windows Server 2003。客户端都是企业管理的 Windows XP。所有客户端,包括两个正在运行的客户端,都安装了赛门铁克防病毒软件。

这是数百个出现此问题的客户端站点中唯一的一个。

pathping 显示 56 毫秒 RTT 和一致的 0/100 数据包丢失,即使是来自问题机器。

谢谢,

山姆

Mur*_*iar 25

注意:我假设此捕获是在客户端计算机上进行的。

TCP 排序的简要总结:TCP 在两个应用程序之间可靠地传送字节流。在这种情况下,“可靠”意味着除其他外,TCP 保证永远不会将乱序数据传送到侦听应用程序。

通过使用序列号来实现有序、可靠的交付。每个流中的每个数据包都分配了一个 32 位的序列号(请记住,TCP 实际上是两个独立的数据流,A->B 和 B->A)。如果 A 向 B 发送 ACK,则 ACK 字段中的值是 A 希望从 B 看到的下一个序列号。

从上面可以看出,至少有一个从服务器发送到客户端的 TCP 段丢失了。依次重复的三个 ACK​​ 是客户端尝试触发快速重传。当 TCP 发送方收到 3 个对同一条数据的重复确认(即同一段的 4 个 ACK​​,不是最近发送的数据段)时,可以合理地假设在被 ACK 的段之后的段丢失了在网络中,并导致立即重新传输。

在这种情况下,重传通过,并被 Wireshark 识别为乱序。

正如joeqwerty所提到的,丢包最常由拥塞引起。这也可能是由于接口卡损坏、电缆松动等导致的 CRC 或链路上的其他错误。我会查看路径上每个链路的统计信息,看看是否有任何链路被高度利用和/或正在经历大量错误。

如果您看不到任何明显的候选对象,请在路径上的多个点执行并发数据包捕获,以尝试隔离发生丢失的位置。

这里使用的是哪种 WAN 连接?是专线吗?MPLS VPN 链接?公共互联网上的 IPsec VPN?还有什么?


joe*_*rty 1

重复的 ACK 与缓慢的网络性能相结合,对我来说听起来像是网络拥塞问题。查看网络上广播流量的数量和速率。确保查看物理层和网络层广播以及多播。