Читаем HOWTO по управлению трафиком с помощью tcng и HTB (ЛП) полностью

В частности, поддержка HTB в ядре и tc абсолютно необходима, иначе вы не сможете воспользоваться советами, предоставляемыми данным руководством (обратите внимание на название, если у вас есть какие-то сомнения). Поддержка DSMARK, строго говоря, необязательна, однако некоторые примеры (алгоритм выбора класса, в частности, и возможно и другие) могут не работать без нее.

<p id="AutBody_0requirements-kernel">2.1. Требования к ядру</p>

Удовлетворить требования к ядру очень просто. Ядро 2.4.20 и более новые включают поддержку HTB и dsmark, так что просто убедитесь, что эти опции включены в разделе QoS/Fair Queuing конфигурации ядра. За кратким описанием параметров для, которые нужно выбрать в конфигурации ядра, обращайтесь к заметкам по конфигурации ядра для проекта DiffServ.

Для ядер версии меньше 2.4.20 необходим патч (к сожалению патч существует только для ядер 2.4.17 и выше).

<p id="AutBody_0requirements-tc">2.2. <strong>Требования tc</strong></p>

Команда 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, которые требуются для примеров этого документа.

<p id="AutBody_0requirements-tcng">2.3. <strong>Требования tcng</strong></p>

Компиляция tcng — самый простая часть всего процесса. Просто распакуйте исходный код tcng и выполните: ./configure --no-tcsim перед компиляцией.

Если вы работаете с дистрибутивом, основанном на RPM, то можете использовать SPEC-файл tcng/build/tcng.spec для сборки пакета. Можно взять готовый SRPM здесь. Результатом сборки этого SRPM станут два пакета: tcc и tcc-devel. Для создания конфигураций вам понадобится только tcc.

Для работы с tcc вам понадобиться пакет cpp, поскольку tcc его использует в работе.

<p id="AutBody_0examples">3. Примеры конфигураций</p>

Приведенные в этом документе примеры представляют переработанные конфигурации, доступные по адресу 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}    # -- для вывода дополнительной информации

Похожие книги