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

Анатомия игровых лагов › L3 Домашняя сеть

Bufferbloat (очередь в роутере) Bufferbloat

ID причины hn-bufferbloat · Основной ответственный Внешние стороны · Внешние стороны · Совместно Команда разработки · Разработка клиента

Открыть карточку в основной версии с иллюстрациями и экспериментами →

Когда кто-то из домашних выкладывает видео или качает большой файл, в очереди роутера скапливаются пакеты на сотни ms, и игровые пакеты ждут за ними.

Почему Подключение забито: домашние выгружают видео или делают облачный бэкап, игрок сам ведёт стрим, идёт большая загрузка → Следствие Роутер или модем складывает лишние пакеты в длинную очередь → На экране Игровые пакеты тоже ждут в конце очереди, и пинг взлетает до сотен ms

Симптомы
Задержка ввода, Перемотка, Телепортация
Факторы
Задержка, Джиттер
У кого
Все в одном доме, Только у меня
Когда
Изредка, случайно, Вечерний пик
Ответственные
Основной ответственный Внешние стороны · Внешние стороны · Совместно Команда разработки · Разработка клиента
Команда разработки: задачи
Если пинг вдруг вырастает до сотен ms, показывать на экране состояние сети (с подсказкой, что подключение может быть занято большой передачей данных).
Внешние стороны: задачи
Посоветовать игрокам роутер с SQM (fq_codel, CAKE) или QoS, скорость в SQM выставлять на 90–95% от скорости подключения (только тогда очередь возникает внутри роутера и SQM работает), ограничить скорость отдачи.
Цифры для ориентира
На подключении с отдачей 10 Mbps буфер в 1 MB даёт очередь длиной до 800 ms.
На графике
Растёт вслед за онлайном и нагрузкой · RTT, загрузка подключения на отдачу и приём
Где смотреть
Держа пинг запущенным, полностью загрузить подключение тестом скорости или воспользоваться веб-тестом, который измеряет задержку под нагрузкой (по рекомендациям Bufferbloat.net). Смотреть вместе с загрузкой на отдачу и приём в интерфейсе роутера
Подтверждает
Пока отдача или приём забивают подключение, пинг растёт до сотен ms, а после окончания передачи возвращается (подозрительно, если задержка под нагрузкой больше 50 ms). С включённым SQM проблема пропадает
Опровергает
Если подключение свободно, а пинг всё равно скачет, это «Помехи и слабый сигнал Wi-Fi» или «Плохое качество линии связи»
Чем проверить
Проверка на стороне игрока
Подробнее
Чаще всего забивается отдача: у кабельных и мобильных подключений исходящая скорость часто намного ниже входящей. В домах с быстрым оптоволокном узким местом становится участок 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
    Если держать пинг запущенным, загрузить подключение тестом скорости и пинг вырастет, это bufferbloat. При задержке под нагрузкой больше 50 ms (или оценке ниже B) рекомендуется принимать меры

Смотрите также

Тот же слой: L3 Домашняя сеть

Причины с тем же симптомом (Задержка ввода) на других слоях

Карточка в основной версии с иллюстрациями и экспериментами