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

Анатомия игровых лагов › L4 Интернет-маршрут

Неисправность одного из путей ECMP ECMP / link bundle member fault

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

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

Провайдеры и ЦОД держат несколько путей к одной цели и для каждого соединения выбирают один из них. Если неисправен только один путь, лаги постоянно бывают только у тех, кому достался этот путь.

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

Симптомы
Телепортация, Откидывание назад, Микрофризы
Факторы
Потери, Джиттер
У кого
Только у меня, Один регион или провайдер
Когда
Всегда
Ответственные
Основной ответственный Команда инфраструктуры · Сетевая инфраструктура · Совместно Команда разработки · Разработка сервера, Внешние стороны · Внешние стороны
Команда разработки: задачи
Вести статистику потерь и повторных передач по соединениям, чтобы можно было выгрузить IP, порты и время у пострадавших игроков (для TCP число повторных передач из TCP_INFO, для UDP расчёт по пропущенным номерам пакетов).
Команда инфраструктуры: задачи
Собрать IP, порты и время у пострадавших игроков и передать провайдеру или ЦОД, отслеживать потери по путям, измерять маршрут тем же протоколом и портом, что и игра (mtr --tcp или --udp с --port), если путь проходит через наше оборудование, вывести неисправную линию или устройство из группы.
Внешние стороны: задачи
Попросить провайдера проверить и заменить неисправный путь, посоветовать игрокам временно обходить проблему переподключением (если при переподключении меняется порт).
Цифры для ориентира
Если путей 4, проблема бывает примерно у четверти пользователей. Замер пинга может пойти по другому пути, чем игровой трафик, и показать норму.
На графике
Высоко только у некоторых · потери и повторные передачи по соединениям (по IP и портам)
Где смотреть
Разбить потери и повторные передачи по соединениям по IP и порту источника. Запускать mtr по UDP (-u) на игровой порт (-P) с фиксированным портом источника (-L) и повторить несколько раз с разными портами источника. Если задать только -P без -L, порт источника меняется с каждым запросом, и пути смешиваются
Подтверждает
В пределах одного региона и провайдера потери стабильно бывают только у определённых сочетаний портов (или адресов) источника, а после переподключения со сменой порта всё нормально
Опровергает
Если плохо при любом порте, это перегрузка или авария на всём участке
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)
Подробнее
Чтобы пакеты одного соединения не перемешивались, оборудование (ECMP, LAG) закрепляет за каждым соединением путь по значению, вычисленному из адресов и портов, а при некоторых настройках только из адресов. Там, где учитываются только адреса, переподключение не помогает: путь остаётся тем же. Поэтому если одновременно приходят жалобы «пинг нормальный, а игра лагает» и «после перезахода стало лучше», стоит заподозрить эту причину.

Источники

  1. RFC 7424: Mechanisms for Optimizing Link Aggregation Group (LAG) and Equal-Cost Multipath (ECMP) Component Link Utilization in Networks IETF
    LAG и ECMP по хешу полей заголовка выбирают для каждого потока один линк и так сохраняют порядок пакетов (много потоков → один линк)
  2. RFC 2991: Multipath Issues in Unicast and Multicast Next-Hop Selection IETF
    Признаки, по которым различают потоки, зависят от реализации (только адрес назначения, пара адресов, ещё и порты), при многопутевой маршрутизации результатам ping и traceroute трудно доверять
  3. mtr(8) manual page source mtr
    Опции -u (UDP), -P (порт назначения), -L (порт источника UDP), если задан только -P, в порт источника подставляется номер запроса, и он меняется с каждым запросом

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

Тот же слой: L4 Интернет-маршрут

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

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