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

Анатомия игровых лагов › Проблемы только у части игроков

Ошибка разделения сессий по IP или устройству Session keyed by IP or machine ID

ID причины pt-session-key · Основной ответственный Команда разработки · Разработка сервера · Совместно Команда разработки · Разработка клиента

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

Если сервер или промежуточный сервер различает соединения по IP или ID устройства, два клиента на одном ПК (с одним публичным IP) считаются одним игроком.

Почему Таблица сессий строится по IP или по IP + ID устройства → Следствие Данные второго клиента перезаписывают первую сессию или смешиваются с ней → На экране В одном клиенте не видно NPC, а в другом случается дисконнект или приходят чужие данные

Симптомы
Невидимки / фантомы, Дисконнект
Факторы
Потери
У кого
Один из клиентов на одном ПК, Все в одном доме, Один регион или провайдер
Когда
Сразу после входа или техработ
Ответственные
Основной ответственный Команда разработки · Разработка сервера · Совместно Команда разработки · Разработка клиента
Команда разработки: задачи
Сервер: и на сервере, и на промежуточных серверах различать соединения по уникальному сессионному токену; исправить обязательно, потому что та же проблема бывает у нескольких игроков из одного дома (за NAT роутера) и у абонентов мобильных сетей, где оператор выдаёт один IP многим абонентам (CGNAT). Клиент: использовать отдельный сессионный токен для каждого запущенного клиента.
На графике
Высоко только у некоторых · число одновременных сессий с одного публичного IP, число перезаписей сессий
Где смотреть
Писать в логи сервера и промежуточного сервера ключ поиска сессии, сессионный токен, IP и порт клиента и смотреть, менялась ли существующая сессия в момент второго подключения с того же IP. Воспроизводится, если запустить по очереди два клиента на одном ПК
Подтверждает
В момент подключения второго клиента меняются адрес или данные персонажа в первой сессии, и такие же дисконнекты видны у других игроков за тем же роутером или мобильным подключением (CGNAT)
Опровергает
Если две сессии с одного IP держатся раздельно с разными токенами, причина не эта. Если два процесса используют один локальный порт, это конфликт фиксированного UDP-порта
Чем проверить
Нужны логи и метрики игрового сервера или клиента

Источники

  1. RFC 6269: Issues with IP Address Sharing IETF
    Когда несколько абонентов делят один IPv4-адрес через NAT или CGN, различить пользователей только по IP невозможно

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

Тот же слой: Проблемы только у части игроков

Причины с тем же симптомом (Невидимки / фантомы) на других слоях

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