Мотивация

Когда в сети возникает перегрузка, буферы маршрутизаторов переполняются и маршрутизаторы начинают терять пакеты. Для TCP-трафика это является сиг­налом о необходимости перехода в т.н. «фазу затяжного пуска» для снижения нагрузки на сеть и устранения перегрузки. Это достаточно простая процедура, когда в начале передачи данных окно соединения устанавливается равным 1, а при получении каждого последующего подтверждения окно увеличивается на 1, пока не достигнет максимума.

У данного сценария есть два недостатка. Во-пер­вых, потерянные пакеты необходимо передавать повторно, что увеличивает на­грузку на сеть и является причиной значительных задержек в TCP-потоках. Более серьезный феномен называется глобальной синхронизацией, при которой имеет место следующая ситуация. В случае резкого увеличения объ­емов трафика очереди переполняются, и множество пакетов теряется. Как прави­ло, это затрагивает многие TCP-соединения, в результате они переходят в фазу затяжного пуска, суммарный объем сетевого трафика резко падает и в течение определенного периода сеть используется не в полной мере. Поскольку многие TCP-соединения переходят в фазу затяжного пуска примерно в одно и то же вре­мя, они и выходят из этого режима также приблизительно одновременно, что вы­зывает очередное резкое увеличение объемов трафика в сети и новый цикл «изо­билия и голодания».

Одно из решений заключается в использовании на каждом маршрутизаторе буферов большего размера для снижения вероятности потери пакетов. У такого подхода есть два недостатка. Во-первых, когда эти большие буферы заполняются, задержки во всех соединениях возрастают во много раз. Еще хуже ситуация в слу­чае самоподобного трафика (инвариантный относительно изменения масштаба) – повторяющийся во всех масштабах времени. Тогда построить достаточно большие буферы невозможно в принципе. Большие всплески активности отпра­вителей могут возникать друг за другом, поддерживая состояние перегрузки, и потребности в буферах при этом будут расти до бесконечности.

Лучшее решение состоит в том, чтобы предвидеть наступление перегрузки и предлагать то одному, то другому TCP-сообщению снизить скорость передачи дан­ных. Затем определяется эффект этого замедления, после чего, в случае необ­ходимости, замедляется другое соединение. Подобным образом, когда начинается перегрузка, торможение трафика осуществляется постепенно, с минимальным воз­действием на TCP-соединения и без глобальной синхронизации. Именно такое решение реализовано в методе RED.