以下是对我遇到的最奇怪的networking问题的描述。
故事
我正在和一位报告无法检查他们的电子邮件的客户合作,从今天上午开始。 两个星期前,他们完成了一次重大的升级,取而代之的是他们所有的电脑,以及一个新的SBS服务器添加到Windows域。
客户端使用Windows 7上的Outlook 2010通过POP3获取电子邮件,但邮件未收到。 发送/接收进度窗口指示下载停止在大约1%完成。
我尝试使用telnet客户端连接到POP3服务器,并观察到类似的行为。 在发出命令RETR 1我看到一小块数据(大约1K)通过,间隔越来越长。 在大量的数据之间,暂停时间似乎增加了一倍 – 我观察到持续了1,3,7,14和28秒的暂停。 那之后我就不再计算了。
通过在同一个域中的terminal服务器(Svr 2008标准)上运行telnet执行相同的POP3消息下载testing,结果相同。
然后上传一个小的PHP脚本,它将返回一个任意长度的页面到互联网上的服务器,并尝试从局域网上的terminal服务器访问它。 我testing了从1K到1MB的各种尺寸,没有观察到摊位。 HTTP似乎不受影响。
最后,我将我的个人笔记本电脑(不是域成员)插入networking,并再次尝试POP3testing – 整个邮件立即下载。
更新(2011-03-10)
我使用Wireshark来获取今天POP3对话的清晰数据包捕获。 初始会话(USER,PASS,LIST)按预期工作,服务器立即响应。 (LIST的结果适合于一个数据包。)RETR命令发出后,消息开始stream式传输,延迟开始。 我之前的估计是稍微偏离的,延迟实际上是预期的持续时间:1,2,4,8,16秒等。客户端在收到每个数据包的200毫秒内立即发送ACKS。
此外,我们试图直接将受影响的工作站之一连接到互联网,并且能够全速下载邮件。 此时,我强烈怀疑路由器(Cisco 1711)出现故障,但对IOS进行进一步的诊断我还不够了解。
我知道的
我不知道
作为pipe理员从客户端的命令行运行以下命令:
netsh interface tcp set global autotuninglevel=disabled
这将禁用TCP窗口缩放? 问题是否存在? 如果没有,那么问题就出在networking设备中的客户端和服务器之间,包括电缆,networking接口及其驱动器,交换机和路由器。
是否安装了某种软件防火墙或防病毒软件? 它可以拦截所有端口110的stream量,以便运行它的病毒数据库。 这可能会导致放缓。 它像这样大块1kb的方式表明,如果它是一个AV,它可能钉住CPU /磁盘IO等。
尝试启动资源监视器(启动任务pipe理器(Ctrl + Shift + Esc),性能,资源监视器)并观察CPU和磁盘的进程列表,以查看下载消息时是否有任何特定的进程尖峰。 (我build议用telnet进行testing,只是为了避免用Outlook / etc来污染数据)
你可能还想看看有关数据包嗅探器的stream量,以获取更多的线索。 我想知道是否客户端(由于AV,或者其他原因)在将ACK返回给服务器的数据包时真的很慢,这就导致TCP拥塞避免继续增加退避,从而延迟每个数据包之间的延迟。 就我的记忆而言,稍微超过1KB将会使您坐在最大段大小(单个数据包的大小)附近,这对于为什么每个“突发”只接收到那么多的数据是有意义的。 (免责声明:我在这方面的知识已经老了,不要太依赖了。)
如果是TCP退避,也可能是由于丢包,但我怀疑所有的新机器有一个坏的电缆什么的。 似乎更可能是一个软件问题,因为我想他们都是类似的图像。
编辑:根据提供的信息,以及adamo的其他答案,我发现了一个似乎直接解决您的问题的Microsoft知识库文章:
KB-935400从Outlook 2007或Outlook 2010中的POP3服务器下载电子邮件需要比预期时间长得多的时间
具体来说,问题是:
“如果networking硬件设备(如路由器)不支持TCP窗口缩放,则会出现此问题。”TCP窗口缩放“是Windows Vista的一项新function。
运行adamo提供的命令是一个修复程序。 看起来你也可以更新路由器。 查看思科网站上的function导航器 ,看起来像您的硬件的新版IOS版本支持TCP窗口缩放。 如果你得到一个更新的路由器的图像,并在那里闪光,它应该可以解决你的问题,而不会失去TCP窗口缩放的好处。