Мартин Браун - HOWTO по управлению трафиком с помощью tcng и HTB
- Название:HOWTO по управлению трафиком с помощью tcng и HTB
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Мартин Браун - HOWTO по управлению трафиком с помощью tcng и HTB краткое содержание
HOWTO по управлению трафиком с помощью tcng и HTB - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
На деле это означает, что вам, вероятно, нужно будет установить значение пропускной способности равным реальной пропускной способности канала, минус небольшая ее часть.
1.3. Что такое tcng?
Traffic Control Next Generation (tcng) — это проект Вернера Альмесбергера (Werner Almesberger) призванный реализовать мощный, абстрактный и стандартизированный язык для описания структур управления трафиком. Синтаксический анализатор tccиз дистрибутива tcngпреобразовывает язык tcng в различные форматы. По умолчанию, tccчитает входной файл (переданный в качестве аргумента или стандартный ввод) и выводит в стандартный вывод последовательности команд tc(смотрите ниже iproute2) необходимые для создания желаемой структуры управления трафиком в ядре.
Обратитесь к справочнику по параметрам tcngза информацией о поддерживаемых дисциплинах обработки очереди. Джакоб Теплитски (Jacob Teplitsky), активный участник списка рассылки LARTCи контрибьютор проекта tcng, написал поддержку htb для tcng.
Утилита tccможет генерировать вывод различных типов, но в этом документе мы будем рассматривать только стандартный вывод и вывод по умолчанию. За детальной информацией об использовании tcngобратитесь к руководству TCNG.
Программа tcsim — имитатор системы управления трафиком, который работает с конфигурационными файлами tcng и имитирует поведение ядра при передаче данных, согласно структурам управления трафиком. Несмотря на то, что tcsimявляется значительной частью проекта tcng, в этом документе он вообще не рассматривается.
2. Требования
Есть некоторые требования по поддержке ядром HTB и DSMARK, поддержке HTB и DSMARK в tc и самому tcng.
В частности, поддержка HTB в ядре и tc абсолютно необходима, иначе вы не сможете воспользоваться советами, предоставляемыми данным руководством (обратите внимание на название, если у вас есть какие-то сомнения). Поддержка DSMARK, строго говоря, необязательна, однако некоторые примеры (алгоритм выбора класса, в частности, и возможно и другие) могут не работать без нее.
2.1. Требования к ядру
Удовлетворить требования к ядру очень просто. Ядро 2.4.20 и более новые включают поддержку HTB и dsmark, так что просто убедитесь, что эти опции включены в разделе QoS/Fair Queuing конфигурации ядра. За кратким описанием параметров для, которые нужно выбрать в конфигурации ядра, обращайтесь к заметкам по конфигурации ядра для проекта DiffServ.
Для ядер версии меньше 2.4.20 необходим патч(к сожалению патч существует только для ядер 2.4.17 и выше).
2.2. Требования tc
Команда tcявляется частью набора утилит iproute2. За общей документацией по iproute2, обращайтесь на сайт http://linux-ip.net/и к руководству по iproute2. Само программное обеспечение доступно на FTP-архиве Алексея Кузнецова, но обычно они поставляются в виде пакетов с дистрибутивом Linux. Если ваш дистрибутив использует пакеты RPM, вы можете загрузить этот SRPMи скомпилировать у себя в системе.
Если вам придется компилировать iproute2самим, то чтобы включить поддержку htb в tc, возьмите патч к tcна сайте Мартина Дэвэра.
Кроме того, в tcпотребуется поддержка dsmark, механизма маркировки diffserv. К счастью, его поддержка легко включается с помощью редактирования файла Config из пакета исходников iproute2. Просто измените строку TC_CONFIG_DIFFSERV=n на TC_CONFIG_DIFFSERV=y и скомпилируйте пакет.
Из этого SRPMможно собрать пакет iproute2с поддержкой dsmark и htb, которые требуются для примеров этого документа.
2.3. Требования tcng
Компиляция tcng — самый простая часть всего процесса. Просто распакуйте исходный код tcng и выполните: ./configure --no-tcsim перед компиляцией.
Если вы работаете с дистрибутивом, основанном на RPM, то можете использовать SPEC-файл tcng/build/tcng.spec для сборки пакета. Можно взять готовый SRPM здесь. Результатом сборки этого SRPM станут два пакета: tcc и tcc-devel. Для создания конфигураций вам понадобится только tcc.
Для работы с tccвам понадобиться пакет cpp, поскольку tccего использует в работе.
3. Примеры конфигураций
Приведенные в этом документе примеры представляют переработанные конфигурации, доступные по адресу http://linux-ip.net/code/tcng/.
Примеры могут использоваться как самостоятельные конфигурационные файлы для синтаксического анализатора tcc, или в комбинации с примером скрипта начальной загрузки для SysV. Данный скрипт начальной загрузки является модификацией скрипта, предложенного raptor'ом в списке рассылки LARTC.
Если вы собираетесь пользоваться этим скриптом начальной загрузки, посмотрите на пример файла /etc/sysconfig/tcng :
Пример 1. /etc/sysconfig/tcng# - мета-конфигурационный файл tcng
#
# -- 2003-03-15 создание; -MAB
# -- 2003-03-31 модификация для поддержки переопределения ENVAR; -MAB
#
# -- В этом каталоге будут храниться все конфигурационные файл tcng
# для данного хоста
#
TCCONFBASEDIR=${TCCONFBASEDIR:-/etc/sysconfig/tcng-configs}
# -- активная конфигурация для tcng
# обратите внимание, что благодаря поддержке конструкции #include
# модульность конфигурации tcng может быть встроена в
# конфигурационные файлы в $TCCONFBASEDIR
#
TCCONF=${TCCONF:-$TCCONFBASEDIR/global.tcc}
tcstats=${tcstats:-no} # -- подавляет вывод статистики
tcstats=${tcstats:-yes} # -- передает ключ "-s" в tc
tcdebug=${tcdebug:-0} # -- для повседневного использования
tcdebug=${tcdebug:-1} # -- для вывода дополнительной информации
tcdebug=${tcdebug:-2} # -- для вывода отладочной информации
#
#
# -- в качестве дополнительной меры, вы можете переопределить местоположение утилит
# tc и tcc, например:
#
# tc=/usr/local/bin/tc
# tcc=/usr/local/tcng/bin/tcc
#
#
3.1. Использование tcng для ограничения входящего потока
/*
* Простой пример с комментариями файла управления трафиком для tcng.
*
* Martin A. Brown < mabrown@securepipe.com>
*
* Пример: Использование алгоритма выбора класса.
*
*
*/
#include "fields.tc"
[1] Язык tcng обеспечивает поддержку c-подобных директив include, которые позволяют присоединить любой файл. Файлы присоединяются относительно текущего каталога или библиотеки tcng (обычно /usr/lib/tcng/include ). Строго говоря, указывать директивы #includeports.tc и #includefields.tc необязательно, поскольку tcc их присоединяет по умолчанию. Использование директив #include увеличивает гибкость определения переменных и подключения общих элементов управления трафиком. За дальнейшей информацией обращайтесь к руководству tcng, раздел подключений .
Интервал:
Закладка: