Взвешенное справедливое обслуживание (Weighted Fair Queuing, WFQ) - это комбинированный алгоритм, объединяющий достоинства алгоритмов приоритетного и взвешенного обслуживания очередей. Существует большое количество разных реализаций алгоритма WFQ, которые отличаются способом назначения весов и правилами поддержки разных режимов работы сетевого оборудования.

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

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

Рисунок 5.4 - Взвешенное справедливое обслуживание очередей в пакетной сети 5.5. Механизмы профилирования и формирования трафика Служба QoS для профилирования и формирования трафика использует нижеследующие алгоритмы.

5.5.1. Алгоритм «дырявого ведра» Алгоритм «дырявого ведра» (leaky bucket) разработан для осуществления профилирования пульсирующего трафика. Алгоритм позволяет обеспечить управление потоками данных, составляющих текущий трафик, так, чтобы соблюсти условия обслуживания, отражённые в SLA, относительно значений средней скорости и пульсаций для различных потоков в составе трафика.

Функционирование алгоритма обычно поясняют, прибегая для наглядности к рассмотрению некоего виртуального ведра, в которое сверху «втекают» пакетные данные. При этом, данные из ведра «вы текают» через дырку, сделанную снизу ведра. Понятно, что когда данные «втекают» во внутрь ведра быстрее, чем «вытекают» из него, то такое ведро, в конце концов, переполнится. То есть возникнет ситуация, когда поступающие данные не смогут размещаться в ведре и должны будут «выливаться» из ведра, т.е. отбрасываться и теряться. И такая ситуация «отбрасывания» данных будет сохраняться до тех пор, пока не появится свободное место для их размещения в ведре. Предположим, что человеку, пытающемуся управлять потоками, неподвластны источники потоков (т.е., он не имеет возможности изменять параметры «втекающих» в ведро потоков). Тогда единственно возможными параметрами, которыми в такой ситуации можно управлять, являются объём ведра и диаметр отверстия в ведре, изменениями которых можно добиться желаемой величины интенсивности «вытекания» данных из ведра. Учитывая вышеизложенное, для управления потоком данных в соответствии с алгоритмом «дырявого ведра» используют два параметра: среднюю скорость «вытекания» Ус, т.е. среднее количество пакетов в секунду, которые «вытекают» через дырку в ведре и далее передаются в сеть; глубину ведра 5, т.е. количество пакетов, которым разрешено накапливаться в ведре. Кроме того, в процессе управления рассматривают два сменяемых состояния: текущее реальное время £ и виртуальное время Ьд(в секундах). Виртуальное время определяется отношением средней скорости поступления пакетов в ведро к количеству уже накопленных в ведре пакетов. Например, если средняя скорость поступления составляет 100 пакетов в секунду, а в ведре накоплено 1000 пакетов, то виртуальное время будет равняться десяти секундам, т.е. на 10 секунд превышать реальное время.

Примем следующие обозначения: И - размер пакета в байтах; V -текущая скорость поступления пакетов в ведро. Тогда каждый пакет, поступающий на входной интерфейс, в соответствии с алгоритмом «дырявого ведра» должен обрабатываться по таким правилам:

♦ при условии, когда Ьд+ Я (Уп/ К ) > £ + 5 / пакет уничтожается, а

Существует несколько вариантов реализации этого алгоритма. Рассмотрим вариант, который применяется для профилирования трафика в сетях frame relay. Допустим условия SLA предполагают необходимость приоритетного обслуживания некоторого потока фреймов, средняя скорость которого на любых промежутках текущего времени Т не должна превышать пороговое значение CIR. Если, всё же, по каким-либо причинам (не важно: по вине оператора связи или его клиента) текущая средняя скорость потока на каком-либо временном интервале превысит порог CIR, то «лишние» фреймы (из-за которых произошло превышение порога) должны отбрасываться (или рассматриваться в качестве низкоприоритетных).

Процедура реализации заданного выше алгоритма профилирования потока фреймов может основываться на алгоритме «дырявого ведра». В этом случае следует предусмотреть возможность настройки механизмов реализации алгоритма по таким параметрам: Т - интервал усреднения текущих оценок для скорости контролируемого потока фреймов;

CIR (Commited Information Rate) - согласованное в SLA пороговое значение средней скорости потока фреймов, которое не должно превышаться контролируемым потоком на интервалах усреднения Г; Вс - допустимый (т.е., согласованный) для передачи на промежутке времени Т объем данных пользователя. Вс численно равен произведению выбранного значения согласованной средней скорости контролируемого потока CIR и выбранного значения согласованного интервала усреднения Т, т.е. Вс = CIR х Г (фактически Вс - это допустимые порции объёма трафика, которые согласно условиям SLA требуют приоритетного обслуживания на каждом текущем временном промежутке, длительностью Т)\

Ве - дополнительный объем данных (сверх объёма Вс), разрешенный по условиям SLA для передачи. Ве (согласно этим условиям может превышать Вс) может обрабатываться в соответствии с другими правилами, отличными от правил алгоритма «дырявого ведра» (как правило, с более низким уровнем обслуживания).

С учётом введенных выше обозначений профилирование потока фреймов по алгоритму «дырявого ведра» заключается в следующем. Через каждые Т секунд осуществляется контроль текущих параметров потока фреймов, нуждающегося в профилировании, с тем, чтобы определить следующее: на каждом прошедшем текущем интервале Т контролируемая текущая оценка средней скорости потока была больше или меньше порога CIR. При этом, чаще всего, скорость контролируется на основе подсчета объема данных, которые поступили за период Т. Если этот объем меньше или равняется Вс, то это свидетельствует о том, что фактическая средняя скорость потока фреймов была меньше Вс/Г, т.е. меньше CIR. Понятно, что в этом случае результат текущего контроля подтверждает, что условия SLA не нарушены. И контролируемый поток далее обрабатывается по принятым в данной конкретной системе приоритетным правилам обслуживания. Это значит, что пока измеренные значения средней скорости потока на текущих промежутках времени Т не превышают порог согласованной скорости CIR, то контролируемый поток получает заданное качество обслуживания. Однако на практике трафик пользователя может превышать согласованную скорость CIR. В таком случае «лишний» трафик (т.е., трафик, объём которого на интервале Т превышает значение Вс) должен обрабатываться по иным (как правило, более низкоприоритетным) правилам обслуживания.

Например, правила обработки «лишнего» трафика, переносимого потоком фреймов, могут быть следующими. В случае превышения трафиком на каком-либо текущем интервале Т согласованного значения Вс, реализованная в сетевом устройстве схема контроля должна осуществить проверку: «лишний» трафик на этом интервале оказался больше или меньше величины Вс + Ве. В случаях, когда такой трафик оказывается меньше величины Вс + Ве, тогда «лишние» фреймы, входящие в состав Ве, не отбрасываются. Они обозначаются определенным признаком и обрабатываются, например, по остаточному принципу, т.е. по низкому приоритету. Но если трафик, поступающий в сетевое устройство, превышает величину Вс + Ве, то обо рудование поставщика услуг может быть инсталлировано таким образом, чтобы отбрасывать такого рода «сверх лишние» кадры.

Механизм профилирования трафика, реализующий данный алгоритм, основан обычно на использовании счетчика данных, которые упакованы в формат фреймов и поступают на входной интерфейс узлового коммутатора от терминальных узлов пользователей сети frame relay. Отсчет осуществляется в байтах. Если все байты данных из потока фреймов, подсчитанные счётчиком, не увеличили показания счетчика свыше порога Вс, то такие фреймы пропускаются на выводной интерфейс коммутатора с признаком поля в формате кадра DE = 0. Фреймы с таким признаком обрабатывают с наиболее высоким приоритетом. Фреймы, подсчёт байтов из которых привел к показанию счетчика, большему значения Вс, но меньшему значения Вс + Be, также пропускаются на выводной интерфейс коммутатора, но с признаком DE = 1. Такие фреймы обслуживаются с меньшим уровнем приоритета. И, наконец, фреймы, подсчёт байтов из которых привел к показанию счетчика, большему значения Вс+Ве, отбрасываются коммутатором.

Одна из модификаций алгоритма «дырявого ведра», имеющего название Generic Cell Rate Algorithm (GCRA), применяется для профилирования трафика в сетях ATM с использованием процедур контроля таких параметров: пиковой скорости, средней скорости, вариации интервала прибытия ячеек с данными и объема пульсаций.

Взвешенное обслуживание | Сети передачи пакетных данных | Алгоритм «ведра жетонов»