Механизмы очередей используются в любом сетевом устройстве, где применяется коммутация пакетов — маршрутизаторе, коммутаторе локальной или глобальной сети, конечном узле.
Необходимость в очереди возникает в периоды временных перегрузок, когда сетевое устройство не успевает передавать поступающие пакеты на выходной интерфейс. Если причиной перегрузки является процессорный блок сетевого устройства, то необработанные пакеты временно помещаются во входную очередь, т. е. в очередь на входном интерфейсе. В случае, когда причина перегрузки заключается в ограниченной скорости выходного интерфейса (а она не может превышать скорость поддерживаемого протокола), то пакеты временно хранятся в выходной очереди.
Оценка возможной длины очередей в сетевых устройствах позволила бы определить параметры качества обслуживания при известных характеристиках трафика. Однако изменение очередей представляет собой вероятностный процесс, на который влияет множество факторов, особенно при сложных алгоритмах обработки очередей в соответствии с заданными приоритетами или путем взвешенного обслуживания разных потоков. Анализом очередей занимается специальная область прикладной математики — теория массового обслуживания (queuing theory), однако получить с ее помощью количественные оценки можно только для очень простых ситуаций, не соответствующих реальным условиям работы сетевых устройств. Поэтому служба QoS использует для поддержания гарантированного уровня качества обслуживания достаточно сложную модель, решающую задачу комплексно. Это делается с помощью следующих методов:
-
предварительное резервирование пропускной способности для трафика с известными параметрами (например, для средних значений интенсивности и величины блока пакетов);
-
принудительное профилирование входного трафика для удержания коэффициента нагрузки устройства на нужном уровне;
-
использование сложных алгоритмов управления очередями.
АЛГОРИТМЫ ОБРАБОТКИ ОЧЕРЕДЕЙ
Чаще всего в маршрутизаторах и коммутаторах применяются следующие алгоритмы обработки очередей:
-
традиционный алгоритм FIFO;
-
приоритетное обслуживание (Priority Queuing), которое также называют «подавляющим»;
-
настраиваемые очереди (Custom Queuing);
-
взвешенное справедливое обслуживание (Weighted Fair Queuing, WFQ).
Каждый алгоритм разрабатывался для решения определённых задач и поэтому специфическим образом воздействует на качество обслуживания различных типов трафика в сети. Возможно комбинированное применение этих алгоритмов.
Принцип алгоритма FIFO состоит в следующем. В случае перегрузки пакеты помещаются в очередь, а если перегрузка устраняется или уменьшается, пакеты передаются на выход в том порядке, в котором поступили («первым пришел — первым ушел», First In — First Out). Этот алгоритм обработки очередей по умолчанию применяется во всех устройствах с коммутацией пакетов. Он отличается простотой реализации и отсутствием потребности в конфигурировании, однако имеет принципиальный недостаток — дифференцированная обработка пакетов различных потоков невозможна. Очереди FIFO необходимы для нормальной работы сетевых устройств, но они не справляются с поддержкой дифференцированного качества обслуживания.
ПРИОРИТЕТНОЕ ОБСЛУЖИВАНИЕ
Механизм приоритетной обработки трафика предусматривает разделение всего сетевого трафика на небольшое количество классов с назначением каждому классу некоторого числового признака — приоритета. Разделение на классы (классификация) может производиться разными способами.
Классификация трафика представляет собой отдельную задачу. Пакеты могут разбиваться на классы по приоритетам в соответствии с типом сетевого протокола, например, IP, IPX или DECnet (заметим, что такой способ подходит только для устройств, работающих на втором уровне), на основании адресов получателя и отправителя, номера порта TCP/UDP и любых других комбинаций признаков, содержащихся в пакетах. Правила классификации пакетов на приоритетные классы являются составной частью политики управления сетью.
Блок классификации трафика может размещаться как в самом устройстве (см. Рисунок 1), так и вне его. Размещение функций классификации трафика в одном или нескольких устройствах, расположенных на границе сети (например, в коммутаторах корпоративной сети, к которым подключаются компьютеры пользователей, или во входных маршрутизаторах сети провайдера), позволяет получить более масштабируемое решение.
Этот вариант классификации требует наличия в пакете специального поля, куда может заноситься заданное значение приоритета, чтобы им могли воспользоваться все последующие сетевые устройства для обработки трафика на пути его следования. Такое поле имеется в заголовке многих протоколов. Так, в пакете IP для этой цели предусмотрено трехразрядное подполе IP Precedence
в поле Type Of Service (TOS). Когда специального поля приоритета не предусмотрено, новый заголовок с таким полем вводится при помощи специально разработанного дополнительного протокола. В частности, для протокола Ethernet (и других протоколов семейства 802) были приняты спецификации IEEE 802.1Q/p, которые определяют дополнительное трехразрядное поле приоритета.
Приоритеты могут назначаться не только коммутатором или маршрутизатором, но и приложением на узле-отправителе. Необходимо также учитывать, что каждое сетевое устройство может не согласиться с приоритетом, назначенным данному пакету в другой точке сети. В этом случае оно изменяет значение приоритета в соответствии с локальной политикой, хранящейся непосредственно на данном устройстве. Во избежание таких прецедентов следует использовать централизованные способы применения политики в сети, дабы обеспечить скоординированное функционирование устройств.
Независимо от выбранного способа классификации трафика, в сетевом устройстве имеется несколько очередей, в соответствии с количеством классов. Поступивший в период перегрузки пакет помещается в очередь согласно его приоритету. На Рисунке 1 приведен пример использования четырех приоритетных очередей: с высоким, средним, нормальным и низким приоритетом. Приоритеты очередей имеют абсолютный характер предпочтения при обработке: пока из более приоритетной очереди не будут выбраны все пакеты, устройство не переходит к обработке следующей, менее приоритетной. Поэтому пакеты со средним приоритетом всегда обрабатываются только тогда, когда очередь пакетов с высоким приоритетом пуста, а пакеты с низким приоритетом — только когда пусты все вышестоящие очереди.
Конечный размер буферной памяти сетевого устройства предполагает некоторую предельную длину каждой очереди. Обычно по умолчанию всем приоритетным очередям отводятся буферы одинакового размера, но многие устройства разрешают администратору выделять каждой очереди индивидуальный буфер. Его максимальная длина определяет предельное количество пакетов, которые могут храниться в очереди данного приоритета. Пакет, поступивший в то время, когда буфер заполнен, просто отбрасывается.
Приоритетное обслуживание очередей обеспечивает высокое качество сервиса для пакетов из самой приоритетной очереди. Если средняя интенсивность их поступления в устройство не превосходит пропускной способности выходного интерфейса (и производительности внутренних блоков самого устройства, участвующих в продвижении пакетов), то пакеты с наивысшим приоритетом всегда получают ту пропускную способность, которая им необходима. Что же касается остальных классов приоритетов, то качество их обслуживания ниже, чем у пакетов с наивысшим приоритетом, причем предсказать уровень снижения затруднительно. Оно может быть довольно существенным, если высокоприоритетные данные передаются с большой интенсивностью.
Поэтому приоритетное обслуживание обычно применяется в том случае, когда в сети есть чувствительный к задержкам трафик, но его интенсивность невелика, так что его наличие не слишком ущемляет остальной трафик. Например, голосовой трафик чувствителен к задержкам, но его интенсивность обычно не превышает 8-16 Кбит/с, и, таким образом, при назначении ему наивысшего приоритета остальные классы трафика не пострадают. Однако в сети могут наблюдаться и другие ситуации. В частности, видеотрафик тоже требует первоочередного обслуживания, но имеет гораздо более высокую интенсивность. Для таких случаев разработаны алгоритмы управления очередями, дающие низкоприоритетному трафику некоторые гарантии даже в периоды повышения интенсивности высокоприоритетного трафика.
ВЗВЕШЕННЫЕ НАСТРАИВАЕМЫЕ ОЧЕРЕДИ
Алгоритм взвешенных очередей (Weighted Queuing) разработан для того, чтобы для всех классов трафика можно было предоставить определенный минимум пропускной способности или удовлетворить требования к задержкам. Под весом какого-либо класса понимается доля выделяемой данному виду трафика пропускной способности выходного интерфейса. Алгоритм, в котором вес классов трафика может назначаться администратором, называется «настраиваемой очередью» (Custom Queuing). Именно его мы и будем рассматривать. В случае, когда веса назначаются автоматически, на основании некоторой адаптивной стратегии, реализуется так называемый алгоритм «взвешенного справедливого обслуживания» (Weighted Fair Queuing, WFQ), ему будет посвящен следующий раздел.
Как при взвешенном, так и при приоритетном обслуживании, трафик делится на несколько классов, и для каждого вводится отдельная очередь пакетов. С каждой очередью связывается доля пропускной способности выходного интерфейса, гарантируемая данному классу трафика при перегрузках этого интерфейса. В примере, приведенном на Рисунке 2, устройство поддерживает пять очередей для пяти классов трафика. Этим очередям соответствует 10, 10, 30, 20 и 30% пропускной способности выходного интерфейса при перегрузках.
Поставленная цель достигается благодаря тому, что очереди обслуживаются последовательно и циклически, и в каждом цикле из каждой очереди забирается такое число байт, которое соответствует весу очереди. Например, если цикл просмотра очередей в рассматриваемом примере равен 1 сек, а скорость выходного интерфейса составляет 100 Мбит/с, то при перегрузках в каждом цикле из первой очереди забирается 10 Мбит данных, из второй тоже 10 Мбит, из третьей — 30 Мбит, из четвертой — 20 Мбит, из пятой —
30 Мбит. В результате каждому классу трафика достается гарантированный минимум пропускной способности, что во многих случаях является более желательным результатом, чем подавление низкоприоритетных классов высокоприоритетным.
Точные значения параметров QoS для алгоритма взвешенного обслуживания предсказать трудно. Они существенным образом зависят от динамически изменяющихся параметров нагрузки сетевого устройства — интенсивности пакетов всех классов и вариаций промежутков времени между прибытием пакетов. В общем случае взвешенное обслуживание приводит к большим задержкам и их отклонениям, чем первоочередное обслуживание для самого приоритетного класса, даже при значительном превышении выделенной пропускной способности над интенсивностью входного потока данного класса. Но для более низких приоритетных классов взвешенное справедливое обслуживание часто оказывается более приемлемым с точки зрения создания благоприятных условий обслуживания всех классов трафика.
ВЗВЕШЕННОЕ СПРАВЕДЛИВОЕ ОБСЛУЖИВАНИЕ
Взвешенное справедливое обслуживание (Weighted Fair Queuing, WFQ) — это комбинированный механизм обслуживания очередей, сочетающий приоритетное обслуживание со взвешенным. Производители сетевого оборудования предлагают многочисленные собственные реализации WFQ, отличающиеся способом назначения весов и поддержкой различных режимов работы, поэтому в каждом конкретном случае необходимо внимательно изучить все детали поддерживаемого WFQ.
Наиболее распространенная схема предусматривает существование одной особой очереди, которая обслуживается по приоритетной схеме — всегда в первую очередь и до тех пор, пока все заявки из неe не будут исполнены. Эта очередь предназначена для системных сообщений, сообщений управления сетью и, возможно, пакетов наиболее критических и требовательных приложений. Во всяком случае, предполагается, что её трафик имеет невысокую интенсивность, поэтому значительная часть пропускной способности выходного интерфейса остается другим классам трафика.
Остальные очереди устройство просматривает последовательно, в соответствии с алгоритмом взвешенного обслуживания (см. Рисунок 3). Администратор может задать вес для каждого класса трафика аналогично тому, как это делается в случае взвешенного обслуживания. Вариант работы по умолчанию предусматривает для всех остальных классов трафика равные доли пропускной способности выходного интерфейса (за вычетом оставшейся от приоритетного трафика).
Производители оборудования дополняют механизм WFQ некоторыми полезными режимами. Например, в маршрутизаторах компании Cisco предусмотрено несколько разновидностей WFQ:
-
основанный на потоках (Flow-based) режим WFQ (FWFQ);
-
основанный на классах (Class-based) режим WFQ (CWFQ).
Для варианта FWFQ на базе потоков в маршрутизаторе создается столько очередей, сколько потоков существует в трафике. Под потоком в данном случае понимаются пакеты с определенными значениями IP-адресов отправителя и получателя и/или портов TCP/UDP отправителя и получателя (типа протоколов транспортного уровня), а также одинаковыми значениями поля ToS. Иначе говоря, по-
ток — это последовательность пакетов от одного приложения с определенными параметрами качества обслуживания, заданными в поле ToS.
Каждому потоку соответствует отдельная выходная очередь, для которой в периоды перегрузок механизм WFQ выделяет равные доли пропускной способности порта. Поэтому иногда алгоритм FWFQ называют FQ (Fair Queuing) — справедливое обслуживание.
Вариант CWFQ на базе классов в маршрутизаторах Cisco имеет два подварианта:
-
классы трафика определяются на основании так называемых групп QoS, соответствующих набору признаков из списка управления доступом (ACL), например, номеру входного интерфейса или номеру хоста или подсети;
-
классы трафика определяются значениями полей ToS.
Для варианта групп QoS администратор задает веса пропускной способности, выделяемой каждой группе QoS, а также (опционально) максимальную длину очереди. Пакеты, не отнесенные ни к одной из групп, включаются в группу 0. При назначении весов WFQ нужно принимать во внимание следующее:
-
группе QoS с номером 0 автоматически назначается 1% имеющейся пропускной способности;
-
общий вес всех остальных групп не может быть более 99%;
-
оставшаяся после назначения весов пропускная способность выделяется группе 0.
В варианте классификации на основании значении ToS предусматриваются веса классов по умолчанию. Они вступают в силу, если администратор явно не задал их с помощью команды weight. Для классификации используется два младших бита трехразрядного подполя IP Precedence из поля ToS, так что в этом варианте имеется всего четыре класса трафика. По умолчанию, классу 0 выделяется 10% выходной пропускной способности, классу 1 — 20%, классу 2 — 30% и классу 3 — 40%. Чем выше класс, тем важнее трафик, поэтому выделение большей доли пропускной способности создает для него более привилегированные условия продвижения.
Во многих сетевых устройствах механизм WFQ является одним из основных для поддержки качества обслуживания, в том числе и в случае различных протоколов, использующих методы сигнализации для координированного поведения всех устройств сети, например, при применении протокола RSVP.
ОБЩАЯ ХАРАКТЕРИСТИКА ПРОТОКОЛОВ QOS IP
Протоколы и механизмы поддержки качества обслуживания в сетях IP делятся на две категории в зависимости от уровня гарантий предоставляемого сервиса:
-
протоколы поддержки «твердого» качества сервиса гарантируют обслуживание потоков данных путем резервирования ресурсов;
-
протоколы поддержки «мягкого» качества сервиса не могут дать количественных гарантий обслуживания, но за счет приоритетной и взвешенной обработки очередей выполняют предпочтительное распределение ресурсов сети между классами трафика.
Протоколы первой категории разрабатываются рабочей группой IETF по интегрированным сервисам (Integrated Services Working Group, IntServ). Базовая модель такого сервиса предполагает интегрированное взаимодействие всех устройств сети по обеспечению требуемого качества обслуживания вдоль всего пути потока.
IETF занимается разработкой IntServ достаточно давно — в рамках этого направления проблема обеспечения QoS в сетях TCP/IP впервые стала решаться систематически. Однако ввиду значительной сложности поддержки интегрированных сервисов в масштабах такой сети, как Internet, свое развитие получило и другое направление, которое в данный момент ведет рабочая группа по дифференцированным сервисам (Differentiated Services Working Group, DiffServ). Она специализируется на протоколах второй категории, которые не обеспечивают «настоящего» гарантированного качества обслуживания, но зато гораздо проще в реализации.
Сервисы DiffServ опираются на ту же обобщенную модель QoS, что и сервисы IntServ, однако для них резервирование ресурсов сетевых устройств не предусматривается. Вместо этого они сигнализируют о потребностях потока в обслуживании путем включения необходимой информации в каждый отдельный пакет — поле IP Precedence несет код, который интерпретируется каждым маршрутизатором сети для приоритетного или взвешенного обслуживания данного потока по отношению к другим.
Дифференцированные сервисы применяются главным образом на магистрали сетей, поскольку по магистрали обычно проходит столь большое количество микропотоков различных приложений, что гарантированная поддержка каждого из них в соответствии с принципами интегрированного обслуживания требует чрезмерных ресурсов маршрутизаторов ядра сети. Применение дифференцированных сервисов гораздо экономичнее, так как они работают с агрегированными потоками, состоящими из микропотоков со схожими требованиями к QoS.
Кроме протоколов категорий IntServ и DiffServ, в сетях IP применяется еще несколько протоколов, связанных с поддержкой качества обслуживания. Прежде всего, это протокол NPLS, который позволяет направлять поток по маршруту с необходимым качеством обслуживания.
К средствам поддержки QoS в сетях IP относятся также работающие на отдельных узлах механизмы обслуживания и формирования очередей, такие как WFQ и CQ. Они функционируют на маршрутизаторах как необходимые элементы реализации интегрированных и дифференцированных сервисов. Однако администратор сети может их использовать и для улучшения качества обслуживания на тех маршрутизаторах, где возникают заторы трафика, существенно влияющие на работу сети в целом.
ДИФФЕРЕНЦИРОВАННОЕ ОБСЛУЖИВАНИЕ DIFFSERV
Дифференцированные сервисы представляют собой весьма простой и «грубый» метод классификации требований к качеству обслуживания небольшого числа агрегированных потоков сети. Основная идея, положенная в основу этой группы сервисов QoS, состоит в том, что все маршрутизаторы сети должны единообразно понимать требования к качеству обслуживания, закодированные в пяти битах поля ToS протокола IPv4.
Дифференцированные сервисы не прибегают к резервированию ресурсов маршрутизаторов, поэтому они не могут дать гарантий на предоставляемое качество обслуживания, реализуя только «мягкую» поддержку QoS. Каждый маршрутизатор работает независимо от остальных и старается обеспечить предпочтительное качество обслуживания потоков в соответствии с правилами пошагового поведения (Per-Hop Behavior, PHB), которые определяются отдельными стандартами IETF. Выделение всего пяти бит для кодирования требований к качеству обслуживания означает, что в сети может существовать не более 32 агрегированных потоков, отличающихся предоставляемым качеством обслуживания.
Хотя маркировкой пакетов может заниматься любой маршрутизатор сети, модель дифференцированных сервисов в качестве основного варианта предусматривает классификацию пакетов во входной точке сети, поддерживающей протокол DiffServ и находящейся под административным контролем одной организации. Такая сеть называется доменом DiffServ. При выходе пакетов за пределы домена DiffServ маркировка снимается, и другой домен может назначить ее заново.
На сегодняшний день разработаны два стандарта пошагового продвижения пакетов PHB, которые представляют два различных сервиса:
-
«быстрое продвижение» (Expedited Forwarding, EF) характеризуется одним значением кода (10111) и представляет собой высший уровень качества обслуживания, минимизирующий задержки и вариации задержек. Любой трафик, интенсивность которого выходит за пределы профиля, отбрасывается;
-
«гарантированная доставка» (Assured Forwarding, AF) предусматривает четыре класса трафика и три уровня отбрасывания пакетов в каждом классе, т.е. всего 12 различных типов трафиков. Каждому классу трафика выделяется определенный минимум пропускной способности и объем буфера для хранения его очереди. Трафик, не соответствующий профилю, доставляется с меньшей степенью вероятности, чем трафик, удовлетворяющий условию профиля. Это означает, что он может быть понижен в качестве, но не обязательно отброшен.
Сервис EF описан в спецификации RFC 2598 «An Expedited Forwarding PHB», которая появилась летом 1999 г. Основное назначение сервиса EF — предоставление качества обслуживания на уровне выделенных каналов, поэтому он называется также сервисом «виртуальных выделенных каналов». Кроме того, он известен как премиальный (Premium Service), чем подчеркивается его способность предоставлять наивысшее качество обслуживания, возможное в сетях IP с дифференцированным
обслуживанием.
Сервис АF описан в спецификации RFC 2597 «Assured Forwarding PHB Group», опубликованной в июне 1999 г. Четыре его группы ориентированы на гарантированную доставку, но без минимизации уровня задержек пакетов, как это оговорено для более качественного сервиса EF. Гарантированная доставка выполняется в том случае, когда входная скорость трафика не превышает отведенной данному классу минимальной пропускной способности. Классы сервиса AF хорошо сочетаются с одним классом сервиса EF — трафик EF может обслуживаться по приоритетной схеме, но с ограничением интенсивности входного потока. Оставшаяся пропускная способность распределяется между классами трафика AF в соответствии с алгоритмом взвешенного обслуживания, который обеспечивает необходимую пропускную способность, но не минимизацию задержек.
Простота приоритезации трафика с помощью DiffServ определяет его гибкость и мощь.
Дмитрий Федодеев — инженер департамента системной интеграции компании «Инжиниринг+Электроникс». С ним можно связаться по адресу: Fedodeev_D@epulse.ru.