Введение
Алгоритм раннего обнаружения случайных (RED), также известный как ранний случайный отсев или ранний случайный сброс, представляет собой дисциплину обслуживания очереди для сетевого планировщика, предназначенную для предотвращения перегрузки. В традиционном алгоритме "отброса хвоста" (tail drop) маршрутизатор или другой сетевой компонент буферизует максимально возможное количество пакетов и просто отбрасывает те, которые не помещаются в буфер. Если буферы постоянно заполнены, сеть испытывает перегрузку. Алгоритм отброса хвоста распределяет буферное пространство несправедливо между потоками трафика. Отброс хвоста также может приводить к глобальной синхронизации TCP, когда все TCP-соединения одновременно замедляются, а затем одновременно возобновляют передачу. Сети становятся недоиспользованными и перегружаются – попеременно, волнами. RED решает эти проблемы, превентивно отбрасывая пакеты до того, как буфер будет полностью заполнен. Он использует прогностические модели для определения, какие пакеты отбрасывать. Он был изобретен в начале 1990-х годов Салли Флойд и Ван Джейкобсон.
Random early detection (RED), also known as random early discard or random early drop, is a queuing discipline for a network scheduler suited for congestion avoidance. In the conventional tail drop algorithm, a router or other network component buffers as many packets as it can, and simply drops the ones it cannot buffer. If buffers are constantly full, the network is congested. Tail drop distributes buffer space unfairly among traffic flows. Tail drop can also lead to TCP global synchronization as all TCP connections "hold back" simultaneously, and then step forward simultaneously. Networks become under utilized and flooded—alternately, in waves. RED addresses these issues by pre emptively dropping packets before the buffer becomes completely full. It uses predictive models to decide which packets to drop. It was invented in the early 1990s by Sally Floyd and Van Jacobson.
Операция
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 при атаках с низкой скоростью.