我正在寻求帮助,我确定这是一个古老的问题。我发现自己处于一种渴望更清楚地了解网络吞吐量的情况,但我似乎找不到让它“点击”的信息
我们有几台服务器分布在不同的地理位置,运行着各种版本的 Windows。假设我们总是使用一台主机(台式机)作为源,当将数据从该主机复制到全国各地的其他服务器时,我们会发现速度差异很大。在某些情况下,我们可以始终以 12MB/s 的速度复制数据,而在其他情况下,我们看到的是 0.8MB/s。应该注意的是,在测试了 8 个目的地之后,我们似乎总是在 0.6-0.8MB/s 或 11-12MB/s。在我们主要关注的建筑物中,我们有一个 OC-3 连接到我们的 ISP。
我知道有很多变数在起作用,但我想我希望这里的专家能帮助回答一些基本问题,以帮助加深我的理解。
1.) 对于运行 Windows XP、server 2003 等、具有 100Mbps 以太网卡和 72 毫秒典型延迟的旧机器,0.8 MB/s 听起来合理吗?还是您认为速度慢到足以表明存在问题?
2.) 在我们的例子中,“吞吐量 = TCP 窗口/延迟”的经典“数学最快速度”计算为 0.8 MB/s (64Kb / 72 ms)。我的理解是,这是一个上限;你永远不会期望达到(由于开销)更不用说超过那个速度了。但在某些情况下,我们看到的速度为 12.3 MB/s。网络上散布着 Steelhead 加速器,这些可以解释如此高的传输速率吗?
3.) 有人建议使用 SMB 与 SMB2 可以解释速度上的差异。事实上,正如预期的那样,数据包捕获显示两者都在使用,这取决于正在使用的操作系统版本,正如我们所期望的那样。我了解决定使用或不使用 SMB2 的因素,但我很想知道您可以通过 SMB2 获得什么样的性能提升。
我的问题似乎只是缺乏经验,更重要的是,就什么是合理的网络速度和什么不是合理的网络速度而言,缺乏观点。任何人都可以帮助传授背景/观点吗?
您所指的数学公式实际上是确定 TCP 最有效传输窗口大小设置的方法,而不是实际可用带宽。TCP 使用一种称为滑动窗口的机制,允许根据网络条件调整传输速度。这个想法是 TCP 发送器将发送越来越多的数据,而不需要接收者的确认。如果有数据丢失,则在确认之间发送的数据量会减少,从而也会降低有效带宽。
所讨论的公式实际上根据给定主机对之间的延迟和往返延迟确定了 TCP 传输窗口的理想大小。这个想法是设置一个窗口大小,使“传输中”的数据量对应于所谓的带宽延迟乘积。例如,如果每秒 50 兆比特 (6.25 megaBYTES) 并且平均往返延迟为 100 毫秒,那么您将拥有 6.25 * 0.1 = 625 KB 的数据。这将是 TCP 将协商的值(如果配置正确)。随着链接的延迟和带宽特性发生变化,窗口大小也会发生变化。
您需要的是一个带宽管理工具,例如在源和各种目标上运行的 iperf(免费)。这应该让您了解可能的实际吞吐量(独立于其他应用程序),同时还提供对延迟的一些了解。在主机之间运行扩展 ping 也将提供延迟特征的一般概念。当您拥有这些数据时,您将更好地了解就吞吐量而言您应该看到什么。
顺便说一句 - 使用任何类型的 LAN 优化器通常会结合数据压缩、TCP 优化、缓存等。虽然方便,但它可能会掩盖底层链接的性质。一旦您了解了原始带宽/延迟(以及潜在的数据包丢失),您可以仔细查看以确保您的各种主机已设置为充分利用可用带宽。
尝试“ping -l 8092”或 FTP 或 HTTP 检查是否是 SMB 问题。
首先:您使用什么媒体连接计算机?什么是“100mpbs”?以太网?您不能将它用于“分布式地理”计算机,对吗?
在“VPN over Internet”的情况下,您的计算机之间的路由器可能使用不同的链接:一个速度快,另一个速度快。他们可能会根据许多参数选择链接。
请描述您的网络。
这也可能是 MTU 问题:多个链路可能具有不同的 MTU。
很多评论和用户在这里提供了很好的建议。其中一些与我所寻找的非常接近,但我也很幸运能遇到我们公司的一位网络资深人士,他帮助澄清了一些事情。我想我会在这里发布我的发现/理解以造福他人。如果有任何问题,请随时纠正我:
1.) 具有 72 毫秒延迟和 64K 窗口的单个 TCP 会话的最大吞吐量约为 0.8 MB/s,这使得该速度对于单线程、单会话副本来说是合理的,就像我们使用 robocopy 执行的那样。
2.) 这种速度差异似乎归结为传输方法的有效性。在我们的案例中,我们使用的是 Robocopy 和 Repliweb。我发现 robocopy 使用单个 TCP 会话,而 Repliweb 可以打开多个会话来发送数据。
3.) Microsoft 网站的研究确实表明 SMB2 比 SMB1 具有相当大的性能提升。然而,在某些情况下,操作系统如何协商要使用的协议存在问题,因此应该了解 a.) 哪些情况下可能会使用 SMB2,以及 b.) SMB2 是否实际被利用基于关于网络捕获。
目前,Wire-shark 似乎可以确定使用 SMB2 协议。
我希望这有帮助。同样,我的理解在这里相当初级,请随意扩展。