带宽饱和时可能导致高延迟的原因是什么?


0

我已经有一段时间遇到网络问题了,我正试图找出问题的根源。

昨天,我通过我的wifi连接将一个文件从我的笔记本电脑转移到我的桌面上。我下载开始的时候,两台计算机对本地路由器的ping不通(192.168.1.1,都在10ms-50ms左右),下载速度为2-3 MB / s。

大约一分钟后,我发现我的桌面延迟到192.168.1.1的速度急剧上升(> 1,000 ms),传输速度变慢(~200 KB / s)。笔记本电脑的延迟时间为192.168.1.1保持不变(10-50ms)。传输完成后,桌面的延迟会降低到正常范围。

显然,当连接饱和时会出现问题。会是什么呢?这是否表示路由器存在问题,或者我的桌面出现问题?在哪里开始寻找合适的地方?


嗯......如果连接已经饱和,那么它的最大容量就会达到。根据定义,添加更多流量将导致数据包排队并导致延迟。
cpt_fink 2015年

@cpt_fink传输速率下降到200 KB / s并保持在那里,这绝对不足以杀死路由器。这也是通过我本地网络的 Wifi - 我希望我能达到至少54 Mb / s的速度。此外,一台计算机上的延迟仍然很低,而另一台计算机上的延迟不是很高 - 你所描述的不会导致网络范围的减速吗?
帕特里克柯林斯

Answers:


2

谷歌的“缓冲膨胀”。

随着RAM变得便宜,网络设备增加了帧缓冲,因此它们永远不必丢帧。

不幸的是,帧丢失是TCP注意到拥塞并知道何时退出的方式。如果没有丢帧,传统的TCP实现从不会注意到拥塞并且永远不会退缩,因此他们只是继续高速发送并使其变得更糟。

如果所有的网络设备只是在拥塞期间缓冲越来越多的帧并让队列长度无限制地增长,则延迟会随着排队队列耗时更长而越来越长。

主动队列管理(AQM)技术和机制(如显式拥塞通知(ECN))可以缓解这种情况,但由于问题没有得到很好的宣传,因此很难知道哪些产品可以避免缓冲膨胀,哪些产品不会。这不像你可以寻找“无缓冲膨胀!” 在盒子一侧的标志,知道你正在获得良好的设备。

然而,Wi-Fi路由器的售后固件发行版专门用于避免缓冲膨胀。至少有一个发行版由TCP研究人员专门开发,他们首先认识到这个问题,并在寻找解决方案时用作他们的研发平台。


如果这是拥塞问题,为什么我的笔记本电脑的延迟会保持低水平?每个连接都有单独的缓冲区吗?在这种情况下我没有直接控制路由器(我的房东运行网络),但我相信它是一些库存Comcast产品。
帕特里克柯林斯

1

当数据包进入队列以通过非常繁忙的链路传输时,会发生高延迟。队列中前面的所有数据包必须先通过它发送。当链路上的需求很大,并且队列缓冲区很大时,这会导致往返时间过长。


那么这是否意味着路由器存在问题,或者我的无线驱动程序存在问题?
帕特里克柯林斯

高往返时间是一个特征,而不是一个错误。在饱和条件下,数据包进入队列最终被发送,或者它被丢弃。由于ping数据包比完全负载的数据包小约27倍,因此它有更好的机会进入队列,这可能没有空间用于全帧数据包。在饱和条件下,高往返时间可能比没有往返更好。Ping默认使用小数据包可能会误导实际发生的数据包丢失量。
Nevin Williams

好的。因此,如果路由器的队列已满,为什么计算机发送数据(我的笔记本电脑)仍然具有低延迟?如果这是原因,它不会杀死连接到网络的所有内容吗?
帕特里克柯林斯

“一个或多个队列”我怀疑ICMP今天在大多数消费者路由器上获得了自己的低优先级队列,这使得实际数据可以在无内容诊断流量之前进行。否则,你的ping 干扰转移,你会遇到一个真正的问题,而不仅仅是暂时的高ping时间。
Nevin Williams

这仍然没有意义 - 如果ICMP有一个单独的队列,那么两个ping都会保持低位。
帕特里克柯林斯2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.