Active Queue Management
Active Queue Management (англ. Active Queue Management, AQM) — это политика преднамеренного отбрасывания пакетов в буфере, связанном с сетевым интерфейсным контроллером (NIC), до того как буфер полностью заполнится. Основная цель этой политики — снижение сетевой перегрузки или улучшение сквозной задержки сети. Эта задача выполняется сетевым планировщиком, который для этих целей использует различные алгоритмы, такие как случайное раннее обнаружение (RED), явное оповещение о перегрузке (ECN) или контролируемая задержка (CoDel). RFC 7567 рекомендует активное управление очередями в качестве наилучшей практики[1].
Общее описание
Обычно интернет-маршрутизатор содержит набор очередей, по одной или несколько на каждый интерфейс, которые хранят пакеты, ожидающие отправки через данный интерфейс. Исторически такие очереди управлялись дисциплиной «drop-tail»: если очередь короче своего максимального размера (по количеству пакетов или по объёму байт), пакет помещается в очередь, иначе — отбрасывается.
Алгоритмы активного управления очередями отбрасывают или маркируют пакеты до того, как очередь полностью заполнена. Обычно они поддерживают одну или несколько вероятностей отброса/маркировки и периодически отбрасывают или маркируют пакеты согласно этим вероятностям до достижения полного заполнения очереди.
Очереди типа drop-tail склонны штрафовать передающие данные всплесками потоки и вызывать явление глобальной синхронизации между потоками TCP. Отбрасывая пакеты с некоторой вероятностью, алгоритмы активного управления очередями обычно избегают обеих этих проблем[2].
Благодаря тому что конечные точки получают сигнал о перегрузке до полного заполнения очереди, такие алгоритмы позволяют поддерживать длину очереди меньше, чем у drop-tail, что помогает борьбе с эффектиом bufferbloat и снижает сетевую задержку.
Ранние дисциплины активного управления очередями (например, RED и SRED) требуют тщательной настройки параметров для достижения хорошей производительности. С точки зрения теории управления, эти системы не всегда ведут себя оптимально[3]. Современные алгоритмы (ARED, Blue, PI, CoDel, CAKE) самонастраиваемы и обычно работают эффективно с параметрами по умолчанию.
Инженеры исторически были обучены избегать потери пакетов, поэтому иногда критически относились к системам, которые намеренно отбрасывают пакеты: «Зачем отбрасывать исправные пакеты, если в буфере ещё есть место?»[4].
Моделирование
Существует экспериментальная платформа для моделирования активного управления очередями и атак типа «отказ в обслуживании» (AQM&DoS), реализованная на основе исходного кода симулятора NS-2 для алгоритма RRED. На этой платформе можно имитировать различные виды DoS-атак (распределённые DoS, спуфинговые DoS, малочастотные DoS и др.) и алгоритмы активного управления очередями (RED, RRED, SFB и др.). Платформа автоматически рассчитывает и фиксирует среднюю пропускную способность обычных TCP-потоков до и после DoS-атак для облегчения анализа влияния таких атак на поведение нормальных потоков и работу алгоритмов управления очередями[5].
Алгоритмы активного управления очередями
- Blue и стохастический справедливый Blue (SFB)
- Common Applications Kept Enhanced (CAKE)
- Контролируемая задержка (CoDel)
- FQ-CoDel
- Модифицированный REM (M-REM) [6]
- PI-контроллер
- Случайное раннее обнаружение (RED)
- Случайное экспоненциальное маркирование (REM) [7]
- RED с приоритетным отбрасыванием (RED-PD) [8]
- Устойчивый RED (RRED) (RRED) [9]
- RSFB: устойчивый стохастический справедливый Blue против спуфинговых DDoS-атак [10]
- Smart Queue Management (SQM) — объединение AQM с механизмами качества обслуживания (QoS) и другими технологиями [11][12]