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

Анатомия игровых лагов › Первопричины повторных передач TCP

Отбрасывание избытка полисером Traffic policing

ID причины rt-policer · Основной ответственный Команда инфраструктуры · Сетевая инфраструктура · Совместно Команда инфраструктуры · Серверная инфраструктура, Команда разработки · Разработка сервера

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

Тарифы провайдеров, лимиты облачных инстансов и оборудование защиты от DDoS могут сразу отбрасывать пакеты сверх заданной скорости, не ставя их в очередь.

Почему Мгновенный объём передачи превышает разрешённую скорость или разрешённый всплеск (burst) → Следствие Пакеты сверх лимита отбрасываются сразу, без очереди (полисинг) → На экране В моменты больших всплесков пропадает сразу несколько пакетов: фриз, потом перемотка. Средняя скорость при этом ниже лимита

Симптомы
Фриз, Перемотка, Телепортация
Факторы
Потери
У кого
Весь сервер, Один регион или провайдер, Только у меня
Когда
При наплыве игроков, Вечерний пик
Ответственные
Основной ответственный Команда инфраструктуры · Сетевая инфраструктура · Совместно Команда инфраструктуры · Серверная инфраструктура, Команда разработки · Разработка сервера
Команда разработки: задачи
Распределять объём, который выплёскивается каждый тик, по всему тику, чтобы мгновенный объём передачи был ниже разрешённого всплеска, при упоре в лимит пакетов в секунду объединять сообщения одного тика в один пакет.
Команда инфраструктуры: задачи
Сеть: проверить счётчики превышения полисера на оборудовании, заменить полисер шейпером, увеличить разрешённый всплеск. Серверы и ОС: проверить метрики превышения облачных лимитов (в AWS bw_out_allowance_exceeded и pps_allowance_exceeded в ethtool -S), перейти на инстанс помощнее, включить пейсинг на сервере (очередь fq в Linux).
Цифры для ориентира
Шейпер (ставит пакеты в очередь и задерживает) увеличивает задержку, полисер (сразу отбрасывает) увеличивает потери. Игровое TCP-соединение от одной потери может встать на сотни ms, поэтому при кратком превышении лимита обычно сильнее влияет полисер.
На графике
Упор в лимит (плато) · объём отправки с коротким интервалом, счётчики превышения полисера и allowance
Где смотреть
Посмотреть счётчики превышения (exceed) и отбрасываний на оборудовании с полисером, в облаке bw_out_allowance_exceeded и pps_allowance_exceeded в ethtool -S. Для соединений с потерями посмотреть RTT непосредственно перед потерей по rtt в ss -ti или по захвату пакетов
Подтверждает
Счётчики превышения растут, а объём отправки на коротком интервале плоский, будто срезан на каком-то значении. Перед потерями RTT не растёт, и несколько пакетов пропадают разом только в моменты больших всплесков
Опровергает
Если перед потерями сначала растёт RTT, это переполнение очереди («Переполнение очереди в узком месте (потери от перегрузки)», «Переполнение неглубоких буферов всплесками отправки»). Если счётчики превышения не меняются, причина другая
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)

Источники

  1. RFC 2475: An Architecture for Differentiated Services IETF
    Определения: шейпинг задерживает пакеты, подгоняя трафик под профиль, а полисинг отбрасывает пакеты сверх профиля
  2. An Internet-Wide Analysis of Traffic Policing Google
    У передач под полисингом доля потерь в среднем в 6 раз выше, и той же цели можно добиться пейсингом или шейпингом. Различие: полисинг отбрасывает избыток без роста RTT, а при переполнении очереди RTT растёт ещё до потерь (SIGCOMM 2016)
  3. Monitor network performance for ENA settings on your EC2 instance AWS
    bw_out_allowance_exceeded и pps_allowance_exceeded в ethtool -S: число пакетов, поставленных в очередь или отброшенных из-за превышения лимитов инстанса
  4. tc-fq(8) — Linux manual page iproute2
    Пейсинг по соединениям в очереди fq в Linux
  5. ss(8) — Linux manual page iproute2
    rtt (среднее время пути туда и обратно) в ss -i

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

Тот же слой: Первопричины повторных передач TCP

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

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