The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

tc-cbq (8)
  • >> tc-cbq (8) ( Русские man: Команды системного администрирования )
  • tc-cbq (8) ( Linux man: Команды системного администрирования )
  •  

    ИМЯ

    CBQ - очередь, базирующая на классах  

    СИНТАКСИС

    tc qdisc ... dev УСТРОЙСТВО ( parent classid | root) [ handle major: ] cbq [ allot размер ] avpkt размер bandwidth скорость [ cell размер ] [ ewma степень ] [ mpu размер ]

    tc class ... dev УСТРОЙСТВО parent major:[minor] [ classid major:minor ] cbq allot размер [ bandwidth скорость ] [ rate скорость ] prio приоритет [ weight вес ] [ minburst количество_пакетов ] [ maxburst количество_пакетов ] [ ewma степень ] [ cell размер ] avpkt размер [ mpu размер ] [ bounded isolated ] [ split handle & defmap defmap ] [ estimator интервал константа ]

     

    ОПИСАНИЕ

    Очередь, базирующая на классах (Class Based Queueing) реализует мощную иерархию классов. Поддерживает ограничения и приоритеты. Разделение осуществляется по времени простоя канала, вычисляемого на основании временных характеристик освобождения очереди и полосы пропускания.

     

    АЛГОРИТМ

    При ограничении канала 10 мбит/с до 1 мбит/с, полоса простаивает 90% времени. Если это не так, необходимо распределить трафик так, чтобы полоса простаивала 90% времени.

    Во время операций эффективное время простоя вычисляется по EWMA (exponential weighted moving average), которое основано на предположении, что последние пакеты экспоненциально более важные, чем ранние. Средняя загрузка Unix рассчитывается таким же образом.

    Вычисленное время простоя вычитается из значения EWMA и получается значение, называемое 'avgidle'. Идеально загруженный канал имеет значение avgidle равным нулю: пакеты прибывают точно с заданным интервалом.

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

    И наоборот, простаивающий канал имеет большое значение avgidle, которое позволяет обеспечить канал бесконечного объема после нескольких часов отсутствия пакетов. Для предотвращения таких перегибов, значение avgidle ограничивается значением maxidle.

    При переполнении канала, в теории, CBQ тоже может забиться на период между отправлением пакетов. Однако в связи с ограничениями принятие решения по таймеру (см. параметр minburst ниже) это невозможно.

     

    КЛАССИФИКАЦИЯ

    В рамках одной очереди CBQ может существовать множество классов. Каждый из этих классов имеет собственную очередь, по умолчанию tc-pfifo(8).

    При постановке пакета в очередь, он попадает в очередь на верхнем уровне и, с использованием различных методов определяется, какой класс должен получить этот пакет.

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

    Следующие варианты проверяются по порядку для каждой ветви до тех пор, пока управление не будет передано другой ветви или процесс не будет завершен.

    (i)
    Проверка условий фильтров, привязанных к классу. Если это последняя ветвь, закончить работу. В противном случае повторить операцию.
    (ii)
    Найти в defmap значение приоритета, назначенного пакету, который зависит от битов TOS. Проверить, есть ли дочерние элементы, в противном случае повторить операцию.
    (iii)
    Найти в defmap инструкции для приоритета 'best effort' (лучшее достижение). Проверить, есть ли дочерние элементы, в противном случае повторить операцию.
    (iv)
    Если ни один из вариантов не вернул инструкции, поставить в текущую очередь. Этот алгоритм обеспечивает гарантированное распределение пакета даже если конфигурация была произведена с ошибкой.

    Дополнительные сведения указаны в tc-cbq-details(8).

     

    АЛГОРИТМ РАСПРЕДЕЛЕНИЯ

    Когда необходимо забрать пакет из очереди для отправки на сетевой интерфейс, CBQ определяет, из очереди какого класса это необходимо сделать. Это осуществляется посредством процесса Weighted Round Robin, когда каждый класс получает шанс отправить пакет. Процесс WRR начинает опрос сначала с классов с наивысшим приоритетом (с минимальным числом, но более высоким семантически) и, в случае если очередь этих классов пуста, переходит к менее приоритетным классам.

    В свою очередь, классы опрашивают свои дочерние классы по тому же принципу. Класс может быть исключен из опроса, если объявлен как 'bounded' (связанный). Класс также может сообщить о своей неготовности, если отмечен как 'isolated' (изолированный).

     

    ОЧЕРЕДЬ

    Верхний элемент дерева классов очереди CBQ имеет следующие параметры:

    parent major:minor | root
    Обязательный параметр, определяющий место экземпляра CBQ: как root (корневой) класс сетевого интерфейса или дочерний класс указанного по идентификатору класса.
    handle major:
    Как и другие типы очередей, CBQ поддерживает идентификатор 'handle' (обработчик), состоящий только из основного номера и двоеточия после него. Опционально, но очень удобно, если классы имеют идентификатор с номером этой очереди.
    allot размер
    Доля при распределении ссылок для определения времени передачи. Распределение времени на очередь отличается от распределения времени на класс (см. ниже). Опциональный параметр, связан с avpkt.
    avpkt размер
    Средний размер пакета, используемый для вычисления maxidle и определяющий безопасный размер доли. Обязательный параметр.
    bandwidth скорость
    Для определения времени простоя, CBQ должна знать скорость физического интерфейса или родительской очереди. Это очень важный параметр. Объяснения см. ниже. Обязательный параметр.
    cell
    Размер ячейки определяет шаг времени передачи пакетов.
    mpu
    Пустой пакет также требует некоторое время на передачу. Это значение задает минимальное время отправки пакета. По умолчанию - 0.
    ewma степень
    Когда вычисляется среднее время простоя, используется EWMA, которое сглаживает полученное значение. Степень задает силу сглаживания. Малые значения означают большую чувствительность. Значение параметра должно быть от 0 до 31. По умолчанию - 5. Очередь CBQ не разделяет трафик по каналам, она лишь задает параметры об интерфейсе и канале. Реально трафик разделяется в классах.

     

    КЛАССЫ

    Следующие параметры используются для классов:

    parent major:minor
    Место класса в иерархии. Если класс верхнего уровня, дополнительный номер может быть опущен. Обязательный параметр.
    classid major:minor
    Как и очереди, классы могут быть именованы. Основной номер должен совпадать с основным номером родительской очереди. Если класс имеет дочерние классы, нужно указать дополнительный номер.
    weight вес
    При отправке пакетов на интерфейс учитывается вес. Классы с более высоким весом могут передать больше трафика за раз. Вес классов нормализуется и в дальнейшем учитываются пропорции, а не числа. По умолчанию - 1.
    allot размер
    Задает сколько байтов взять из очереди за раз. Этот параметр зависит от параметра weight и ограничивается как минимум 2/3 avpkt. Обязательный параметр.
    prio приоритет
    Классы с меньшим значением приоритета быстрее ставятся на отправку пакетов. Обязательный параметр.
    avpkt
    См. раздел ОЧЕРЕДЬ.
    rate скорость
    Максимальная скорость для этого класса и всех его дочерних классов. Обязательный параметр.

    bandwidth скорость
    Параметр для класса отличается от аналогичного параметра для корневой очереди CBQ. Используется только для определения значений параметров maxidle и offtime, которые рассчитываются для maxburst или minburst. Обязательный параметр, если указан параметр maxburst или minburst.

    maxburst
    Количество пакетов для вычисления значения параметра maxidle. При таком значении avgidle равно maxidle, то есть количество средних пакетов, которое будет передано до тех пор как avgidle станет равно 0. Чем выше это значение, тем чаще будут отправки. Вы не можете установить maxidle напрямую, только через этот параметр.

    minburst
    Как упомянуто выше, CBQ нужно определить границу переполнения. Идеальным решением будет сделать это для вычисленного времени простоя и пропустить 1 пакет. Однако ядра Unix имеют жестко заданные события планировщика с периодом короче 10 мс, поэтому лучше установить границу на более продолжительный период и затем пропустить пакеты.

    Время ожидания называется 'offtime'. Более высокие значения minburst приводят к более аккуратному разделению на длительном периоде, но к более высоким скачкам в масштабах миллисекунд. Необязательный параметр.

    minidle
    Если avgidle меньше 0, очередь перегружена и необходимо подождать, пока значение avgidle будет достаточно большим для отправки хотя бы одного пакета. Для предотвращения внезапных скачков во время продленного периода, avgidle сбрасывается до minidle, если оно слишком маленькое.

    Minidle указывает отрицательное количество микросекунд, так что заданное значение 10 означает ограничение avgidle до -10 микросекунд. Необязательный параметр.

    bounded
    Указывает что класс не получает очереди на отправку от других классов того же уровня
    isolated
    Указывает что класс не передает очередь на отправку другим классам того же уровня

    split major:minor & defmap bitmap[/bitmap]
    Если фильтры, привязанные к классу не вынесли решение, может быть проведена классификация по приоритету пакетов. Доступно 16 приоритетов (от 0 до 15).

    defmap определяет какой класс получает пакеты каких приоритетов в виде битовой таблицы. Бит LSB соответствует приоритету 0. Параметр split какому классу передается трафик.

    Например, 'tc class add ... classid 10:1 cbq .. split 10:0 defmap c0' задает для класса 10:0 передачу пакетов с приоритетами 6 и 7 классу 10:1.

    Дополнительная конфигурация be: 'tc class add ... classid 10:2 cbq ... split 10:0 defmap 3f' отправляет все пакеты с приоритетами 0, 1, 2, 3, 4 и 5 классу 10:1.

    estimator интервал константа
    CBQ устанавливает какую полосу канала может использовать каждый класс, которая необходима для работы фильтров. Для этого используется простой механизм в виде интервала (в микросекундах) когда отправляется трафик. Временная константа также задается в микросекундах для EWMA. Эти значения отражают чувствительность среднего значения от пиков. Более высокое значение означает меньшую чувствительность.

     

    ОБНАРУЖЕННЫЕ ОШИБКИ

    Реальная полоса канала может быть неизвестна, к примеру, для соединений PPoE или PPTP, которые посылают пакеты через канал вместо физического устройства. На настроенном канале CBQ будет достаточно устойчиво работать, возможно, за счет грубого разделения.

    По умолчанию ядра предоставляют ограниченное время на принятие решений. Это сказывается на точном разделении в долгосрочной перспективе, но приводит к грубому разделению в краткосрочной (в рамках секунды) перспективе.

    См. tc-cbq-details(8) для советов как исправить это.

     

    ЛИТЕРАТУРА

    o
    Sally Floyd and Van Jacobson, "Link-sharing and Resource Management Models for Packet Networks", IEEE/ACM Transactions on Networking, Vol.3, No.4, 1995

    o
    Sally Floyd, "Notes on CBQ and Guaranteed Service", 1995

    o
    Sally Floyd, "Notes on Class-Based Queueing: Setting Parameters", 1996

    o
    Sally Floyd and Michael Speer, "Experimental Results for Class-Based Queueing", 1998, не опубликовано.

     

    СМ. ТАКЖЕ

    tc(8)

     

    АВТОРЫ

    Алексей Кузнецов <kuznet@ms2.inr.ac.ru>. man-страница сопровождается Бертом Хубертом (Bert Hubert) <ahu@ds9a.nl>

     

    ПЕРЕВОД

    Андрей Черепанов <cas@altlinux.ru> 2007


     

    Index

    ИМЯ
    СИНТАКСИС
    ОПИСАНИЕ
    АЛГОРИТМ
    КЛАССИФИКАЦИЯ
    АЛГОРИТМ РАСПРЕДЕЛЕНИЯ
    ОЧЕРЕДЬ
    КЛАССЫ
    ОБНАРУЖЕННЫЕ ОШИБКИ
    ЛИТЕРАТУРА
    СМ. ТАКЖЕ
    АВТОРЫ
    ПЕРЕВОД


    Поиск по тексту MAN-ов: 




    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру