Анатомия игровых лагов › Поиск по симптомам
Телепортация: причины (47) и ответственные
Иначе говорят: телепорты, варп, персонажа резко перебрасывает
Открыть в каталоге симптомов с иллюстрациями →
Персонаж без промежуточного движения сразу оказывается далеко от прежнего места.
Противник стоит на месте, а потом внезапно появляется там, куда уже успел уйти.
Обычно это значит, что пакеты какое-то время не приходили. Проверьте потери, короткие обрывы связи, остановки сервера, ошибки экстраполяции. Если у всех всё в порядке, а скачет один игрок, первым делом подозревают его подключение.
Причины этого симптома
L1 Процесс игрового клиента
- Чрезмерная экстраполяция (dead reckoning): Пока пакеты не приходят, клиент продолжает двигать объект с последней известной скоростью, а обнаружив ошибку, возвращает его назад. (Команда разработки · Разработка клиента)
L2 ОС и устройство клиента
- Переполнение буфера приёма: Если игра занята и поздно забирает пакеты из сокета (интерфейса ОС для приёма и отправки данных по сети), буфер ОС переполняется. (Команда разработки · Разработка клиента)
- Фоновое сканирование Wi-Fi: ОС периодически перебирает радиоканалы в поисках соседних сетей Wi-Fi, и на это время связь ненадолго прерывается. (Внешние стороны · Внешние стороны)
L3 Домашняя сеть
- Помехи и слабый сигнал Wi-Fi: При слабом сигнале или помехах пакеты на беспроводном участке приходится отправлять повторно по нескольку раз, и они приходят неравномерно. (Внешние стороны · Внешние стороны)
- Bufferbloat (очередь в роутере): Когда кто-то из домашних выкладывает видео или качает большой файл, в очереди роутера скапливаются пакеты на сотни ms, и игровые пакеты ждут за ними. (Внешние стороны · Внешние стороны)
- Хендовер между базовыми станциями (в движении): В автобусе или метро связь прерывается на время смены базовой станции. (Внешние стороны · Внешние стороны)
- Слабый сигнал мобильной сети и мёртвые зоны: В лифте, под землёй или в глубине здания растёт число повторных передач, падает скорость, и в итоге дело доходит до дисконнекта. (Внешние стороны · Внешние стороны)
- Частые переключения 5G ↔ LTE (на границе покрытия 5G): Внутри зданий со слабым сигналом 5G или на границе покрытия 5G телефон часто переключается между 5G и LTE, и при каждом переключении пинг скачет или связь ненадолго прерывается. (Внешние стороны · Внешние стороны)
L4 Интернет-маршрут
- Спутниковый интернет (низкоорбитальный и геостационарный): В спутниковом интернете радиосигнал летит в космос и обратно. Через геостационарный спутник один только путь туда и обратно занимает больше 0,5 с. Низкоорбитальные спутники вроде Starlink обычно быстрые, но в моменты перераспределения маршрута задержка скачет, а связь может ненадолго прерываться. (Внешние стороны · Внешние стороны)
- Перегрузка пиринга в часы пик: Примерно с 21:00 до 23:00 резко растёт видеотрафик, и стыки между провайдерами (пиринг) легко перегружаются. (Команда инфраструктуры · Сетевая инфраструктура)
- Аварии на подводных кабелях и международных линиях: После обрыва подводного кабеля трафик несколько недель (иногда месяцев), пока идёт ремонт, ходит дальними обходными маршрутами, а оставшиеся линии перегружены. (Внешние стороны · Внешние стороны)
- Смена маршрута BGP и сходимость: Когда в интернете меняется маршрутная информация, пакеты теряются, пока маршруты снова не сойдутся: от нескольких секунд до нескольких десятков секунд (изредка несколько минут). (Команда инфраструктуры · Сетевая инфраструктура)
- Неисправность одного из путей ECMP: Провайдеры и ЦОД держат несколько путей к одной цели и для каждого соединения выбирают один из них. Если неисправен только один путь, лаги постоянно бывают только у тех, кому достался этот путь. (Команда инфраструктуры · Сетевая инфраструктура)
- Ограничение скорости и управление трафиком у провайдера: Если превышен лимит трафика или тариф предусматривает управление определённым трафиком, пакеты задерживаются или отбрасываются. (Внешние стороны · Внешние стороны)
- Ограничение UDP и DPI на уровне страны или провайдера: Некоторые сети блокируют отдельные UDP-адреса и порты или ограничивают скорость UDP, а оборудование инспекции пакетов (DPI) отсеивает протоколы, которые не может распознать. Игры, работающие по UDP, в таких сетях не подключаются или часто теряют соединение. (Внешние стороны · Внешние стороны)
- Плохое качество линии связи: Плохой контакт в разъёмах, старый кабель или неисправный модем дают постоянные потери и периодические обрывы связи. (Внешние стороны · Внешние стороны)
- Перегрузка общих линий из-за DDoS: Массированная атака на игровую компанию или на другого клиента в той же сети забивает общие линии связи. (Команда инфраструктуры · Сетевая инфраструктура)
- Трафик через VPN или игровой ускоритель: С включённым VPN или игровым ускорителем пакеты идут через промежуточные серверы этого сервиса. Если такой сервер далеко или перегружен, соединение становится даже медленнее, чем без него. (Внешние стороны · Внешние стороны)
L5 Сетевое оборудование ЦОД
- Задержка и ложные срабатывания защиты от DDoS: Когда для отражения атаки трафик заворачивают через центр очистки, маршрут удлиняется, а нормальных пользователей защита иногда принимает за атаку и блокирует. (Команда инфраструктуры · Сетевая инфраструктура)
- Микробёрсты на коммутаторе: Когда несколько серверов в один и тот же момент разом отправляют пакеты тысячам игроков, маленький буфер порта коммутатора, где сходится этот трафик, переполняется меньше чем за 1 ms. (Команда разработки · Разработка сервера)
- Перегрузка линии связи ЦОД: Если раздача патчей, отправка логов и бэкапы идут по той же линии, что и игра, линия забивается. (Команда инфраструктуры · Сетевая инфраструктура)
- Неисправный кабель и ошибки порта: Если оптический модуль или кабель неисправен, определённая доля пакетов на этом пути повреждается. (Команда инфраструктуры · Сетевая инфраструктура)
L6 Сетевая карта сервера
- Все прерывания NIC на одном ядре: Если NIC отправляет прерывания о приходе пакетов только на одно ядро CPU, это ядро становится узким местом. (Команда инфраструктуры · Серверная инфраструктура)
- Слишком маленький кольцевой буфер: Если кольцевой буфер, где NIC ненадолго держит пакеты, маленький, при резком наплыве пакетов он переполняется, и пакеты отбрасываются. (Команда инфраструктуры · Серверная инфраструктура)
- Превышен лимит PPS в облаке: У каждого типа облачного сервера есть лимиты пакетов в секунду и пропускной способности, и всё сверх лимита молча отбрасывается. (Команда инфраструктуры · Серверная инфраструктура)
- Исчерпание пропускной способности NIC: Если карта на 1 Gbps или 10 Gbps загружена до предела, очередь отправки растёт, и в итоге пакеты отбрасываются. (Команда разработки · Разработка сервера)
- Обслуживание облачного хоста и живая миграция: Во время обслуживания физического сервера (хоста) облачный провайдер переносит виртуальную машину на другой хост (живая миграция) или ненадолго её приостанавливает. На это время замирает весь сервер, а если пауза долгая, соединения рвутся. (Команда инфраструктуры · Серверная инфраструктура)
L7 ОС сервера (ядро)
- Нехватка буферов сокетов в ядре: Если буферы приёма и отправки маленькие, то при всплеске трафика принятые по UDP пакеты отбрасываются, а отправка по TCP встаёт, потому что в буфере нет места. (Команда инфраструктуры · Серверная инфраструктура)
- Переполнение таблицы conntrack на сервере: Когда таблица отслеживания соединений (conntrack), в которую файрвол Linux записывает все соединения, достигает лимита, новые пакеты отбрасываются. (Команда инфраструктуры · Серверная инфраструктура)
L8 Сокеты и протоколы
- Политика для медленных клиентов (slow consumer): Если для клиента постоянно копятся неотправленные данные, сервер выбрасывает устаревшие обновления или разрывает соединение. (Команда разработки · Разработка сервера)
- IP-фрагментация UDP-пакетов: UDP-пакет больше MTU (размера, который можно отправить за один раз) фрагментируется на уровне IP, и при потере всего одного фрагмента выбрасывается весь пакет. (Команда разработки · Разработка сервера)
L9 Процесс игрового сервера
- Взрывной рост рассылки (broadcast): Если движение каждого игрока отправлять всем, кто его видит, число обновлений растёт как квадрат числа собравшихся. (Команда разработки · Разработка сервера)
- Патч изменил характер трафика: Если новый контент, эффекты и синхронизируемые поля увеличивают размер и частоту пакетов, сервер, который работал нормально, после патча упирается в MTU, пропускную способность или лимиты по числу пакетов. (Команда разработки · Разработка сервера)
Архитектура синхронизации
- Клиентский авторитет: Если каждый клиент сам определяет свои результаты, на экране игрока всё плавно, но результаты расходятся с экранами других, и игра уязвима для читов. (Команда разработки · Разработка сервера)
- Ошибки предсказания в роллбэк-неткоде: Игра предсказывает ввод соперника и показывает результат заранее, а при ошибке отматывает назад и пересчитывает. Чем больше пинг, тем глубже отмотка. (Команда разработки · Разработка клиента)
- Расхождение расчёта пути при синхронизации команд: Если стороны обмениваются только командой «иди сюда», а путь каждая сторона рассчитывает сама, то даже при небольшом расхождении персонаж или монстр идёт другим путём, а потом его утягивает на правильное место. (Команда разработки · Разработка сервера)
- Низкая частота отправки снапшотов: Если сервер отправляет обновления позиций (снапшоты) всего несколько раз в секунду, буфер интерполяции приходится делать соответственно длинным, и другие персонажи видны в более далёком прошлом. (Команда разработки · Разработка сервера)
Проблемы только у части игроков
- Игрок с плохой связью движется на чужих экранах рывками: Ввод игрока с плохим подключением приходит на сервер неравномерно, пачками. Если сервер в каждом тике применяет всё, что успело прийти, другие видят, как этот персонаж замирает, а потом делает сразу несколько шагов. (Команда разработки · Разработка сервера)
- Управление монстром у тормозящего клиента: В некоторых играх, чтобы снизить нагрузку на сервер, расчёт перемещения монстров поручают клиенту одного из ближайших игроков. Если у этого игрока плохое подключение, монстр странно движется на экранах у всех. (Команда разработки · Разработка сервера)
- Потеря опорного снапшота: Если сервер отправляет «только то, что изменилось с прошлого раза», то при потере первой полной посылки (опорного снапшота) последующие изменения применить невозможно. (Команда разработки · Разработка сервера)
Первопричины повторных передач TCP
- Потери на беспроводном участке: Wi-Fi и мобильная сеть несколько раз повторяют передачу на беспроводном участке, а если и это не помогает, выбрасывают пакет. Выброшенный пакет TCP отправит повторно только спустя заметное время. (Внешние стороны · Внешние стороны)
- Переполнение неглубоких буферов всплесками отправки: Когда сервер каждый тик разом выплёскивает обновления для тысяч игроков, маленький буфер коммутатора или мгновенный лимит облака переполняется меньше чем за 1 ms, и часть пакетов выбрасывается. (Команда разработки · Разработка сервера)
- Отбрасывание избытка полисером: Тарифы провайдеров, лимиты облачных инстансов и оборудование защиты от DDoS могут сразу отбрасывать пакеты сверх заданной скорости, не ставя их в очередь. (Команда инфраструктуры · Сетевая инфраструктура)
- Физические ошибки (неисправные кабели, оптические модули и разъёмы): Повреждённый кабель, запылённый оптический разъём или выработавший ресурс оптический модуль дают битовые ошибки, и оборудование молча выбрасывает испорченные пакеты. (Команда инфраструктуры · Сетевая инфраструктура)
- Отбрасывание пакетов на принимающем сервере: Пакеты дошли до сервера, но выбрасываются: переполнен кольцевой буфер NIC (буфер, где ненадолго лежат пришедшие пакеты) или загружено до предела процессорное ядро, на котором ОС обрабатывает приём. (Команда инфраструктуры · Серверная инфраструктура)
- Перегрузка промежуточного оборудования (файрвол, IPS, защита от DDoS): Файрволы, системы предотвращения вторжений (IPS) и оборудование защиты от DDoS проверяют каждый проходящий пакет. Как только поток превышает их возможности, необработанные пакеты выбрасываются. (Команда инфраструктуры · Сетевая инфраструктура)
- Смена маршрута и неисправный путь ECMP: Пакеты пропадают в течение нескольких секунд, пока меняется интернет-маршрут, или постоянно на соединениях, попавших на неисправный путь среди нескольких путей ECMP. (Команда инфраструктуры · Сетевая инфраструктура)
Каталог симптомов с иллюстрациями