指南
什么是 Bufferbloat?
Bufferbloat 是持续的数据包队列造成的过长等待。分别比较空闲、下载和上传时的延迟,并通过前后测试验证队列管理设置。
发生 Bufferbloat 时,数据包在队列里等待过久。少量缓冲用于吸收短暂流量峰值,是正常的;队列若长期过满,文件仍在传输,通话和游戏却可能反应迟缓。队列可能位于路由器、调制解调器、其他网络设备或终端。负载下延迟增加只是线索,不是家用路由器损坏的证据。
比较空闲状态和两个传输方向
- 使用同一设备与测试目标,尽量接以太网。暂停自己的后台传输,记录空闲基线。避开重要通话做负载测试,因为测试会主动占用容量。
- 分别在下载和上传时测延迟。使用能显示空闲与负载延迟的测试,或在受控传输期间观察同一个会回应的目标的多次 Ping 回复。
- 停止传输,检查延迟是否回到基线附近。用相同设置重复,记录吞吐量、波动、丢包与负载方向。
- 比较同一指标。12 ms 升到 150 ms 是额外 138 ms;这是算例,不是所有网络的故障界限。一次峰值或一次未回复的 Ping 不能指出有问题的队列。
结果不能证明什么
自己的传输反复引起延迟上升,值得调查排队问题。但无线竞争、终端处理、服务器负载和其他路径变化也会影响结果。以太网帮助区分 Wi-Fi 这一段,却不能定位某个路由器、调制解调器或运营商队列。有些测速明确测量负载延迟;不同方法和目标不一定得到相同数字。
先减少竞争流量
- 把自己的大型传输和备份安排在通话、游戏之外。如果应用提供传输速率限制,给其他使用留空间并比较效果。
- 延迟敏感设备可以试以太网,无线覆盖另行检查。网线本身不管理互联网接入的队列。
- 购买前检查现有路由器的型号、固件和实际队列功能。新设备不自动保证更好的管理。
- 支持时按厂商说明使用 Smart Queue Management 或类似功能。先保存配置和基线;简单的应用优先级不等于主动队列管理。
SQM 可以组合流量整形、流之间的调度和主动队列管理。FQ-CoDel 与 CAKE 是受支持实现中的例子,并非每台路由器都有。把限制设在稳定可用容量以下,可能避免数据堆积在未管理的队列;应按具体说明操作,不使用统一百分比。最高吞吐量可能下降,路由器处理器和变化的移动网络容量也会限制效果。
验证设置变化
- 按说明核对下载、上传方向、接口和单位。20 Mbps 等于 20000 kbit/s;在 kbit/s 栏填 20 会设成完全不同的限制。
- 重新做相同的空闲和负载测试,同时记录延迟与吞吐量。每次只改变一个设置。
- 然后比较日常通话和游戏。测试评分改善是线索,不能保证所有应用,也不能修复无关故障。
- 保存前后结果,变差时恢复此前受支持的配置。由别人管理的路由器应请管理员或运营商协助。
空闲时就延迟很高,或只有一项服务异常,需要另行调查。多台设备持续有问题时,向客服提供目标、时间、连接方式、负载方向、型号与比较结果。只有实际功能不足或测出的限制支持时,才考虑换设备。