缓冲膨胀:快网络的卡顿病
有人一开下载,你的视频会议就散架——套餐明明带宽充足。这不是速度问题,是排队问题。
到底发生了什么
每台路由器和光猫都有缓冲区——线路瞬时占满时数据包的"候车室"。小剂量的缓冲是健康的,但许多家用设备出厂时的缓冲区大了几百倍。
当一个大传输占满线路,这些过大的缓冲区也被灌满。此后每一个数据包——包括你的通话、游戏、点击所依赖的那些小而紧急的包——都要排在成兆的大块数据后面等待。延迟从 20 ms 膨胀到 300、600、甚至上千毫秒。这就是缓冲膨胀。
典型症状
平时一切正常,直到有人上传照片、游戏开始更新、云备份悄悄启动——通话卡顿、视频转圈、网页爬行、游戏漂移。传输一停,瞬间恢复如初。
因为诱因是你自己的流量,缓冲膨胀能躲过空闲状态的测速:下载、上传、空闲 Ping 全都可以漂亮得无可挑剔。
如何测量
要在线路打满的同时测延迟。我们的测速正是这么做的——探测包与下载、上传阶段赛跑,你会分别得到两个负载延迟数字,外加一个 A–F 的缓冲膨胀评级。C 级或更差,意味着线路一忙,实时应用必然遭殃。
解决方案,按有效性排序
真正的解药是路由器上的智能队列管理(SQM):fq_codel、CAKE 这类算法从设计上就把队列压到极小。在设置里找 SQM、Smart Queue 或带 fq_codel/CAKE 的 QoS,把整形带宽设为略低于实测速度。评级从 D 跳到 A 是家常便饭。
如果路由器不支持 SQM:可以试试内置的"抗缓冲膨胀"或游戏 QoS 模式(效果从尚可到安慰剂不等);换一台支持 SQM 的路由器(包括任何能刷 OpenWrt 的型号);或把运营商的光猫改桥接,接在这样的路由器后面。
没用的办法:买更大的带宽。管道更粗、缓冲区照旧臃肿,只会灌满得更快。