Введение

Алгоритм раннего обнаружения случайных (RED), также известный как ранний случайный отсев или ранний случайный сброс, представляет собой дисциплину обслуживания очереди для сетевого планировщика, предназначенную для предотвращения перегрузки. В традиционном алгоритме "отброса хвоста" (tail drop) маршрутизатор или другой сетевой компонент буферизует максимально возможное количество пакетов и просто отбрасывает те, которые не помещаются в буфер. Если буферы постоянно заполнены, сеть испытывает перегрузку. Алгоритм отброса хвоста распределяет буферное пространство несправедливо между потоками трафика. Отброс хвоста также может приводить к глобальной синхронизации TCP, когда все TCP-соединения одновременно замедляются, а затем одновременно возобновляют передачу. Сети становятся недоиспользованными и перегружаются – попеременно, волнами. RED решает эти проблемы, превентивно отбрасывая пакеты до того, как буфер будет полностью заполнен. Он использует прогностические модели для определения, какие пакеты отбрасывать. Он был изобретен в начале 1990-х годов Салли Флойд и Ван Джейкобсон.

Операция

RED отслеживает средний размер очереди и отбрасывает (или помечает, когда используется в сочетании с ECN) пакеты на основе статистических вероятностей. Если буфер почти пуст, все входящие пакеты принимаются. По мере роста очереди вероятность отброса входящего пакета также увеличивается. Когда буфер заполнен, вероятность достигает 1 и все входящие пакеты отбрасываются. RED более справедлив, чем tail drop, поскольку не имеет склонности к несправедливому отношению к трафику с резкими всплесками, использующему лишь небольшую часть полосы пропускания. Чем больше хост передает данных, тем выше вероятность отброса его пакетов, так как вероятность отброса пакета хоста пропорциональна объему данных, находящихся у него в очереди. Раннее обнаружение помогает избежать глобальной синхронизации TCP.

Проблемы с классическим RED

По словам Ван Джейкобсона, "в классическом RED не одна, а две ошибки". Были разработаны улучшения алгоритма, и был подготовлен проект статьи, но статья так и не была опубликована, а улучшения не получили широкого распространения или внедрения. Велась некоторая работа над завершением исследования и исправлением этих ошибок, а также над обеспечением раннего обнаружения с учетом требований к качеству обслуживания (QoS).

РОЖД

В взвешенном RED можно задавать различные вероятности для разных приоритетов (IP-прецедентность, DSCP) и/или очередей.

АРЕД

Адаптивный алгоритм RED или активный алгоритм RED (ARED) определяет, следует ли сделать RED более или менее агрессивным, основываясь на наблюдении за средней длиной очереди. Если средняя длина очереди колеблется вокруг минимального порога, это означает, что раннее обнаружение слишком агрессивно. С другой стороны, если средняя длина очереди колеблется вокруг максимального порога, это означает, что раннее обнаружение слишком консервативно. Алгоритм изменяет вероятность в зависимости от того, насколько активно он обнаруживает отбрасывание трафика. Подробное описание этих методов и их анализа можно найти в работе Srikant.

RRED

Был предложен надежный алгоритм раннего обнаружения (RRED) для повышения пропускной способности TCP при атаках типа «отказ в обслуживании» (DoS), в частности, при атаках с низкой скоростью (LDoS). Эксперименты подтвердили, что существующие алгоритмы, подобные RED, особенно уязвимы к атакам с низкой скоростью (LDoS) из-за колебаний размера очереди TCP, вызванных этими атаками. Алгоритм RRED значительно повышает производительность TCP при атаках с низкой скоростью.