Московский физико-технический институт
Опубликован: 07.08.2007 | Доступ: свободный | Студентов: 5447 / 1061 | Оценка: 4.28 / 3.93 | Длительность: 45:30:00
ISBN: 978-5-94774-706-5
Лекция 11:

Методы организации и обработки очередей

< Лекция 10 || Лекция 11: 12 || Лекция 12 >
Аннотация: Методы организации и обработки очередей, FIFO, PQ, CQ, WFQ, CBWFQ, LLQ, методы работы в условиях перегрузки. Алгоритм leaky bucket ("дырявое ведро"), алгоритм "маркерное ведро", Алгоритмы RED и WRED.

11.1. Очереди FIFO

Очереди FIFO (First-In-First-Out) используются обычно в скоростных интерфейсах (быстродействие > 2048 Кбит/c). Здесь первый пришедший пакет первым покидает очередь. Порядок следования пакетов при этом алгоритме не изменяется. Приоритетное обслуживание в этом варианте также не может быть осуществлено. Когда очередь заполнена, все последующие пакеты будут отбрасываться до тех пор, пока из очереди не будет изъят хотя бы один пакет.

11.2. Приоритетное обслуживание очередей (PQ)

Приоритетное обслуживание ( PQ ) является эффективной и прямой формой управления перегрузкой. PQ позволяет сетевому администратору выделить до четырех очередей в сетевом трафике. Предусмотрены очереди высокого, среднего, нормального и низкого приоритета. Маршрутизатор обрабатывает очереди строго в соответствии с их приоритетом. Пакеты из очереди с высоким приоритетом обрабатываются, пока в очереди не останется ни одного пакета, после этого начинается обработка очереди со средним приоритетом, параллельно осуществляется контроль появления пакетов в очереди с высоким приоритетом. Пакеты из очереди с низким приоритетом обрабатываются лишь тогда, когда остальные очереди пусты. Низко приоритетный трафик при определенных обстоятельствах может быть полностью блокирован, а пакеты потеряны. Обычно PQ используется, когда приложения, критичные к задержкам, сталкиваются с проблемами. Если высокоприоритетный трафик имеет высокую интенсивность, высока вероятность того, что остальные составляющие трафика будут блокированы. Пакеты, не классифицированные PQ, автоматически относятся к очереди с нормальным приоритетом. Системная очередь имеет приоритет выше высокого. По умолчанию очереди разных приоритетов имеют следующие размеры (CISCO): Таблица 11.1.

Таблица 11.1.
Приоритет Длина очереди
Высокий 20 пакетов
Средний 40 пакетов
Нормальный 60 пакетов
Низкий 80 пакетов

11.3. Обычное обслуживание очередей (СQ)

Чтобы избежать жесткой регламентации системы обслуживания очередей PQ, системный администратор может выбрать стратегию CQ (Custom Queuing — обычное обслуживание очередей). CQ позволяет сетевому администратору реализовать приоритетное обслуживание трафика без побочных эффектов, связанных с блокировкой низкоприоритетных потоков. С помощью CQ можно сформировать 16 очередей трафика. Каждая из очередей обслуживается в карусельном режиме (round-robin). По умолчанию CQ обслуживает 1500 байт за цикл. Однако CQ не может фрагментировать пакеты. Это означает, что если CQ обрабатывает пакет длиной 1000 байт, следующий 1500-байтный пакет будет обработан вне очереди. При этом может возникнуть ситуация, когда для коротких очередей возникает тайм-аут. CQ может конфигурироваться так же, как и PQ. Процесс классификации трафика приписывает пакеты одной из 16 конфигурируемых очередей, работающих в режиме "дырявого ведра". Существует очередь с номером 0 (системная очередь), которая зарезервирована для пакетов управления сетью и имеет наивысший приоритет. При больших потоках возможна потеря пакетов из-за переполнения очередей. Длина очереди может быть задана в пределах от 0 до 32767 (20 — значение по умолчанию).

11.4. Справедливые очереди (WFQ)

Стратегия справедливых (взвешенных) очередей WFQ (Weighted Fair Queuing) используется по умолчанию для интерфейсов низкого быстродействия (другим названием этого алгоритма является SFQ — Stochastic Fairness Queuing). WFQ делит трафик на несколько потоков, используя в качестве параметров (для IP-протокола): IP-адреса и порты получателя и отправителя, а также поле IP-заголовка ToS. Значение ToS служит для квалификации (части выделяемой полосы) потока. Для каждого из потоков формируется своя очередь. Максимально возможное число очередей равно 256. Очереди обслуживаются в соответствии с карусельным принципом (round-robin). Более высокий приоритет имеют потоки с меньшей полосой, например telnet. По умолчанию каждая из очередей имеет емкость 64 пакета (но допускается значение и <4096 пакетов).

В сетях существует 8 уровней приоритета. Следует иметь в виду, что WFQ не поддерживается в случае туннелирования или шифрования. Субпоток с низким весом получает более высокий уровень обслуживания, чем с высоким. Не реализуется WFQ и в сетях АТМ. Когда задействованы биты ToS, WFQ реализует приоритетное обслуживание пакетов согласно значению этого кода. Весовой фактор обратно пропорционален уровню приоритета.

11.5. Справедливые очереди, базирующиеся на классах (CBWFQ)

Дальнейшим развитием технологии WFQ является формирование классов потоков, задаваемых пользователем. Алгоритм построения очередей, базирующихся на классах, называется CBWFQ (Class-Based Weighted Fair Queuing). Алгоритм CBWFQ предоставляет механизм управления перегрузкой. Параметры, которые характеризуют класс, те же, что и в случае WFQ (только вместо ToS используется приоритет). В отличие от WFQ здесь можно в широких пределах перераспределять полосу пропускания между потоками. Для выделения класса могут привлекаться ACL (Access Control List) или даже номер входного интерфейса. Каждому классу ставится в соответствие очередь. В отличие от RSVP данный алгоритм гарантирует полосу лишь в условиях перегрузки. Всего может быть определено 64 класса. Нераспределенная полоса может использоваться потоками согласно их приоритетам. Если используется резервирование CBWFQ и RSVP, то возможны конфликты, так как IOS маршрутизатора не проверяет баланса зарезервированной полосы разными протоколами.

11.6. Очереди с малой задержкой (LLQ)

В некоторых случаях, например в случае VoIP, более важно обеспечить малую задержку, а не полосу пропускания. Для таких задач разработан алгоритм LLQ (Low Latency Queuing), который является модификацией CBWFQ. В этом алгоритме пакеты всех приоритетов, кроме наивысшего, вынуждены ждать, пока очередь более высокого приоритета будет опустошена (см. PQ ). Разброс задержки в высокоприоритетном потоке может быть связан только с ожиданием завершения передачи пакета низкого приоритета, начавшейся до прихода приоритетного кадра. Такой разброс определяется диапазоном длин кадров (MTU).

11.7. Методы работы в условиях перегрузки

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

Различные варианты нагрузочной характеристики сети

Рис. 11.1. Различные варианты нагрузочной характеристики сети

Идеальная (с точки зрения потребителя) нагрузочная характеристика сети сначала описывается прямой линией, то есть числа посланных и доставленных пакетов равны или почти равны. При достижении максимума пропускной способности сети число пакетов, доставляемых в единицу времени, становится постоянным, в то время как число посланных пакетов продолжает расти. К сожалению, такого в реальной жизни не происходит. Желательной нагрузочной характеристикой является такая, которая при малых и максимальных загрузках ведет себя как идеальная, а при переходных скоростях имеет плавный характер и доставляет несколько меньший процент пакетов, чем в идеале. Реальная нагрузочная характеристика (например, для Ethernet) много хуже даже желательного варианта. Сначала по мере роста загрузки начинает расти процент потери пакетов. Далее при входных потоках, превышающих некоторый порог, число доставляемых пакетов начинает падать при росте числа посланных пакетов, а при дальнейшем нарастании загрузки число доставляемых пакетов может стать равным нулю ("коллапс"). В версиях Ethernet, где столкновения исключены (в сети используются только переключатели и маршрутизаторы), ситуация более благоприятна.

Отчасти это может быть связано с недостатком памяти для входных буферов, по этой причине некоторое увеличение памяти может помочь. Но следует помнить, что всякое лекарство хорошо в меру. Еще в 1987 году Нагле (Nagle) обнаружил, что если маршрутизатор имеет даже беспредельную память, эффект перегрузки может оказаться еще более тяжелым. Это сопряжено со временем, в течение которого пакеты ожидают обработки. Если время ожидания в очереди превышает длительность тайм-аута, появятся дубликаты пакетов, что понижает эффективность системы. Причиной перегрузки может быть медленный процессор или недостаточная пропускная способность какого-то участка сети. Простая замена процессора или интерфейса на более быстродействующий не всегда решает проблему — чаще переносит "узкое место" в другую часть системы. Перегрузка, как правило, включает механизмы, усиливающие ее негативное воздействие. Так, переполнение буфера приводит к потере пакетов, которые позднее должны будут быть переданы повторно (возможно, даже несколько раз). Процессор передающей стороны получает дополнительную паразитную загрузку. Все это указывает на то, что контроль перегрузки является крайне важным процессом.

Перегрузка, в сущности, связана с временной или стационарной несогласованностью характеристик каких-то частей системы.

Следует делать различие между управлением потоком и контролем перегрузки. Под контролем потока подразумевается балансировка потока отправителя и возможностей приема и обработки получателя. Этот вид контроля предполагает наличие обратной связи между получателем и отправителем. В таком процессе участвуют, как правило, только два партнера. Перегрузка же — более общее явление, относящееся к сети в целом или к какой-то ее части. Например, 10 ЭВМ хотят передать одновременно какие-то файлы другим 10 ЭВМ. Конфликта потоков здесь нет, каждая из ЭВМ способна переработать поступающие данные, но сеть не может пропустить поток, генерируемый 10 сетевыми интерфейсами одновременно. Часто эти явления не так просто разделить. Отправитель может получить сообщение ICMP (quench – в случае стека протоколов TCP/IP) при перегрузке получателя или при перегрузке какого-то сетевого устройства.

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

  • процент пакетов, отбрасываемых из-за отсутствия свободного буферного пространства;
  • средняя длина очереди (которая влияет на время доставки);
  • процент пакетов, пересылаемых повторно;
  • среднее время задержки пакета и некоторые другие величины.

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

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

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

Преодоление перегрузки может быть осуществлено понижением нагрузки или добавлением ресурсов приемнику.

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

Одной из причин перегрузки часто являются импульсные загрузки сегмента сети или сетевого устройства. По этой причине любые меры (например, pipelining — конвейер), которые могут выравнивать поток пакетов, безусловно, улучшат ситуацию (например, traffic shaping в сетях ATM). В TCP же с его окнами импульсные загрузки предопределены.

11.8. Алгоритм leaky bucket ("дырявое ведро")

Для систем без обратной связи решение проблемы выравнивания скорости передачи данных может быть решено с помощью алгоритма leaky bucket ( "дырявое ведро" ). Суть этого алгоритма заключается в том, что на пути потока устанавливается буфер, выходной поток которого постоянен и согласован с возможностью приемника. Если буфер переполняется, пакеты теряются.

Потеря пакетов — вещь малоприятная, но это блокирует процессы, которые могут привести к коллапсу сегмента или всей сети.

Там, где потеря пакетов нежелательна, можно применить более гибкий алгоритм.

11.9. Алгоритм "маркерное ведро"

Алгоритм token bucket (маркерное ведро) предполагает наличие в буферном устройстве (или программе) некоторого количества маркеров. При поступлении на вход буфера пакетов маркеры используются для их транспортировки на выход. Дальнейшая передача данных на выход зависит от генерации новых маркеров. Поступающие извне пакеты тем временем накапливаются в буфере. Таким образом, полной гарантии отсутствия потерь мы не имеем и здесь. Но алгоритм token bucket позволяет передавать на выход "плотные" группы пакетов ограниченной численности (по числу маркеров), снижая в некоторых случаях вероятность потери. Если буферное устройство "смонтировано" внутри ЭВМ отправителя, потерь можно избежать вовсе, блокируя передачу при заполнении буфера. Как в одном, так и в другом алгоритме мерой передаваемой информации может быть не пакет, а n -байт (где n — некоторое оговоренное заранее число).

< Лекция 10 || Лекция 11: 12 || Лекция 12 >
Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?

Нияз Сабиров
Нияз Сабиров

Здравствуйте. А уточните, пожалуйста, по какой причине стоимость изменилась? Была стоимость в 1 рубль, стала в 9900 рублей.