对高TCP重传速率进行疑难解答

我一直在试图解决一个networking问题,出现很高的TCP重传率。 36个样本(在32位Windows 7上运行Wireshark 1.10.8)总共超过7小时,范围在2到53分钟之间,每个样本的重传次数占总入口带宽的43%到61%之间。

令我困惑的是,据我所知,这种问题只有两个原因:一个是丢包的薄片链路,另一个是拥塞。 我相信我排除了这些。 让我来阐述一下我们的情况,而且我很乐意听到有人比我更了解其他方面的问题来解决问题。

有问题的networking是在海上的一艘船上。 它使用卫星链路与互联网进行通信。 不幸的是,这种types的链路的带宽成本是巨大的,所以我们坚持1Mbps的下行/ 512kbps的连接。 作为卫星链路,它运行约650ms的ping时间。 目前,我们有大约300人在船上,所有人都分享这个pipe道。

networking由两个VLAN组成(一个用于船舶电脑,另一个用于客人)。 两个VLAN都连接到一个SonicWall TZ 215(运行SonicOS增强5.8.1.2-6o),它控制pipe道到Internet。 两个VLAN都有有线和无线客户端。 有线networking由一系列Cisco 2900千兆交换机运行。 无线networking由许多思科接入点提供(在海上的一艘钢铁船上的信号传播是可怕的)。

我的第一个想法是,这是一个拥塞问题,所以我寻求各种解决scheme(阻止高带宽的服务,如video聊天和stream媒体,窃听公司办公室支付更大的pipe道等)。 可悲的是,我们没有得到一个更大的pipe道。 其他的事情有一点帮助,但还不足以产生真正的影响。

但是这周末我又回到原点了。 上尉要求我在演习期间禁止访客上网。 当这个networking没有拥塞的时候,我利用这个机会拿走了一个Wireshark捕获的networking。 令我吃惊的是,10分钟的样本显示TCP的再次传输速率几乎与所有其他捕获相同 – 58%。 在这个样本的持续时间内,平均带宽使用率为98kbps,所以绝对不会拥塞。

这只会导致数据包丢失。 为了testing这个,我跑了十二个小时的ping。 最后,该scheme报告的丢包率不到1%。

哪个叶子…什么? 我不知道。 任何其他的想法将不胜感激。

检查您的networking之前的一切。 如:卫星链路片状。 可能是这方面的物理层面上的任何事情 – 不好的校准,不pipe。

根据福尔摩斯方法,这是唯一剩下的。 数据包因丢失而丢失。

检测丢失的一个好方法是使用UDP数据包stream(有多种工具可以做到这一点,主要用于QoStesting)。 你可以改变大小,频率,延迟。 它应该显示你是否有实际的损失。