Мартин Браун - HOWTO по управлению трафиком с помощью tcng и HTB
- Название:HOWTO по управлению трафиком с помощью tcng и HTB
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Мартин Браун - HOWTO по управлению трафиком с помощью tcng и HTB краткое содержание
HOWTO по управлению трафиком с помощью tcng и HTB - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
#include "ports.tc"
#define INTERFACE eth0
[2] Поддерживаются директивы CPP. Директива #define может использоваться для создания макросов или констант. За подробной информацией обращайтесь к руководству tcng, раздел переменных .
dev INTERFACE {
egress {
[3] Ключ egress является синонимом dsmark . Приведенный пример использует class selection path . Для использования в конфигурации ключа egress необходима поддержка dsmark в ядре и tc .
/* при использовании алгоритма выбора класса, вначале указываются фильтры! DSmark */
[4] Алгоритм выбора класса (class selection path) — это один из подходов к ограничению трафика. При использовании алгоритма выбора класса, пакет маркируется (DiffServ mark) при поступлении в маршрутизатор. На основе этой маркировки маршрутизатор позднее может выполнять различные действия по ограничению, упорядочиванию и классифицированию трафика. За подробностями обращайтесь к разделу описания алгоритма выбора класса руководства по tcng .
class ( <$ssh> ) if tcp_sport == 22 && ip_tos_delay == 1 ;
class ( <$audio> ) if tcp_sport == 554 || tcp_dport == 7070 ;
class ( <$bulk> ) \
if tcp_sport == PORT_SSH || tcp_dport == PORT_HTTP ;
[5] Этот пример показывает использование имен портов вместо их номеров. Это одно из удобств tcng , предоставляемых подключением ports.tc . Имена портов соответствуют названиям портов IANA. Узнать имена портов можно в списке зарегистрированных портов IANA или изучив файл ports.tc . Имена и номера портов одинаково допустимы.
class ( <$other> ) if 1 ;
[6] Обратите внимание на эту специфическую конструкцию, которая классифицирует все ранее не классифицированные пакеты. Все пакеты, которые не были классифицированы вышеуказанными классификаторами, помещаются в класс "$other". Конструкция if 1 может применяться для классифицирования неклассифицированного трафика.
/* секция, в которой мы конфигурируем дисциплины обработки очередей и классы */
htb () {
[7] Здесь создается корневая дисциплина обработки очереди устройства, в нашем случае eth0 . Проконсультируйтесь со справочными материалами tcng , дополнение по параметрам дисциплин обработки очереди . Любые параметры дисциплины очереди могут быть вставлены в круглые скобки, так же как и параметры класса далее в примере. Если параметры не указаны, скобки необязательны.
class ( rate 600kbps, ceil 600kbps ) {
[8] Корневой класс в этом примере задает максимальную полосу пропускания для всего класса. Давайте предположим, что eth0 — это интерфейс, подключенный к локальной сети. Тогда скорость передачи данных в локальную сеть будет ограничена 600 килобитами. Параметры rate и ceil должны быть знакомы всем, кто пользовался HTB. Это специфические параметры HTB и соответствующим образом обрабатываются утилитой tcc . Обратитесь к таблице аббревиатур скоростей tcng .
$ssh = class ( rate 64kbps, ceil 128kbps ) { sfq; } ;
[9] Это присвоение класса переменной. Обычно выполняется как часть алгоритма выбора пути.
$audio = class ( rate 128kbps, ceil 128kbps ) { sfq; } ;
$bulk = class ( rate 256kbps, ceil 512kbps ) { sfq; } ;
$other = class ( rate 128kbps, ceil 384kbps ) { sfq; } ;
[10] По совету Мартина Девера, приведенном на сайте HTB, каждому классу назначается дисциплина обработки очереди SFQ, которая позволяет эффективо разделять пропускную возможность класса, между сессиями. Обратите внимание на отсутствие параметров у этой дисциплины. Если для подклассов не указаны дисциплины обработки очереди, то они используют стандартную дисциплину pfifo_fast qdisc. Включение стохастической дисциплины (sfq) для подклассов позволяет избежать превалирования одного соединения над остальными внутри класса.
}
}
}
}
3.2. Использование двухскоростного трехцветного измерителя
/*
* Простой пример с комментариями файла управления трафиком для tcng.
*
* Martin A. Brown < mabrown@securepipe.com>
*
* Пример: Использование измерителя.
*
*
*/
#define EXCEPTION 192.168.137.50
#define INTERFACE eth0
$meter = trTCM( cir 128kbps, cbs 10kB, pir 256kbps, pbs 10kB );
[11] В этой строке выполняется объявление измерителя (meter) для классификации трафика. Обратитесь к руководству по tcng, раздел измерителей за списком и примерами различных измерителей. Приведенный в этом примере измеритель является двухскоростным трехцветным измерителем, самым сложным измерителем, доступным в языке tcng . Этот измеритель возвращает цвет — зеленый, желтый и красный, в зависимости от скорости. Если измеренная скорость превышает гарантированную, измеритель возвращает желтый цвет, а если превышает пиковую скорость — возвращается красный цвет. С переменной $meter могут оперировать функции, работающие с типом измерителя. В нашем случае используются три функции, позволяющие проверить состояние $meter : trTCM_green , trTCM_yellow и trTCM_red . Для эффективности, обратите внимание на ускоренные аналоги .
dev eth0 {
egress {
class ( <$full> ) if ip_src == EXCEPTION ;
[12] В нашем примере к трафику хоста 192.168.137.50 специально не применяются правила ограничения применяемые ко всему остальному трафику на интерфейсе eth0.
class ( <$fast> ) if trTCM_green( $meter ) ;
[13] До гарантированной скорости ( cir ), пакеты будут проходить через этот класс. Токены будут использоваться из буфера cir / cbs . Измеритель зеленый.
class ( <$slow> ) if trTCM_yellow( $meter ) ;
[14] Трафик, превышающий возможности буфера cir / cbs будет направляться в буфер pir / pbs ( pir — это пиковая скорость [peak information rate], pbs — это размер пикового буфера). Это позволяет гарантировать отдельному потоку полосу пропускания до определенной скорости,а при превышении ее происходит переклассификация. Измеритель желтый.
drop if trTCM_red( $meter ) ;
[15] Трафик, превышающий возможности буфера pir / pbs классифицируется в этой строке. Обычные конфигурации начинают терять пакеты, превышающие пиковую скорость, но можно настроить и переклассификацию трафика из класса гарантированной пропускной способности в класс максимальной пропускной способности. Измеритель красный.
htb {
class ( rate 600kbps, ceil 600kbps ) {
$fast = class ( rate 256kbps, ceil 256kbps ) { sfq; } ;
$slow = class ( rate 128kbps, ceil 128kbps ) { sfq; } ;
$full = class ( rate 600kbps, ceil 600kbps ) { sfq; } ;
}
}
}
}
4. Разнообразные замечания
К счастью, tcngположил конец маленькому неудобству в использовании tc. Ниже приводится таблица соответствия между сокращениями этих утилит с русским языком.
Таблица 1. Синтакс описания скорости: tcng против tc
tcng | Русский | tc |
---|---|---|
bps | бит в секунду | bit |
Bps | байт в секунду | bps (ух!) |
kbps | килобит в секунду | kbit |
kBps | килобайт в секунду | kbps |
Mbps | мегабит в секунду | mbit или Mbit |
MBps | мегабайт в секунду | mbps или Mbps |
pps | пакетов в секунду | ?? |
Обратите внимание, что это потребует небольшого привыкания для давних пользователей tc, но эти сокращения намного более понятны для тех, кто владеет английским языком.
Читать дальшеИнтервал:
Закладка: