Алгоритм взвешенных очередей разработан для того, чтобы можно было предоставить всем классам трафика определенный минимум пропускной способности или гарантировать некоторые требования к задержкам. Под весом данного класса понимается процент предоставляемой классу трафика пропускной способности от полной пропускной способности выходного интерфейса.
При взвешенном обслуживании так же, как при приоритетном, трафик делится на несколько классов, и для каждого класса ведется отдельная очередь пакетов. Но с каждой очередью связывается не приоритет, а процент пропускной способности ресурса, гарантируемый данному классу трафика при перегрузках этого ресурса. Для входного потока таким ресурсом является процессор, а для выходного потока (после выполнения коммутации) — выходной интерфейс.
Пример
Показанное на рис. 7.10 устройство для 5 классов трафика поддерживает 5 очередей к выходному интерфейсу коммутатора. Этим очередям при перегрузках выделяется соответственно 10 %, 10 %, 30 %, 20 % и 30 % пропускной способности выходного интерфейса.
|
|
Достигается поставленная цель тем, что очереди обслуживаются последовательно и циклически, и в каждом цикле обслуживания из каждой очереди выбирается такое число байтов, которое соответствует весу данной очереди. Например, если цикл просмотра очередей в рассматриваемом примере равен одной секунде, а скорость выходного интерфейса составляет 100 Мбит/с, то при перегрузках в каждом цикле первой очереди уделяется 10 % времени, то есть 100 мс и выбирается 10 Мбит данных, из второй — тоже 10 Мбит, из третьей — 30 Мбит, из четвертой — 20 Мбит, из пятой — 30 Мбит.
В результате каждому классу трафика достается гарантированный минимум пропускной способности, что во многих случаях является более желательным результатом, чем подавление низкоприоритетных классов высокоприоритетным.
Входной трафик |
Классификатор (протокол, адреса) |
Выходной трафик |
Выходная очередь |
Планировщик о (взвешенное циклическое продвижение) |
Рис. 7.10. Взвешенные очереди |
Так как данные выбираются из очереди пакетами, а не битами, то реальное распределение пропускной способности между классами трафика всегда немного отличается от планируемого. Например, вместо 10 % первый класс трафика может получить при перегрузках 9 или 12 %. Чем больше время цикла, тем точнее соблюдаются требуемые пропорции между классами трафика, так как из каждой очереди выбирается большое число пакетов и влияние размера каждого пакета усредняется.
С другой стороны, длительный цикл приводит к большим задержкам передачи пакетов. Например, при выбранном нами для примера цикле в одну секунду задержка может составить одну секунду и больше — ведь арбитр возвращается к каждой очереди не чаще, чем раз в секунду, кроме того, в очереди может находиться более одного пакета. Поэтому при выборе времени цикла нужно обеспечить баланс между точностью соблюдения пропорций пропускной способности и стремлением к уменьшению задержки.
|
|
Для нашего примера время цикла в 1000 мкс является примером такого баланса. С одной стороны, оно обеспечивает обслуживание очереди каждого класса каждые 1000 мкс, а значит — более низкий уровень задержек. С другой стороны, этого времени достаточно, чтобы выбрать из каждой очереди в среднем по несколько пакетов (первой очереди в нашем примере будет отводиться 100 мкс, что достаточно для передачи в выходной канал одного пакета Fast Ethernet или десяти пакетов Gigabit Ethernet).
На уровень задержек и вариации задержек пакетов для некоторого класса трафика при взвешенном обслуживании в значительной степени влияет коэффициент использования. В этом случае коэффициент подсчитывается как отношение интенсивности входного трафика класса к пропускной способности, выделенной этому классу в соответствии с его весом. Например, если мы выделили первой очереди 10 % от общей пропускной способности выходного интерфейса, то есть 10 Мбит/с, а дредняя интенсивность потока, который попадает в эту очередь, равна 3 Мбит/с, то коэффициент использования для этого потока составит 3/10 = 0,3. Зависимость на рис. 7.5 показывает, что задержки при таком значении коэффициента использования будут незначительными. Если бы интенсивность входного потока этой очереди была 9 Мбит/с, то очереди были бы значительными, а при превышении предела 10 Мбит/с часть пакетов потока постоянно бы отбрасывалась из-за переполнения очереди.
Качественное поведение очереди и, соответственно, задержек здесь выглядит примерно так же, как и в случае очереди FIFO — чем меньше коэффициент загрузки, тем меньше средняя длина очереди и тем меньше задержки.
Как и для приоритетного обслуживания, при взвешенном обслуживании администратор может назначать разным классам очередей буферы разных размеров. Уменьшение размеров буферов для очередей ведет к росту числа потерь пакетов при перегрузках, но зато снижает время ожидания для тех пакетов, которые не были отброшены и попали в очередь.
Существует также такой вид взвешенного обслуживания, как взвешенное справедливое обслуживание (Weighted Fair Queuing, WFQ). В случае подобного обслуживания пропускная способность ресурса делится между всеми потоками поровну, то есть «справедливо».
ВНИМАНИЕ --------------------------------------------------------------------------------------------------------
Взвешенное обслуживание обеспечивает требуемые соотношения между интенсивностя- ми трафика различных очередей только в периоды перегрузок, когда каждая очередь постоянно заполнена. Если же какая-нибудь из очередей пуста (то есть для трафика данного класса текущий период не является периодом перегрузки), то при просмотре очередей она пропускается, и ее время обслуживания распределяется между остальными очередями в соответствии с их весом. Поэтому в отдельные периоды трафик определенного класса может обладать большей интенсивностью, чем соответствующий процент от пропускной способности выходного интерфейса.