路由器和输出缓冲区:为什么两个设备会相互干扰并导致延迟?

网络工程 数据包丢失 拥塞
2022-02-09 02:32:29

如果这个问题已经被问过,我很抱歉,因为我找不到任何相关的东西。我是网络初学者,正在阅读计算机网络:自上而下的方法,以及使用 Cisco Packet Tracer 应用程序。

我的问题与关于排队延迟和数据包丢失的书中的下图有关:

在此处输入图像描述

这本书对输出缓冲区/队列进行了以下说明:

每个分组交换机都有多个连接到它的链路。对于每个连接的链路,包交换机都有一个输出缓冲区(也称为输出队列),它存储路由器将要发送到该链路的数据包。输出缓冲区在数据包交换中起着关键作用。如果一个到达的数据包需要传输到一个链路上,但发现该链路正忙于传输另一个数据包,则到达的数据包必须在输出缓冲区中等待。因此,除了存储和转发延迟之外,数据包还会遭受输出缓冲区排队延迟。这些延迟是可变的,取决于网络中的拥塞程度。由于缓冲区空间的数量是有限的,因此到达的数据包可能会发现缓冲区已完全填满,而其他数据包正在等待传输。在这种情况下,

这就是我想知道的:

1) 信息从互联网传输到网络上的设备是否存在输出队列?例如,如果设备 C 是向视频游戏控制台 A 传输数据的视频游戏服务器,那么 A 网络的路由器是否会有一个面向 A 方向的“输出”队列?

2) 在相关说明中,假设设备 D 同时发送在设备 B 上播放的 YouTube 视频的数据。如果我在 #1 中的理解是正确的,并且每个通信链路都有相应的输出缓冲区,那么我的理解是会有有两个缓冲区:一个用于指向 A 的链接,一个用于指向 B 的链接。那么,如果这些队列彼此分开,为什么在我的家庭网络中的辅助设备上流式传输 YouTube 视频有时会导致视频游戏控制台出现延迟?是不是因为路由器无法同时处理这么多数据?

我希望我在技术上在这里问两个问题没关系。我没有课程或讲师,并且正在自学此材料。

1个回答

从互联网传输到网络设备的信息是否存在输出队列?

您的图表显示了开关,因此我将与之相关。

根据您的报价,每个交换机端口上都存在输出缓冲区。所以,你在 A 的端口上有一个缓冲区,在 B 的端口上有一个缓冲区。

Internet 通信需要路由器关于缓冲区,这并没有太大的不同,但让我们坚持你的例子。

那么,如果这些队列彼此分开,为什么在我的家庭网络中的辅助设备上流式传输 YouTube 视频有时会导致视频游戏机出现延迟?

让我们将其更改为为什么从 C 到 A 的流数据会导致从 D 到 B 的数据流滞后?假设所有链路使用 10 Mbit/s,但从中心交换机到右上角的链路使用 1.5 Mbit/s。从 C/D/E 到 A/B 的任何流共享 1.5 Mbit/s 带宽。超过该带宽会导致拥塞并丢弃数据包。非常短的突发可以通过缓冲(增加延迟)逃脱,但如果流没有受到限制,数据包丢失会继续。

即使该链路支持 10 Mbit/s 带宽,全速流 CA 和 DB 的总带宽也很容易超过该带宽,导致同样的情况。

唯一真正的解决方案是增加互连链路的带宽。如果将中心链路和右侧交换机之间的链路更改为 1 Gbit/s,则您可以同时全速运行所有边缘链路 - 几乎没有缓冲、低延迟并且没有数据包丢失。

现代交换机(除了非常大的交换机)通常支持以最大速度(非阻塞)运行所有内容。对于路由器,情况通常相同,但另外,可实现的吞吐量可能会进一步受到路由器转发能力的限制——许多低端路由器或具有大量端口的路由器可能不支持同时全速运行所有接口。