带宽如何分配给并发用户?

5 networking bandwidth

假设服务器通过有限的带宽连接到 Internet,并且有 1 个以上的用户尝试同时从该服务器下载文件。

如果忽略用户端的带宽限制,请问服务器端的带宽将如何分配给不同的用户?如果有 2 个并发用户尝试下载同一个文件,带宽是否会在用户之间平均分配,因此每个用户获得 0.5 的带宽?

我尝试了以下设置:-

我已将 2 台装有 Windows XP 操作系统的客户端 PC 连接到交换机。从交换机,我通过 2mbps 的固定带宽将其连接到服务器 PC。然后,我同时在所有 3 台 PC 上运行 iperf。客户端PC以客户端模式运行iperf,服务器PC以服务器模式运行iperf。

两个客户端 PC 同时向服务器 PC 发送数据。

然后,我发现服务器 PC 从客户端 PC1 获得 ~500kbps,从客户端 PC2 获得 ~1450kbps。

客户端 PC 都使用 1gbps 以太网连接连接到交换机。两者都使用相同类型的电缆。两者都使用相同的操作系统。iperf 的设置也是一样的。

我不明白为什么分配给客户端 PC1 和客户端 PC2 的带宽之间存在如此大的差异。我想知道如何将带宽分配给同时尝试访问服务器的并发用户。

谢谢。

sys*_*138 2

没有一个答案。对于最简单的 TCP 服务,每个客户端都会尝试尽可能快地获取数据,而服务器会尽可能快地将数据铲到客户端。假设两个客户端的组合带宽超过服务器的带宽,则两个客户端的下载速度可能约为服务器带宽的一半。

其中存在很多变量,使得这在现实生活中并不完全正确。如果不同客户端的 TCP/IP 堆栈处理高流连接的能力不同,那么即使服务器具有无限带宽,其本身也会影响带宽。不同的操作系统或服务器程序以不同的方式处理流速度提升。延迟对吞吐量有影响,其中大延迟连接可能比低延迟连接慢得多,即使两个连接可以流式传输(以绝对值表示)相同数量的数据。

一个典型的例子是下载内核源代码档案。我在工作中拥有非常快的带宽,事实上它超过了我的 LAN 速度,因此如果我找到合适的服务器,我可以使本地 100Mb 连接饱和。下载大文件时查看我的网络利用率图表,我可以看到一些服务器开始时很小,100Kb/s,慢慢上升到高值,7Mb/s,然后发生了一些事情,一切又重新开始。当我开始下载时,其他服务器会立即给我所有内容。

无论如何,可能导致实际带宽分配与绝对相等不同的项目:

  • TCP/IP 能力的客户端和服务器关系
  • TCP 调整任一侧的参数,而不仅仅是功能
  • 线路延迟
  • 正在使用的应用程序级传输协议
  • 专门为负载平衡设计的硬件的存在
  • 客户端和服务器本身之间的拥塞

关于您的测试用例,可能发生的情况是一个客户端能够建立比另一个客户端更高的数据流速率,也许是通过先到达那里。当另一个流启动时,没有分配足够的资源来获得全速奇偶校验;第一个流首先到达那里并获得了大部分资源。如果第一个流结束,第二个流可能会加快速度。在这种情况下,客户端体验到的速度由服务器操作系统、执行流传输的应用程序以及服务器的 TCP/IP 堆栈决定。此外,如果网卡支持,则网卡的 TCP 卸载引擎(如果存在并已启用)。

正如我所说,其中存在很多变数。

慢速带宽使用: 慢速斜坡带宽使用图表