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

Анатомия игровых лагов › L5 Сетевое оборудование ЦОД

Несовпадение MTU (пропадают только большие пакеты) MTU black hole

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

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

Если на промежуточном участке MTU (максимальный размер пакета за одну передачу) меньше, а уведомления о превышении размера блокируются, постоянно пропадают только большие пакеты.

Почему На участке туннеля или VPN MTU уменьшается → Следствие Уведомление о превышении размера (ICMP) блокирует файрвол, и отправитель о нём не знает → На экране Фриз и затем дисконнект только при открытии больших экранов вроде инвентаря или списка персонажей

Симптомы
Фриз, Дисконнект, Ошибка входа / бесконечная загрузка
Факторы
Потери
У кого
Один регион или провайдер, Только у меня
Когда
При определённом действии, Сразу после входа или техработ
Ответственные
Основной ответственный Команда инфраструктуры · Сетевая инфраструктура · Совместно Команда инфраструктуры · Серверная инфраструктура, Команда разработки · Разработка сервера
Команда разработки: задачи
Чтобы снизить размер на стороне сервера, задать в сокете максимальный размер сегмента TCP_MAXSEG (одного дробления сообщений в игровом коде недостаточно), держать UDP-пакеты не больше 1 200 байт.
Команда инфраструктуры: задачи
Сеть: уменьшить размер TCP-пакетов на участке туннеля (MSS clamping), разрешить уведомления о превышении размера (ICMP) на файрволах и в сетевых ACL облака. Серверы и ОС: разрешить уведомления о превышении размера (ICMP) и в файрволе сервера, и в облачной группе безопасности, включить в ядре сервера определение MTU через tcp_mtu_probing=1 (последняя страховка, которая срабатывает, только когда соединение уже простояло несколько секунд).
Цифры для ориентира
Обычно 1 500 байт, после туннеля около 1 400.
На графике
Высоко только у некоторых · дисконнекты по регионам и провайдерам, ошибки больших ответов
Где смотреть
С ПК игрока с проблемой пинговать сервер с флагом запрета фрагментации (DF), меняя размер. В Windows ping /f /l 1472 SERVER_IP, в Linux ping -M do -s 1472 SERVER_IP (1 472 = MTU 1 500 минус 20 байт заголовка IP и 8 байт заголовка ICMP). Уменьшая размер, найти максимальный, который проходит, и проверить, разрешают ли группа безопасности и файрвол на стороне сервера ICMP-уведомления о превышении размера (Fragmentation Needed)
Подтверждает
Маленький пинг проходит, а пинг с DF размером 1 472 байта нет (ответа нет или приходит ошибка о необходимости фрагментации), и максимальный проходящий размер мал, около 1 400. У игроков из одного региона фриз только при открытии больших экранов
Опровергает
Если и пинг с DF размером 1 472 байта проходит, проблема с MTU пути исключается. Если не проходит даже маленький пинг, заблокирован сам ICMP, и этим способом ничего определить нельзя
Чем проверить
Проверка на стороне игрока

Источники

  1. RFC 2923: TCP Problems with Path MTU Discovery IETF
    Если файрвол блокирует ICMP (Fragmentation Needed), определение MTU пути не срабатывает и постоянно пропадают только большие пакеты (чёрная дыра), а пинг и мелкий обмен работают, поэтому диагностировать трудно
  2. Maximum transmission unit and maximum segment size Cloudflare
    MTU пути в интернете 1 500, после GRE-туннеля 1 476, TCP MSS рекомендуется ограничить до 1 436
  3. IP Sysctl Linux kernel
    При tcp_mtu_probing=1 определение MTU пути для TCP обычно выключено и включается, когда обнаружена чёрная дыра ICMP
  4. ping(8) — Linux manual page iputils
    -M do ставит флаг DF и не отправляет пакеты больше MTU пути, -s задаёт размер данных (по умолчанию 56 байт плюс 8 байт заголовка ICMP)
  5. ping Microsoft
    /f ставит флаг DF и помогает найти проблемы с MTU пути, /l задаёт размер данных

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

Тот же слой: L5 Сетевое оборудование ЦОД

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

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