什么是缓冲膨胀(Bufferbloat)?为什么只有游戏和视频通话会卡

测速显示一切正常,游戏和视频通话却依然卡顿——这里介绍真正的原因和解决办法。

缓冲膨胀的典型症状

测速结果显示的速度和你订购的套餐完全一致,但只要同一条线路上的其他设备在进行大文件上传或下载,你的游戏延迟就会飙升,视频通话的语音和画面也会开始卡顿。

根源在于过大的缓冲区

调制解调器、路由器和运营商设备内部都有一个"缓冲区",用来临时存放瞬间涌入、来不及立刻发送的数据。如果这个缓冲区被设置得比实际需要的大很多,一旦线路被占满,数据就会在缓冲区里排队等候,延迟(latency)可能从正常的几毫秒飙升到几百甚至几千毫秒。

速度(吞吐量)和延迟是两个不同的指标

测速测量的是最大吞吐量(Mbps),而决定游戏和通话实际体验的则是延迟(ms),这是另一个独立的指标。缓冲膨胀的特点在于,它几乎不影响最大吞吐量,却会在线路负载较高时让延迟大幅恶化。

如何检测缓冲膨胀

普通的测速工具无法发现这个问题,需要使用专门测量"负载延迟(loaded latency)"的工具,对比平时的延迟和上传下载同时进行时的延迟差异。有些专门的缓冲膨胀测试工具还会用A到F这样的等级来展示两者的差距。

解决办法:SQM(智能队列管理)

开启现代路由器或OpenWrt等开源固件自带的SQM(Smart Queue Management,智能队列管理)功能,或者CAKE、fq_codel等队列管理算法,并把带宽上限设置得比线路实际速度略低一些,路由器就能自行调整流量的发送顺序,防止缓冲区被过度填满。

常见的发生场景

典型情况包括:家里有人在把大文件备份到云端时,你在线游戏对战突然卡顿;正在下载游戏更新或系统更新时,视频会议画面突然定格。上行带宽通常比较小,即使上传量不大也容易把线路占满,所以上传期间延迟突然飙升是很常见的现象。

在家里自己验证的步骤

首先在其他设备都不占用网络的情况下测一次ping,得到平时的延迟。然后让另一台设备同时进行大文件上传和下载,再对同一个目标测ping。如果平时只有十几毫秒,而负载时升到几百毫秒以上,就很可能存在缓冲膨胀。测试最好用网线连接,这样可以排除无线信号的干扰。

如何与Wi-Fi信号问题区分

Wi-Fi信号差同样会造成延迟和卡顿,但那种情况下,即使线路空闲也会出现问题。缓冲膨胀的特点是只有线路繁忙时才会恶化。用网线连接后重复同样的测试,看症状是否随线路负载同步出现,有助于判断原因。

设置SQM带宽的技巧

SQM的基本做法是把上下行带宽上限设得略低于线路实测速度,常见建议是实测值的85%到95%。如果上限高于线路真实速度,瓶颈就会转移到运营商设备上,路由器也就无法管理队列。对于不同时段速度会变化的线路,建议以繁忙时段的实测速度为准。

也要留意路由器的处理能力

SQM需要消耗路由器的处理能力,在高速光纤线路上,如果路由器性能较弱,可能达不到设定的带宽。这时可以尝试更轻量的算法(例如fq_codel)、适当调低带宽上限,或更换性能更强的路由器。

SQM的效果与局限

SQM能显著降低负载时的延迟,但它无法让线路本身变快,也无法解决运营商骨干网拥堵或服务器距离过远造成的延迟。把它理解为让繁忙线路里的延迟更可控的工具,会比较准确。

如何在自己的路由器上开启SQM

在路由器管理后台的"网络"或"高级设置"标签页下,寻找名为QoS、SQM或"智能队列管理"的菜单。找到后,把上传和下载的带宽上限设置为实测速度的85%到95%左右,而不是套餐宣传的理论速度——留出这一小段余量,正是让路由器真正能够管理队列的关键。如果当前路由器的固件根本没有这个菜单,换成OpenWrt等开源固件,或者直接更换一台内置现代队列算法的新路由器,会是更直接的解决办法。

延迟测试和游戏主机匹配问题也可能相关

如果想单独确认原始延迟、把它和缓冲膨胀区分开,可以对附近一台知名度较高的服务器做一次基础的ping测试,得到一个平时的延迟基准值,再和负载状态下的延迟结果做对比。就游戏主机而言,过于严格的NAT类型也可能导致类似的症状——比如很难加入对局或连接其他玩家,即便这和缓冲膨胀完全无关。如果改善了队列管理之后匹配问题依然存在,下一步合理的做法就是检查主机的NAT类型设置。

不同线路和套餐之间也有差别

缓冲膨胀的严重程度因线路类型(光纤、有线电视宽带、移动网络等)、家里的路由器以及运营商设备而异。同样速度的套餐,负载时的延迟也可能相差很大。想比较延迟而不只是速度,可以参考测量负载延迟的测试结果。不过,运营商一侧设备造成的问题,用户端的设置有时无法完全解决。

排查顺序建议

建议依次排查:先用网线连接,排除Wi-Fi因素;关闭后台的上传和下载,测量平时延迟;再人为制造负载,测量负载延迟;如果差距明显,再检查路由器是否有SQM或类似功能,并按实测速度的85%到95%设置上下行带宽。每次只改一个设置,并记录前后测试结果,这样才能确认到底是哪一步起了作用。

常见问题

换成更快的网络套餐能解决这个问题吗?

提高吞吐量可以降低线路被占满的频率,能在一定程度上缓解症状,但无法消除根本原因——也就是过大的缓冲区。像SQM这样的队列管理设置才是更直接的解决办法。

不换路由器也能解决吗?

部分较新的路由器出厂时已默认启用了现代队列管理算法,但许多老旧路由器或运营商提供的调制解调器根本不支持SQM功能。这种情况下,换一台支持SQM的路由器,或刷入支持该功能的开源固件,是比较现实的解决方案。

玩游戏时用网线还是Wi-Fi更好?

一般来说网线连接的延迟更稳定,因为Wi-Fi容易受信号强弱和其他设备干扰的影响。不过缓冲膨胀在两种方式下都会出现,如果换成网线后负载时延迟依旧上升,仍需要SQM之类的对策。

只要打开路由器的QoS功能就能解决吗?

取决于机型。很多QoS是给特定设备或应用设置优先级,和专门降低延迟的SQM目的不同。如果没有设置合适的带宽上限,效果可能不明显,建议查看厂商的说明。

视频会议卡住也是缓冲膨胀造成的吗?

有可能是原因之一。会议的音视频对延迟和抖动很敏感,线路繁忙导致延迟骤增时,就会表现为声音中断或画面定格。不过Wi-Fi不稳、电脑负载过高等也会引起类似现象,需要逐一排查。