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

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

Общий IP провайдера (CGNAT) Carrier-grade NAT

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

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

В мобильных сетях и у некоторых провайдеров один IP делят много абонентов, а записи NAT для неактивных соединений быстро удаляются.

Почему Оборудование провайдера ведёт таблицу сессий для огромного числа абонентов → Следствие Лимит таблицы сессий, короткий таймаут простоя → На экране Дисконнект после бездействия, ложные срабатывания, при которых блокируются сразу все игроки с одним IP

Симптомы
Дисконнект, Ошибка входа / бесконечная загрузка
Факторы
Потери
У кого
Один регион или провайдер
Когда
После бездействия
Ответственные
Основной ответственный Команда разработки · Разработка клиента · Совместно Команда разработки · Разработка сервера, Команда инфраструктуры · Сетевая инфраструктура
Команда разработки: задачи
Клиент: слать хартбиты с интервалом не больше половины самого короткого таймаута простоя (в мобильных сетях он бывает около 30 с), причём слать должен именно клиент, потому что запись CGNAT у провайдера надёжно обновляется только исходящими изнутри пакетами, при обрыве автоматически переподключаться. Сервер: отвечать на хартбиты и первым закрывать соединение, если их нет определённое время, подхватывать игрока по токену сессии, даже если после смены записи NAT изменились адрес и порт, осторожно применять блокировки по IP, потому что один IP могут делить много людей (решать вместе с признаками аккаунта и устройства).
Команда инфраструктуры: задачи
Подстроить лимиты файрвола и защиты от DDoS на число соединений с одного IP и число новых соединений в секунду под общие IP провайдеров (для диапазонов мобильных операторов поднять пороги или сделать исключение).
Цифры для ориентира
В мобильных сетях таймаут простоя для UDP бывает около 30 с.
На графике
Массовый обрыв соединений · число обрывов (таймаут хартбита), время бездействия перед обрывом (по провайдерам)
Где смотреть
Посмотреть в логах подключений, сколько аккаунтов одновременно подключено с одного IP и какой это провайдер (ASN), собрать по провайдерам время бездействия у соединений, оборвавшихся после простоя. На стороне игрока проверить адрес интернет-подключения (WAN) в интерфейсе роутера
Подтверждает
В диапазонах мобильных операторов с одного IP подключено несколько аккаунтов, а время бездействия перед обрывом короткое, в основном около 30–60 с. WAN-адрес роутера из 100.64.0.0/10 (общие адреса для NAT провайдера) или отличается от адреса, который видит сервер
Опровергает
Если обрывы скапливаются у пользователей домашних роутеров независимо от провайдера, это «Истечение записи в таблице NAT»
Чем проверить
Нужны логи и метрики игрового сервера или клиента

Источники

  1. A Multi-perspective Analysis of Carrier-Grade NAT Deployment (IMC 2016) ACM
    Измеренное время жизни UDP-записей NAT 10–200 с, у 74% не больше 1 мин, медиана для CGN 65 с в мобильных сетях и 35 с в проводных
  2. RFC 6888: Common Requirements for Carrier-Grade NATs (CGNs) IETF
    CGN должен поддерживать лимит внешних портов на абонента и лимит скорости создания новых записей
  3. RFC 6269: Issues with IP Address Sharing IETF
    Если адрес делят несколько абонентов, блокировка по IP (penalty box) задевает и других абонентов с тем же адресом
  4. RFC 6598: IANA-Reserved IPv4 Prefix for Shared Address Space IETF
    100.64.0.0/10: общий диапазон адресов между оборудованием NAT провайдера (CGN) и роутерами абонентов

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

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

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

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