한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

游戏卡顿白皮书 › L3 家庭网络

缓冲区膨胀(路由器队列) Bufferbloat

原因 ID hn-bufferbloat · 主责 外部·外部 · 配合 研发团队·客户端开发

在含图示和实验的完整版中打开此卡片 →

家里有人上传视频或下载大文件时,路由器队列里会堆积几百 ms 的数据包,游戏数据包也得排在后面等。

起因 家人上传视频、云备份,自己直播推流,大文件下载,把线路占满 → 结果 路由器或光猫把装不下的数据包堆进大队列 → 画面表现 游戏数据包也在队列后面等待,ping 暴涨到几百 ms

症状
操作延迟, 快进, 瞬移
因素
延迟, 抖动
谁会遇到
同一家庭, 只有我
何时出现
偶尔随机, 晚高峰
负责方
主责 外部·外部 · 配合 研发团队·客户端开发
研发团队要做的事
ping 突然升到几百 ms 时在画面上显示网络状态(提示同一线路上可能有大流量传输)。
外部要做的事
引导玩家使用支持 SQM(fq_codel、CAKE)或 QoS 的路由器,SQM 速率设为线路速率的 90~95%(这样队列才会出现在路由器内部,才有效果),限制上传速度。
数值参考
上行 10 Mbps 的线路配 1 MB 缓冲区,队列可长达 800 ms。
监控图上
随人数/负载上升 · RTT、线路上行/下行用量
查看位置
开着 ping 用测速把线路占满,或使用测量负载下延迟的网页测试(见 Bufferbloat.net 的说明)。与路由器界面上的上行、下行用量一起看
确认依据
上行或下行占满线路期间 ping 升到几百 ms,传输结束后恢复(负载下延迟超过 50 ms 就值得怀疑)。开启 SQM 后消失
排除依据
线路空闲时 ping 仍冲高,看“Wi-Fi 干扰/信号弱”或“线路质量差”
确认手段
需在玩家侧环境确认
深入了解
上行方向尤其容易堵,因为有线电视宽带(Cable)、移动网络的上行往往比下行窄得多。光纤带宽充足的家庭,Wi-Fi 段会成为瓶颈,同样的情况会发生在路由器的无线队列里。游戏数据包很小,几乎不占带宽,但同样要在队列里等。只有上行堵塞时,变慢的只是自己的输入,别人的动作正常。手机上,同一部手机的照片备份、应用更新会塞满手机基带和基站的队列,引起同样的问题。

出处

  1. Setting up SQM for CeroWrt 3.10 Bufferbloat.net
    把 SQM 速率降到实测速度的 95%(按宣传速率则为 85%),把瓶颈从运营商设备移到路由器内部,才有效果
  2. SQM (Smart Queue Management) OpenWrt
    下行、上行速率填实测值的 90%,队列算法推荐 cake(CPU 较弱时用 fq_codel)
  3. Ending the Anomaly: Achieving Low Latency and Airtime Fairness in WiFi (USENIX ATC 2017) USENIX
    Wi-Fi 段占满时,路由器无线队列会产生几百 ms 延迟;修好无线队列后,负载下延迟可降到约 1/10
  4. Tests for Bufferbloat Bufferbloat.net
    开着 ping 用测速占满线路,ping 上升即为缓冲区膨胀;负载下延迟超过 50 ms(或低于 B 级)时建议采取对策

相关原因

同一层:L3 家庭网络

其他层中同样导致“操作延迟”的原因

查看含图示和实验的原卡片