我有一个华为 HG658 调制解调器/路由器组合,由我的 ISP 提供,有点旧了,不支持/具有智能队列管理(SQL)功能,有助于消除缓冲区膨胀问题。
当我的带宽利用率达到约 80% 时,缓冲区膨胀就会开始出现,并且 ping/延迟也会增加,这在这种情况下是可以预料到的。
缓冲区膨胀是否会在特定的容量速度下发生,或者当带宽以任何互联网速度运行时是否会发生 70% 左右?
答案1
当您与 ISP 的连接繁忙/饱和/拥塞时,最常发生缓冲区膨胀。当您达到 80% 的链接容量时,您似乎会看到它。
每当出现拥塞时,路由器就会开始将要发送的数据包排队。如果拥塞很快消失(因为发送方停止/减速),排队的数据包很快就会被发送。但如果拥塞持续(比如说,持续数十或数百毫秒),这些数据包将一直留在队列中,直到轮到它们被发送。这些毫秒会增加数据包的延迟,并导致缓冲区膨胀。
路由器负责检测这种情况,并减慢正在填充数据包队列的发送方的速度。智能队列管理 (SQM) 使用 fq_codel 或(较新的)cake qdisc 来实现这一点。
如何从你的 ISP 获得更快的链接?这可能没用。原因如下:
更快的线路确实会传输更多数据。但发送者(网络上的上传/下载计算机)总是试图使到 ISP 的链路饱和,从而再次导致拥塞。因此路由器将仍然可能会对数据包进行排队,从而导致缓冲区膨胀。
正确的解决方案是获得一个可以在拥塞时向发送者提供反馈以减慢速度的路由器。有关该问题的直观描述,请参阅我的博客文章Bufferbloat 和滑雪商店