RED — Random Early Detection

А что если взять и дропы размазать по некоторой части буфера?

Условно говоря, начинать отбрасывать случайные пакеты, когда очередь заполняется на 80%, заставляя некоторые TCP-сессии уменьшить окно и соответственно, скорость. А если очередь заполнена на 90%, начинаем отбрасывать случайным образом 50% пакетов. 90% — вероятность растёт вплоть до Tail Drop (100% новых пакетов отбрасывается).

Именно так и работает RED — более продвинутый алгоритм AQM.

Early Detection — фиксируем потенциальную перегрузку; Random — отбрасываем пакеты в случайном порядке. Иногда расшифровывают RED (на мой взгляд семантически более корректно), как Random Early Discard.

Графически это выглядит так:

До заполнение буфера на 80% пакеты не отбрасываются совсем — вероятность 0%.

От 80 до 100 пакеты начинают отбрасываться, и тем больше, чем выше заполнение очереди. Так процент растёт от 0 до 30.

Побочным эффектом RED является и то, что агрессивные TCP-сессии скорее начнут притормаживать, просто потому что их пакетов много и они с бо́льшей вероятностью будут отброшены. Неэффективность использования полосы RED решает тем, что притупляет гораздо меньшую часть сессий, не вызывая такую серьёзную просадку между зубьями.

Ровно по этой же причине UDP не может оккупировать всё.

Last updated