Устойчивая случайная ранняя фильтрация
Устойчивая случайная ранняя фильтрация (англ. Robust Random Early Detection, RRED) — дисциплина управления очередью для сетевого планировщика. Существующий алгоритм случайной ранней фильтрации (RED) и его модификации уязвимы для новых видов атак, особенно атак типа отказ в обслуживании с низкой скоростью (LDoS). Эксперименты показали, что алгоритмы, основанные на RED, заметно уязвимы перед LDoS-атаками из-за колебаний размера очереди TCP, вызываемых такими атаками[1].
Алгоритм устойчивой случайной ранней фильтрации (RRED) был предложен для повышения пропускной способности TCP при LDoS-атаках. Основная идея RRED заключается в обнаружении и фильтрации вредоносных пакетов до применения стандартного алгоритма RED к входящим потокам. Алгоритм RRED позволяет значительно повысить производительность TCP-соединений при атаках типа отказ в обслуживании с низкой скоростью[1].
Устройство устойчивой случайной ранней фильтрации (RRED)
Перед стандартным блоком RED на маршрутизаторе добавляется блок обнаружения и фильтрации. Суть метода — обнаруживать и фильтровать вредоносные пакеты LDoS в потоке данных до передачи их алгоритму RED. Ключевым моментом в проектировании RRED является различение атакующих пакетов и обычных TCP-пакетов.
В рамках нормального TCP-потока отправитель задерживает передачу новых пакетов при обнаружении потери. Следовательно, если пакет отправлен в короткий промежуток после сброшенного пакета, он подозревается как атакующий. Это является базовой идеей алгоритма обнаружения в системе устойчивой случайной ранней фильтрации (RRED)[1].
Алгоритм устойчивой случайной ранней фильтрации (RRED)
алгоритм RRED-ENQUE(pkt) 01 f ← RRED-FLOWHASH(pkt) 02 Tmax ← MAX(Flow[f].T1, T2) 03 если pkt.arrivaltime находится в [Tmax, Tmax+T*] то 04 уменьшить локальный индикатор на 1 для каждой ячейки биннинга, соответствующей f 05 иначе 06 увеличить локальный индикатор на 1 для каждой ячейки биннинга f 07 Flow[f].I ← максимум среди локальных индикаторов внутри ячеек биннинга f 08 если Flow[f].I ≥ 0 то 09 RED-ENQUE(pkt) // передать пакет в блок RED 10 если RED сбрасывает пакет то 11 T2 ← pkt.arrivaltime 12 иначе 13 Flow[f].T1 ← pkt.arrivaltime 14 сбросить пакет 15 выход
- f.T1 — время поступления последнего пакета из потока f, сброшенного блоком обнаружения и фильтрации.
- T2 — время поступления последнего пакета любого потока, сброшенного блоком случайной ранней фильтрации (RED).
- Tmax = max(f.T1, T2).
- T* — короткий интервал времени, который для RRED по умолчанию составляет 10 мс[1].
Программный код симуляции устойчивой случайной ранней фильтрации (RRED)
Программный код для симуляции алгоритма RRED опубликован как часть платформы моделирования активного управления очередями и атак типа DoS (AQM&DoS Simulation Platform). Платформа AQM&DoS Simulation Platform позволяет моделировать широкий спектр DoS-атак (распределённые DoS, DoS с подменой, DoS с низкой скоростью и др.) и алгоритмов активного управления очередями (RED, RRED, SFB и др.). Она также автоматически вычисляет и записывает среднюю пропускную способность обычных TCP-потоков до и после DoS-атак, что облегчает анализ влияния DoS-атак на TCP-потоки и AQM-алгоритмы.
Примечания
Ссылки
- Платформа симуляции AQM&DoS
- Новые публикации по атакам отказа в обслуживании с низкой скоростью (LDoS)
- Новые публикации по схемам случайной ранней фильтрации (RED) Recent Publications in Random Early Detection (RED) schemes (англ.). Wayback Machine. Дата обращения: 15 июня 2024. Архивировано 17 сентября 2016 года.
- Новые публикации по схемам активного управления очередями (AQM)