Неисправность одного из путей 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) закрепляет за каждым соединением путь по значению, вычисленному из адресов и портов, а при некоторых настройках только из адресов. Там, где учитываются только адреса, переподключение не помогает: путь остаётся тем же. Поэтому если одновременно приходят жалобы «пинг нормальный, а игра лагает» и «после перезахода стало лучше», стоит заподозрить эту причину.
mtr(8) manual page sourcemtr Опции -u (UDP), -P (порт назначения), -L (порт источника UDP), если задан только -P, в порт источника подставляется номер запроса, и он меняется с каждым запросом