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

Анатомия игровых лагов › L5 Сетевое оборудование ЦОД

Переполнение таблицы сессий файрвола Firewall session table exhaustion

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

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

Файрвол записывает каждое пропущенное соединение в таблицу сессий и отслеживает его. Когда таблица заполнена, новые соединения принять нельзя.

Почему Из-за наплыва подключений или атаки число сессий достигает лимита → Следствие Для нового соединения нет свободной записи, и оно отклоняется → На экране У тех, кто пытается войти, ошибка входа или бесконечная загрузка, у части уже установленных соединений тоже дисконнект

Симптомы
Ошибка входа / бесконечная загрузка, Дисконнект
Факторы
Потери
У кого
Весь сервер
Когда
Сразу после входа или техработ, При наплыве игроков
Ответственные
Основной ответственный Команда инфраструктуры · Сетевая инфраструктура · Совместно Команда разработки · Разработка сервера, Команда разработки · Разработка клиента
Команда разработки: задачи
Сервер: сдерживать наплыв подключений очередью на вход, переиспользовать соединения вместо повторяющихся коротких, первым закрывать соединения без хартбитов (чтобы мёртвые соединения не занимали таблицу сессий надолго). Клиент: слать хартбиты с интервалом не больше половины самого короткого таймаута простоя, при обрыве автоматически переподключаться, увеличивая интервал между попытками и добавляя случайный разброс (чтобы игроки не возвращались все разом).
Команда инфраструктуры: задачи
Увеличить таблицу сессий, быстрее удалять завершившиеся короткие соединения (сократить таймаут для закрытых сессий), при сокращении таймаута простоя сообщать новое значение команде разработки, чтобы подстроить интервал хартбитов, блокировать атаки, поставить алерт на заполнение таблицы сессий.
На графике
Упор в лимит (плато) · число сессий файрвола, число неудачных новых подключений
Где смотреть
Вывести на график число одновременных сессий файрвола вместе с лимитом и найти в логах устройства записи об отброшенных пакетах, для которых не удалось создать сессию. На файрволе Linux сравнить nf_conntrack_count с nf_conntrack_max и поискать в dmesg «nf_conntrack: table full, dropping packet», на инстансе AWS смотреть conntrack_allowance_exceeded в ethtool -S
Подтверждает
С момента, когда число сессий упирается в лимит и выходит на плато, растёт число неудачных новых подключений, а вместе с ним записи об ошибках создания сессий или счётчик отброшенных пакетов
Опровергает
Если сессий намного меньше лимита, а войти нельзя, это «Переполнение очереди подключений (backlog)» или сервер авторизации. Если рвутся только неактивные соединения, это «Истечение отслеживания соединений в облачной группе безопасности»
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)

Источники

  1. Netfilter Conntrack Sysfs variables Linux kernel
    Максимальное число записей в таблице conntrack (nf_conntrack_max), время хранения закрывающихся соединений (TIME_WAIT и FIN_WAIT по умолчанию 120 с), установленных TCP-соединений по умолчанию 5 дней, текущее число записей (nf_conntrack_count)
  2. Amazon EC2 security group connection tracking AWS
    При превышении числа соединений, которые инстанс может отслеживать, пакеты новых соединений отбрасываются, неактивные соединения могут исчерпать таблицу отслеживания
  3. Infrastructure layer attacks AWS
    Атаки вроде SYN-флуда занимают ресурсы серверов, файрволов и балансировщиков нагрузки
  4. net/netfilter/nf_conntrack_core.c (Linux v6.12) Linux kernel
    Когда таблица conntrack заполнена, ядро пишет «nf_conntrack: table full, dropping packet» и отбрасывает пакеты новых соединений
  5. Monitor network performance for ENA settings on your EC2 instance AWS
    conntrack_allowance_exceeded: число пакетов, отброшенных из-за превышения лимита отслеживания соединений на инстансе, смотреть через ethtool -S

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

Тот же слой: L5 Сетевое оборудование ЦОД

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

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