HOWTO по управлению трафиком с помощью tcng и HTB (ЛП)
HOWTO по управлению трафиком с помощью tcng и HTB (ЛП) читать книгу онлайн
Этот документ представляет собой краткое руководство по использованию tcng (Traffic Control Next Generation) с HTB (Hierarchical Token Bucket) для ограничения трафика на Linux-машине.
Это руководство предназначено для системных администраторов,
• которые имеют хотя бы базовое представление об управлении трафиком
• которые в состоянии скомпилировать iproute2 и tcng из исходных текстов или умеют собирать пакеты RPMS из существующих SRPM
• работающих на системах, чьё ядро имеет поддержку модулей htb и dsmark
• которые в состоянии скомпилировать ядро с поддержкой htb и dsmark
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
#
#
# -- в качестве дополнительной меры, вы можете переопределить местоположение утилит
# tc и tcc, например:
#
# tc=/usr/local/bin/tc
# tcc=/usr/local/tcng/bin/tcc
#
#
3.1. Использование tcng для ограничения входящего потока
/*
* Простой пример с комментариями файла управления трафиком для tcng.
*
* Martin A. Brown <i><<a href="mailto:[email protected]">[email protected]</a>></i>
*
* Пример: Использование алгоритма выбора класса.
*
*
*/
#include "fields.tc"<a name="read_n_1_back" href="#read_n_1" class="note">[1]</a>
#include "ports.tc"
#define INTERFACE eth0<a name="read_n_2_back" href="#read_n_2" class="note">[2]</a>
dev INTERFACE {
egress {<a name="read_n_3_back" href="#read_n_3" class="note">[3]</a>
/* при использовании алгоритма выбора класса, вначале указываются фильтры! DSmark */<a name="read_n_4_back" href="#read_n_4" class="note">[4]</a>
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 ;<a name="read_n_5_back" href="#read_n_5" class="note">[5]</a>
class ( <$other> ) if 1 ;<a name="read_n_6_back" href="#read_n_6" class="note">[6]</a>
/* секция, в которой мы конфигурируем дисциплины обработки очередей и классы */
htb () {<a name="read_n_7_back" href="#read_n_7" class="note">[7]</a>
class ( rate 600kbps, ceil 600kbps ) {<a name="read_n_8_back" href="#read_n_8" class="note">[8]</a>
$ssh = class ( rate 64kbps, ceil 128kbps ) { sfq; } ;
<a name="read_n_9_back" href="#read_n_9" class="note">[9]</a>$audio = class ( rate 128kbps, ceil 128kbps ) { sfq; } ;
$bulk = class ( rate 256kbps, ceil 512kbps ) { sfq; } ;
$other = class ( rate 128kbps, ceil 384kbps ) { sfq; } ;<a name="read_n_10_back" href="#read_n_10" class="note">[10]</a>
}
}
}
}
3.2. Использование двухскоростного трехцветного измерителя
/*
* Простой пример с комментариями файла управления трафиком для tcng.
*
* Martin A. Brown <i><<a href="mailto:[email protected]">[email protected]</a>></i>
*
* Пример: Использование измерителя.
*
*
*/
#define EXCEPTION 192.168.137.50
#define INTERFACE eth0
$meter = trTCM( cir 128kbps, cbs 10kB, pir 256kbps, pbs 10kB );<a name="read_n_11_back" href="#read_n_11" class="note">[11]</a>
dev eth0 {
egress {
class ( <$full> ) if ip_src == EXCEPTION ;<a name="read_n_12_back" href="#read_n_12" class="note">[12]</a>
class ( <$fast> ) if trTCM_green( $meter ) ;<a name="read_n_13_back" href="#read_n_13" class="note">[13]</a>
class ( <$slow> ) if trTCM_yellow( $meter ) ;<a name="read_n_14_back" href="#read_n_14" class="note">[14]</a>
drop if trTCM_red( $meter ) ;<a name="read_n_15_back" href="#read_n_15" class="note">[15]</a>
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. Ниже приводится таблица соответствия между сокращениями этих утилит с русским языком.