Данные дошли нормально, но если ACK «получено» задерживается или теряется в забитой очереди отдачи, отправитель считает данные потерянными и передаёт их повторно.
Почему Дома отдачу забивает выгрузка видео или облачный бэкап → Следствие ACK задерживаются в очереди роутера на сотни ms или выбрасываются при её переполнении → На экране Игровые пакеты от сервера в основном приходят вовремя. Ввод игрока стоит в той же очереди отдачи и запаздывает: задержка ввода и откидывание назад, иногда ложные повторные передачи
Основной ответственный Внешние стороны · Внешние стороны · Совместно Команда разработки · Разработка клиента
Команда разработки: задачи
При скачке пинга показывать на экране состояние сети и подсказку «Проверьте, какие программы сейчас что-то выгружают».
Внешние стороны: задачи
Посоветовать игрокам SQM на роутере, чтобы очередь отдачи была короткой, приоритет для мелких пакетов (ACK) и ограничение скорости отдачи (выгрузка видео, облачный бэкап).
Цифры для ориентира
Каждый следующий ACK подтверждает и предыдущие, поэтому потеря нескольких ACK обычно не страшна. Проблема в задержке ACK в очереди.
На графике
Высоко только у некоторых · RTT (пинг) по соединениям
Где смотреть
С ПК игрока сравнить ping до игрового сервера при включённой и выключенной выгрузке (видео, облачный бэкап). На сервере посмотреть rtt соединения этого игрока в ss -ti
Подтверждает
Только во время выгрузки ping поднимается до сотен ms и появляются задержка ввода и откидывание назад, а после остановки выгрузки всё быстро возвращается. На сервере в это время растёт и rtt этого соединения
Опровергает
Если потери и задержка появляются независимо от выгрузки, это «Потери на беспроводном участке» или причина на маршруте. Если запаздывает только направление от сервера к игроку и выгрузка ни при чём, это «Переполнение очереди в узком месте (потери от перегрузки)»
Чем проверить
Проверка на стороне игрока
Источники
RFC 3449: TCP Performance Implications of Network Path AsymmetryIETF На асимметричных линиях с узкой отдачей задержка или потеря ACK снижает производительность TCP; ACK подтверждают кумулятивно, поэтому потерю части из них покрывают следующие; меры вроде приоритетного планирования ACK
Smart Queue ManagementBufferbloat.net Управление очередью и шейпинг на роутере держат очередь короткой