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]

См. также

Примечания