![如何确定具有多个链路的两个主机之间的路径的吞吐量](https://linux22.com/image/1440069/%E5%A6%82%E4%BD%95%E7%A1%AE%E5%AE%9A%E5%85%B7%E6%9C%89%E5%A4%9A%E4%B8%AA%E9%93%BE%E8%B7%AF%E7%9A%84%E4%B8%A4%E4%B8%AA%E4%B8%BB%E6%9C%BA%E4%B9%8B%E9%97%B4%E7%9A%84%E8%B7%AF%E5%BE%84%E7%9A%84%E5%90%9E%E5%90%90%E9%87%8F.png)
我在搜索时看到了类似的问题,所以我认为这可能是提出这个问题最合适的地方。
我不确定如何在有多个链接的情况下计算数据传输路径的吞吐量。假设我们在两个主机之间有以下连接:
A <----- L1 -----> * <----- L2 -----> * <----- L3 -----> B
问题指出,三条链路中的每一条都具有给定的传输速率(以 Kbps 为单位)。问题描述要求计算给定路径的吞吐量,并根据此吞吐量计算结果确定传输某个任意长度的文件所需的时间。
假设我们有:L1 = 100Kpbs,L2 = 200Kbps,L3 = 300Kbps
我首先通过查看从主机 A 到 B 传输单个比特所需的总时间来解决这个问题,该总时间为每条链路的传输速率的倒数和。
- 所用时间 = 传输位数 * (1/L1 + 1/L2 + 1/L3)
但在上述情况下,等效传输速率将为 54.5Kbps!这个结论显然是错误的,因为我们至少数据传输率为 100Kpbs。退一步想一想,我意识到如果将整个链路视为以下类型的单个连续链路,那么这确实是正确的答案:
A <----- L_equivalent -----> B
但事实并非如此,因为在物理空间中我们实际上有三条不同的链路路径。因此,我们应该预期多个比特可能通过不同的链路同时传输。如果我们在任何给定时间将单个比特从 A 传输到 B,并且仅在前者到达后才传输下一个比特,则上述解决方案是正确的。
总结
实际上,难道不是这样吗:我们首先从 A 传输一个比特通过 L1,然后当 L1 将同一个比特发送到 L2 时,我们可能会将另一个比特传输到 L1 并继续进行。那么,A 和 B 之间这条路径的吞吐量仅仅是最慢链路的传输速率 100Kbps,这个结论正确吗?
答案1
您的结论确实有道理。L1 = 100Kpbs
在您的示例中,在路径的某个地方会遇到瓶颈。因此,最大吞吐量不会超过此最低值。
一个真实的例子是,一个企业工作站连接到端口速度为 100Mb/s 的接入级交换机。该交换机又连接到速度为 1Gb/s 的分布级交换机。分布交换机连接到具有 10Gb/s 连接能力的核心交换机。
现在我们看一下工作站,尽管某处有 10Gb/s 的连接,但它的连接速度仍然是 100Mb/s。
答案2
在链路未使用的情况下,您最多会获得容量最小的链路的吞吐量。因此是 L1,即 100Kbps。这就是为什么当您拥有 100Mbps 有线互联网链路时,由于您与目的地之间的某些链路拥塞或较小,您获得的吞吐量通常远远低于该吞吐量。
另外,您似乎混淆了吞吐量和速度(或延迟)。吞吐量是指给定间隔(kbps)内有多少数据包,而速度则表示数据包到达给定目的地的速度。卫星链路的吞吐量很大,但由于距离较远,延迟非常严重。