Компьютерные сети. Принц, техн, прот 1-303. Книга переведена на английский, испанский, китайский и португальский языки
Скачать 5.49 Mb.
|
Очереди и различные классы трафика Посмотрим, как можно применить знания о зависимости поведения очередей от коэффициента загрузки для реализации основной идеи методов QoS, а именно дифференцированного обслуживания классов трафика с различными требованиями к характеристикам производительности и надежности сети. Для простоты будем пока делить все потоки на два класса – чувствительный к задержкам (трафик реального времени, например голосовой) и эластичный, допускающий большие задержки, но чувствительный к потерям данных. Если обеспечить для чувствительного к задержкам трафика коэффициент загрузки каждого ресурса не более 0,2, то, очевидно, задержки в каждой очереди будут небольшими и, скорее всего, приемлемыми для многих типов приложений этого класса. Для эластичного трафика, слабо чувствительного к задержкам, можно допустить более высокий коэффициент загрузки, но не более 0,9. Чтобы пакеты этого класса не терялись, нужно предусмотреть для них буферную память, достаточную для хранения всех пакетов периода пульсации. Эффект от такого распределения загрузки ресурса иллюстрирует рис. 5.13. Задержки чувствительного к задержкам трафика равны ws, а задержки эластичного трафика – we. Чтобы добиться различных коэффициентов использования ресурсов для разных классов трафика, нужно в каждом коммутаторе для каждого ресурса поддерживать две разные очереди. Алгоритм выборки пакетов из очередей должен отдавать предпочтение очереди чувствительных к задержкам пакетов. Если бы все пакеты первой очереди обслуживались приоритетно, а пакеты второй очереди – только тогда, когда первая очередь пуста, то для трафика первой очереди трафик второй очереди фактически перестал бы существовать. Поэтому если отношение средней интенсивности приоритетного трафика X] к производительности ресурса р равно 0,2, то и коэффициент загрузки для него равен 0,2. Для эластичного трафика, пакеты которого всегда ждут обслуживания приоритетных пакетов, коэффициент загрузки подсчитывается по-другому. Если средняя интенсивность эластичного трафика равна Хг,т0 Для него ресурс будет загружен на (Xj + Хг)/р. Следовательно, если мы хотим, чтобы для эластичного трафика коэффициент загрузки составлял 0,9, то его интенсивность должна вычисляться из соотношения Х2/р = 0,7. Можно ввести более чем два класса обслуживания и стараться, чтобы каждый класс работал на своей части кривой задержек. Если такая задача решена, то можно обеспечить улучшение характеристик QoS за счет других методов, например, снижая пульсацию трафика. Осталось выяснить, каким образом обеспечить такие условия для разных классов трафика в каждом узле сети. Техника управления очередями Управление очередями используется для оптимизации работы устройства в периоды временных перегрузок, когда оно не справляется с передачей пакетов на выходной интерфейс в том темпе, в котором они поступают. Алгоритмы управления очередями не предотвращают перегрузок, а лишь некоторым «справедливым» образом в условиях дефицита перераспределяют ресурсы между различными потоками или классами трафика. Очередь FIFO В очереди FIFO(First In – First Out) в случае перегрузки все пакеты помещаются в одну общую очередь и выбираются из нее в том порядке, в котором поступили, то есть в соответствии с принципом «первый пришел – первый ушел». Во всех устройствах с коммутацией пакетов алгоритм FIFO используется по умолчанию. Достоинствами этого подхода являются простота реализации и отсутствие потребности в конфигурировании. Однако ему присущ и коренной недостаток – невозможность дифференцированной обработки пакетов различных потоков. Все пакеты стоят в общей очереди на равных основаниях. Одинаково обслуживаются как пакеты чувствительного к задержкам голосового трафика, так и нечувствительного к задержкам, но очень интенсивного трафика резервного копирования, длительные пульсации которого могут надолго задержать голосовой пакет. Приоритетное обслуживание Очереди с приоритетным обслуживанием очень популярны во многих областях вычислительной техники, в частности, в операционных системах, когда одним приложениям нужно отдать предпочтение перед другими при обработке их в мультипрограммной смеси. Применяются эти очереди и для преимущественной обработки некоторого класса трафика. Механизм приоритетного обслуживания основан на разделении всего сетевого трафика на небольшое количество классов и последующего назначения каждому классу некоторого числового признака – приоритета. Приоритет – это число, характеризующее степень привилегированности того или иного класса трафика при использовании того или иного сетевого ресурса. Чем выше приоритет, тем меньше времени будут проводить пакеты данного класса в очередях к данному ресурсу. Классификация трафика представляет собой отдельную задачу. Пакеты могут разбиваться на приоритетные классы на основании различных признаков: адрес назначения, адрес источника, идентификатор приложения, генерирующего этот трафик, а равно и любые другие комбинации признаков, которые содержатся в заголовках пакетов. Правила классификации пакетов отражают политику администрирования сети. Средства, выполняющие классификацию, – классификаторы – могут быть частью сетевых устройств. Масштабируемое решение – размещение механизмов классификации только в устройствах, расположенных на границе сети (например, в коммутаторах корпоративной сети, к которым подключаются компьютеры пользователей, или во входных маршрутизаторах сети поставщика услуг). Приоритеты могут также назначаться приложением на узле-отправителе. Назначенный приоритет заносится в специальное поле заголовка пакета, после чего им могут воспользоваться остальные сетевые устройства, обрабатывающие трафик после классифицирующего устройства. Если в сети отсутствует централизованная политика назначения приоритетов, то каждое сетевое устройство может не согласиться с приоритетом, назначенным данному пакету в другой точке сети. В этом случае оно перепишет значение приоритета в соответствии со своей локальной политикой. В сетевом устройстве, поддерживающем приоритетное обслуживание, имеется несколько очередей – по одной для каждого приоритетного класса. Пакет, поступивший в период перегрузки, помещается в очередь, соответствующую его приоритетному классуXVI. На рис. 5.14 приведен пример использования четырех приоритетных очередей с высоким, Рис. 5.14. Приоритетные очереди средним, нормальным и низким приоритетами. До тех пор пока из более приоритетной очереди не будут выбраны все имеющиеся в ней пакеты, устройство не переходит к обработке следующей, менее приоритетной очереди. Поэтому пакеты с низким приоритетом обрабатываются только тогда, когда пустеют все вышестоящие очереди. Обычно по умолчанию всем приоритетным очередям отводятся буферы одинакового размера, но многие устройства разрешают администратору назначать каждой очереди буфер индивидуального размера. В идеальном случае размер буфера определяется таким, чтобы его хватало с некоторым запасом для хранения очереди среднестатистической длины. Однако поскольку определить это значение сложно, администраторы сети часто руководствуются следующим соображением: чем выше значимость трафика для предприятия, чем больше его интенсивность и пульсации, тем больший размер буфера требуется этому трафику. В примере, приведенном на рис. 5.14, для трафика высшего и нормального приоритетов выбраны большие размеры буферов, а для остальных двух классов – меньшие. Мотивы принятого решения для высшего приоритета очевидны, а для трафика нормального приоритета, возможно, были приняты во внимание высокая интенсивность и значительный коэффициент пульсаций. Приоритетное обслуживание очередей обеспечивает высокое качество обслуживания для пакетов из самой приоритетной очереди. Если средняя интенсивность их поступления не превосходит пропускной способности устройства, то пакеты высшего приоритета всегда получают ту пропускную способность, которая им нужна. Время ожидания высокоприоритетных пакетов в очереди также минимально. Однако оно не нулевое – чем выше пульсации потока и его интенсивность, тем вероятнее возникновение очереди, образованной «своими» же высокоприоритетными пакетами. Трафик всех остальных приоритетных классов почти прозрачен для пакетов высшего приоритета. Слово «почти» относится к ситуации, когда высокоприоритетный пакет вынужден ждать завершения обслуживания низкоприоритетного пакета. Что же касается остальных приоритетных классов, то качество их обслуживания будет ниже, чем у пакетов самого высокого приоритета, причем уровень снижения может быть очень существенным. Если коэффициент нагрузки выходного интерфейса, определяемый только трафиком высшего приоритетного класса, приближается в какой-то период времени к единице, то трафик остальных классов на это время просто замораживается. Поэтому приоритетное обслуживание обычно применяется для чувствительного к задержкам класса трафика, имеющего небольшую интенсивность. При таких условиях обслуживание этого класса не слишком ущемляет обслуживание остального трафика. Например, голосовой трафик чувствителен к задержкам, но его интенсивность обычно не превышает 8-16 Кбит/с, так что при назначении ему высшего приоритета ущерб остальным классам трафика оказывается не очень значительным. Взвешенные очереди Механизм взвешенных очередей разработан для того, чтобы можно было предоставить всем классам трафика определенный минимум пропускной способности. Под весом данного класса понимается доля предоставляемой классу трафика пропускной способности от полной пропускной способности выходного интерфейса. При взвешенном обслуживании так же, как и при приоритетном, трафик делится на несколько классов, для каждого из которых ведется отдельная очередь пакетов. Но с каждой очередью связывается не приоритет, а доля пропускной способности ресурса, гарантируемая данному классу трафика при перегрузках этого ресурса. Для входного потока коммутатора таким ресурсом является коммутационный блок, а для выходного (после выполнения коммутации) – выходной интерфейс. Поясним данный алгоритм управления очередями на примере. Показанное на рис. 5.15 устройство поддерживает для пяти классов трафика пять очередей к выходному интерфейсу коммутатора. Этим очередям при перегрузках выделяется соответственно 10, 10, 30, 20 и 30 % пропускной способности выходного интерфейса. Достигается поставленная цель за счет того, что очереди обслуживаются последовательно и циклически, причем в каждом цикле обслуживания из каждой очереди выбирается такое число байтов, которое соответствует весу данной очереди. Так, если цикл просмотра очередей в рассматриваемом примере равен одной секунде, а скорость выходного интерфейса составляет 1000 Мбит/с, то при перегрузках в каждом цикле первой очереди уделяется 10 % времени, то есть 0,1 секунды, в течение которой выбирается 100 Мбит данных. Аналогично, из второй – тоже 100 Мбит, из третьей – 300 Мбит, из четвертой – 200 Мбит, из пятой – 300 Мбит. В результате каждому классу трафика достается гарантированный минимум пропускной способности, что во многих случаях является более желательным результатом, чем подавление низкоприоритетных классов высокоприоритетными. Так как данные выбираются из очереди пакетами, а не битами, то реальное распределение пропускной способности между классами трафика всегда немного отличается от планируемого. Так, в предыдущем примере вместо 10 % первый класс трафика мог бы получать при перегрузках 9 или 12 %. Чем больше время цикла, тем точнее соблюдаются требуемые пропорции между классами трафика, так как из каждой очереди выбирается большее число пакетов, при этом влияние размера каждого пакета усредняется. В то же время длительный цикл приводит к большим задержкам передачи пакетов. Так, при выбранном нами для примера цикле в одну секунду задержка может составить одну и более секунд – ведь арбитр возвращается к каждой очереди не чаще, чем раз в секунду, кроме того, за один раз из очереди могут быть выбраны не все пакеты. Поэтому при выборе времени цикла нужно обеспечить баланс между точностью соблюдения пропорций пропускной способности и стремлением к снижению задержки. Для нашего примера более сбалансированным выглядит время цикла в 1 6 секунды, или 1000 мкс. С одной стороны, такое время гарантирует более низкий уровень задержек, так как очереди просматриваются намного чаще, чем при секундном цикле. С другой стороны, этого времени достаточно, чтобы выбрать из каждой очереди в среднем по несколько пакетов (первой очереди в нашем примере будет отводиться 100 мкс, что достаточно, например, для передачи в выходной канал десяти пакетов Gigabit Ethernet). На уровень задержек пакетов, их вариации для некоторого класса трафика при взвешенном обслуживании в значительной степени влияет относительный коэффициент загрузки. В этом случае коэффициент подсчитывается как отношение интенсивности входного трафика некоторого класса к пропускной способности, выделенной этому классу в соответствии с его весом. Например, если в интерфейсе с пропускной способностью 1000 Мбит/с для некоторого потока выделено 10 %, то есть 100 Мбит/с, а средняя интенсивность потока, который попадает в эту очередь, равна 30 Мбит/с, то относительный коэффициент загрузки для этого потока составит 30/100 = 0,3. Качественное поведение очереди и, соответственно, задержек здесь выглядит примерно так же, как и для очереди FIFO – чем меньше коэффициент загрузки, тем меньше средняя длина очереди и тем меньше задержки. Еще одним вариантом взвешенного обслуживания является взвешенное справедливое обслуживание (Weighted Fair Queuing, WFQ). В случае подобного обслуживания пропускная способность ресурса делится между всеми потоками поровну, то есть «справедливо». Взвешенное обслуживание обеспечивает требуемые соотношения между интенсивностями трафика различных очередей только в периоды перегрузок, когда каждая очередь постоянно заполнена. Если же какая-нибудь из очередей пуста (то есть для трафика данного класса текущий период не является периодом перегрузки), то при просмотре очередей она игнорируется, а ее время обслуживания распределяется между остальными очередями в соответствии с их весом. Комбинированные алгоритмы обслуживания очередей Каждый из описанных подходов имеет свои достоинства и недостатки. Приоритетное обслуживание, обеспечивая минимальный уровень задержек для очереди наивысшего приоритета, не дает никаких гарантий в отношении средней пропускной способности для трафика очередей более низких приоритетов. Взвешенное обслуживание обеспечивает заданное распределение средней пропускной способности, но не гарантирует выполнение требований к задержкам. Существуют комбинированные алгоритмы обслуживания очередей. Например, в одном из алгоритмов подобного рода поддерживается одна приоритетная очередь, а остальные очереди обслуживаются в соответствии со взвешенным алгоритмом. Обычно приоритетная очередь используется для чувствительного к задержкам трафика, а остальные – для эластичного трафика нескольких классов. Каждый класс эластичного трафика получает некоторый минимум пропускной способности при перегрузках. Этот минимум вычисляется как процент от пропускной способности, оставшейся от приоритетного трафика. Очевидно, что нужно как-то ограничить приоритетный трафик, чтобы он не поглощал всю пропускную способность ресурса. Обычно для этого применяются механизмы кондиционирования трафика, которые рассматриваются далее. Механизмы кондиционирования трафика Как мы помним, основной идеей методов QoS является выделение определенной доли пропускной способности определенным потокам трафика, при этом величина полученной потоком доли должна быть достаточной для того, чтобы качество обслуживания потока было удовлетворительным. Очереди с различными алгоритмами обслуживания позволяют реализовать только одну часть этой идеи – они выделяют определенную долю пропускной способности некоторому потоку пакетов. Однако если интенсивность входного потока по какой-то причине в некоторые периоды времени будет превышать выделенную ему пропускную способность, например, в виде пульсаций, то требуемые параметры качества обслуживания этого потока (уровни задержки, доля потерянных пакетов и др.) не будут обеспечены. Во избежание этого рекомендуется применять механизмы |