Стратегии обработки очередей и борьбы с перегрузками

Используются четыре основных алгоритма очередей: первый-пришел-первый-обслужен (FIFO), "честная" очередь с весами WFQ, очередь с приоритетами (priority queueing), произвольные очереди (custom queueing) и алгоритм избежания перегрузок - random early detection (RED).

Соответственно, кроме простой очереди, могут быть сконфигурированы следующие метода установки приоритетов сетевого трафика:

Все эти очереди могут быть сконфигурированы в одном маршрутизаторе одновременно, но на конкретный интерфейс может быть назначен только один тип очереди.

"Честная" очередь с весами (Weighted Fair Queuing)

С точки зрения очереди с весами существует две категории потоков данных: потоки с большим объемом данных и потоки с малым объемом данных. Потоки с малым объемом данных имеют приоритет над остальными, а потоки с большим объемом данных разделяют между собой пропускную способность канала пропорционально назначенным весам.

При достижении трафиком на интерфейсе порогового значения загрузки, пакеты из потоков с большим объемом данных отбрасываются. Пакеты же из потоков с малым объемом данных продолжают ставиться в очередь. Таким образом, возможны ситуации, когда число пакетов в очереди превышает заданный порог.

Очередь с приоритетами (Priority Queuing)

Очередь приоритетов позволяет администратору установить приоритеты для различных видов трафика. Пакеты могут быть классифицированы по различным критериям, включая тип протокола, и затем в одну из четырех выходных очередей (high, medium, normal, low).

Когда маршрутизатор готов передать пакет он просматривает очереди приоритетов с высшего до низшего в поиска пакета с наивысшим приоритетом. Этот пакет передается, затем маршрутизатор просматривает очередь вновь. Если при попытке поместить пакет в очередь обнаруживается, что очередь заполнена, пакет отбрасывается и, в случае IP, отправителю посылается уведомление (source quench).

Хотя очередь приоритетов можно установить на любом интерфейсе, создавалась она для работы с низкоскоростными, перегружаемыми трафиком последовательными интерфейсами.

Включение очереди приоритетов увеличивает нагрузку на маршрутизатор, которая вполне допустима для случая медленных интерфейсов, но может быть недопустимой, при установке этой очереди на интерфейсах быстрых (таких как Ethernet).

Существует четыре очереди приоритетов (в порядке убывания приоритета): high, medium, normal, low. Контрольным пакетам проверки работоспособности интерфейсов (keepalives) назначается наивысший приоритет автоматически, Приоритеты другого служебного трафика необходимо указывать явно. Трафик, приоритет которого явно не указан, попадает в очередь с приоритетом normal.

Произвольные очереди (Custom Queuing)

Включение очереди приоритетов может привести к тому, что пакеты, отнесенные к низкоприоритетным очередям не будут доставляться никогда (если трафик в высокоприоритетной очереди достаточно велик)

При использовании произвольных очередей есть возможность управлять долей полосы пропускания канала, выделяемой для определенных типов трафика. Если на интерфейсе включены произвольные очереди, то система поддерживает 17 выходных очередей на данном интерфейсе, 16 из которых можно конфигурировать.

Для очередей с номера с 1 по 16 маршрутизатор обходит очереди последовательно, доставляя пакеты из каждой очереди, прежде чем перейти к следующей. С каждой очередью связан счетчик байт, определяющий сколько байт данных система должна передать из данной очереди, прежде чем перейти к следующей. Система передает данные из очереди до тех пор, пока не превысит значение данного счетчика, или пока очередь не окажется пустой. После этого, система переходит к следующей очереди. Выделенная очереди полоса пропускания задается косвенным образом через величину счетчика байт и длину очереди.

Очередь номер 0 - системная, она опустошается прежде любой очереди с большим номером. В эту очередь помещаются высокоприоритетные пакеты (keepalives). Назначить в эту очередь какой-либо еще трафик невозможно.

При включенных очередях приоритетов или произвольных очередях на передачу пакета тратится больше времени, так как на анализ принадлежности к пакета к одной из очередей затрачиваются ресурсы маршрутизатора.

Опознание перегрузки (Random Early Detection)

Используется в скоростных сетях для предупреждения перегрузки каналов (в отличие от очередей, которые позволяют управлять трафиком через перегруженные каналы). После включения на интерфейсе начинает отбрасывать при перегрузке определенную при конфигурации долю пакетов.

Рекомендуется только для TCP/IP сетей, применение в сетях AppleTalk или Novell IPX может привести к <шторму> в сети.

Если на интерфейсе сконфигурирован и RSVP, то RED преимущественно отбрасывает пакеты из других потоков, а не из того, который зарезервирован по RSVP. Так же на выбор отбрасываемых пакетов влияет значение IP precedence, чем оно ниже, тем больше вероятность, что пакет будет отброшен при перегрузке интерфейса. Стоит отметить, что многие провайдеры по умолчанию сбрасывают значение IP precedence на абонентских пакетах до минимального уровня routine и для изменения данной политики требуется дополнительное согласование и наличие технических возможностей пропуска приоритетного трафика.