HTB шейпер, или делёж канала. (Подскажите советом как-бы лучше организовать.)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
Djon$
Сообщения: 23

HTB шейпер, или делёж канала.

Сообщение Djon$ »

Всем доброго времени суток.
Вот возник вопрос насчёт реализации шейпера на линухе, ибо раньше всё вертелось на винде хотя как для меня загадка, скорость прыгала и т.д.
Мой вариант:
АДСЛ канал 8000/1000 ОГО, около 20 пользователей в сети, у каждого своя скорость начиная от 128-512 килобит.
Примерно что у меня получилось:

Код:

### eth0: queueing disciplines qdisc htb 1: root r2q 100 default 50 direct_packets_stat 4 Sent 90393116 bytes 141216 pkt (dropped 0, overlimits 214458 requeues 0) rate 0bit 0pps backlog 0b 33p requeues 0 qdisc sfq 10: parent 1:10 limit 127p quantum 1514b perturb 10sec Sent 1428126 bytes 4259 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 qdisc sfq 20: parent 1:20 limit 127p quantum 1514b perturb 10sec Sent 61394793 bytes 72780 pkt (dropped 90, overlimits 0 requeues 0) rate 0bit 0pps backlog 45954b 33p requeues 0 qdisc sfq 50: parent 1:50 limit 127p quantum 1514b perturb 10sec Sent 27567198 bytes 64173 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 ### eth0: traffic classes class htb 1:10 parent 1:2 leaf 10: prio 7 rate 50000Kbit ceil 50000Kbit burst 1600b cburst 1600b Sent 1428126 bytes 4259 pkt (dropped 0, overlimits 0 requeues 0) rate 120bit 0pps backlog 0b 0p requeues 0 lended: 4259 borrowed: 0 giants: 0 tokens: 235 ctokens: 235 class htb 1:20 parent 1:2 leaf 20: prio 7 rate 256000bit ceil 256000bit burst 50Kb cburst 1599b Sent 61394793 bytes 72780 pkt (dropped 0, overlimits 0 requeues 0) rate 246008bit 33pps backlog 0b 33p requeues 0 lended: 72747 borrowed: 0 giants: 0 tokens: 1467553 ctokens: -46119 class htb 1:2 root rate 100000Kbit ceil 100000Kbit burst 1600b cburst 1600b Sent 90286922 bytes 141180 pkt (dropped 0, overlimits 0 requeues 0) rate 394352bit 70pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 121 ctokens: 121 class htb 1:50 parent 1:2 leaf 50: prio 0 rate 99000Kbit ceil 99000Kbit burst 1584b cburst 1584b Sent 27567264 bytes 64174 pkt (dropped 0, overlimits 0 requeues 0) rate 139528bit 36pps backlog 0b 0p requeues 0 lended: 64174 borrowed: 0 giants: 0 tokens: 121 ctokens: 121 class sfq 20:cf parent 20: (dropped 0, overlimits 0 requeues 0) backlog 0b 1p requeues 0 class sfq 20:213 parent 20: (dropped 0, overlimits 0 requeues 0) backlog 0b 6p requeues 0 class sfq 20:220 parent 20: (dropped 0, overlimits 0 requeues 0) backlog 0b 1p requeues 0 class sfq 20:266 parent 20: (dropped 0, overlimits 0 requeues 0) backlog 0b 1p requeues 0 class sfq 20:274 parent 20: (dropped 0, overlimits 0 requeues 0) backlog 0b 4p requeues 0 class sfq 20:2cf parent 20: (dropped 0, overlimits 0 requeues 0) backlog 0b 1p requeues 0 class sfq 20:2ea parent 20: (dropped 0, overlimits 0 requeues 0) backlog 0b 1p requeues 0 class sfq 20:38d parent 20: (dropped 0, overlimits 0 requeues 0) backlog 0b 18p requeues 0 ### eth0: filtering rules filter parent 1: protocol ip pref 100 u32 filter parent 1: protocol ip pref 100 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 100 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:10 (rule hit 141103 success 4259) match 00160000/ffff0000 at 20 (success 4259 ) filter parent 1: protocol ip pref 100 u32 fh 800::801 order 2049 key ht 800 bkt 0 flowid 1:20 (rule hit 136844 success 0) match 7ba85501/ffffffff at 16 (success 0 ) filter parent 1: protocol ip pref 100 u32 fh 800::802 order 2050 key ht 800 bkt 0 flowid 1:20 (rule hit 136844 success 0) match 7ba85765/ffffffff at 16 (success 0 ) filter parent 1: protocol ip pref 100 u32 fh 800::803 order 2051 key ht 800 bkt 0 flowid 1:20 (rule hit 136844 success 20668) match 7ba85704/ffffffff at 16 (success 20668 ) filter parent 1: protocol ip pref 100 u32 fh 800::804 order 2052 key ht 800 bkt 0 flowid 1:20 (rule hit 116175 success 0) match 7ba85767/ffffffff at 16 (success 0 ) filter parent 1: protocol ip pref 100 u32 fh 800::805 order 2053 key ht 800 bkt 0 flowid 1:20 (rule hit 116175 success 0) match 7ba85766/ffffffff at 16 (success 0 ) filter parent 1: protocol ip pref 100 u32 fh 800::806 order 2054 key ht 800 bkt 0 flowid 1:20 (rule hit 116173 success 0) match 7ba85768/ffffffff at 16 (success 0 ) filter parent 1: protocol ip pref 100 u32 fh 800::807 order 2055 key ht 800 bkt 0 flowid 1:20 (rule hit 116173 success 42) match 7ba8576b/ffffffff at 16 (success 42 ) filter parent 1: protocol ip pref 100 u32 fh 800::808 order 2056 key ht 800 bkt 0 flowid 1:20 (rule hit 116131 success 8966) match 7ba8576e/ffffffff at 16 (success 8966 ) filter parent 1: protocol ip pref 100 u32 fh 800::809 order 2057 key ht 800 bkt 0 flowid 1:20 (rule hit 107165 success 801) match 7ba85772/ffffffff at 16 (success 801 ) filter parent 1: protocol ip pref 100 u32 fh 800::80a order 2058 key ht 800 bkt 0 flowid 1:20 (rule hit 106364 success 0) match 7ba85773/ffffffff at 16 (success 0 ) filter parent 1: protocol ip pref 100 u32 fh 800::80b order 2059 key ht 800 bkt 0 flowid 1:20 (rule hit 106364 success 0) match 7ba857c9/ffffffff at 16 (success 0 ) filter parent 1: protocol ip pref 100 u32 fh 800::80c order 2060 key ht 800 bkt 0 flowid 1:20 (rule hit 106364 success 0) match 7ba857ca/ffffffff at 16 (success 0 ) filter parent 1: protocol ip pref 100 u32 fh 800::80d order 2061 key ht 800 bkt 0 flowid 1:20 (rule hit 106363 success 0) match 7ba85737/ffffffff at 16 (success 0 ) filter parent 1: protocol ip pref 100 u32 fh 800::80e order 2062 key ht 800 bkt 0 flowid 1:20 (rule hit 106363 success 9429) match 7ba8576d/ffffffff at 16 (success 9429 ) filter parent 1: protocol ip pref 100 u32 fh 800::80f order 2063 key ht 800 bkt 0 flowid 1:20 (rule hit 96934 success 32964) match 7ba85502/ffffffff at 16 (success 32964 ) ### eth1: queueing disciplines qdisc pfifo_fast 0: root bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0

eth0

Код: Выделить всё

DEFAULT=50
R2Q=100

eth0-2:50.default весь некласифицированный траффик пролетает пока на максимальной скорости.

Код: Выделить всё

RATE=99Mbit
CEIL=99Mbit
LEAF=sfq
prio=50

Ну и в добавок SSH трафик идёт у меня:
eth0-2:10.ssh

Код: Выделить всё

RATE=50Mbit
CEIL=50Mbit
LEAF=sfq
RULE=*:22,
PRIO=10 - приоритет повыше

Ну а остальные пользователи сидят в таком диапазоне:
eth0-2:20-ip105 создавал с таким именем по отношению к приоритетам.

Код: Выделить всё

BURST=50Kb
RATE=256Kbit
CEIL=256Kbit
LEAF=sfq
PRIO=20 - приоритет пониже нов этом классе человек 15
RULE=123.168.87.102

но скорсть как-то неправльно распределяется, как говорится то есть то нету, подскажите в чём моя ошибка, ах да совсем забыл шейпер пока что работает в тестовом режиме и тока через 1 интерфейс, в айпитаблес траффик маркировать невижу смысла пока что.
Совсем забыл просто:
htb.init - на текущий момент скомпилированные правила для сетвого интерфейса.

Код:

/sbin/tc qdisc del dev eth0 root /sbin/tc qdisc add dev eth0 root handle 1 htb default 50 r2q 100 /sbin/tc class add dev eth0 parent 1: classid 1:2 htb rate 100Mbit ceil 100Mbit /sbin/tc class add dev eth0 parent 1:2 classid 1:10 htb rate 50Mbit ceil 50Mbit prio 10 /sbin/tc qdisc add dev eth0 parent 1:10 handle 10 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip sport 22 0xffff classid 1:10 /sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 256Kbit ceil 256Kbit burst 50Kb prio 20 /sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 123.168.85.1 classid 1:20 /sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 256Kbit ceil 256Kbit burst 50Kb prio 20 /sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 123.168.87.101 classid 1:20 /sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 256Kbit ceil 256Kbit prio 20 /sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 123.168.87.4 classid 1:20 /sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 256Kbit ceil 256Kbit burst 50Kb prio 20 /sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 123.168.87.103 classid 1:20 /sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 256Kbit ceil 256Kbit burst 50Kb prio 20 /sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 123.168.87.102 classid 1:20 /sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 128Kbit ceil 128Kbit burst 50Kb prio 20 /sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 123.168.87.104 classid 1:20 /sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 512Kbit ceil 512Kbit burst 50Kb prio 20 /sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 123.168.87.107 classid 1:20 /sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 512Kbit ceil 512Kbit burst 50Kb prio 20 /sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 123.168.87.110 classid 1:20 /sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 256Kbit ceil 256Kbit burst 50Kb prio 20 /sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 123.168.87.114 classid 1:20 /sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 256Kbit ceil 256Kbit burst 50Kb prio 20 /sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 123.168.87.115 classid 1:20 /sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 512Kbit ceil 512Kbit burst 50Kb prio 20 /sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 123.168.87.201 classid 1:20 /sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 512Kbit ceil 512Kbit burst 50Kb prio 20 /sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 123.168.87.202 classid 1:20 /sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 256Kbit ceil 256Kbit burst 50Kb prio 20 /sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 123.168.87.55 classid 1:20 /sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 256Kbit ceil 256Kbit burst 50Kb prio 20 /sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 123.168.87.109 classid 1:20 /sbin/tc class add dev eth0 parent 1:2 classid 1:20 htb rate 256Kbit ceil 256Kbit burst 50Kb prio 20 /sbin/tc qdisc add dev eth0 parent 1:20 handle 20 sfq perturb 10 /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 123.168.85.2 classid 1:20 /sbin/tc class add dev eth0 parent 1:2 classid 1:50 htb rate 99Mbit ceil 99Mbit /sbin/tc qdisc add dev eth0 parent 1:50 handle 50 sfq perturb 10

А сам вопрос в том, на правильном ли я пути по отношению к реализации правил в самом шейпере, а также попутный вопрос можно-ли траффик клиента разбить есчё на 2 подкласса.. тоесть WWW траффик и так сказать всё остльное..
ну и в добвок скажу что крутится есчё и прокси сервер с пулами на каждого пользователя с нужной скоростью, тоесть выходит ацкий роутер, мало того что HTB режет, так ив добавок есчё и Squid (прокся стоит только для ускорения ВЕБ серфинга).
Да есчё интересный тест, как видите у пользователя с адресом 87,4 не указан параметр BURST=50Kb, читал в доке что сам шейпер вычисляет этот параметр... по моим наблюдениям ничего подобного, заметил только 1 что скоростьв торренте на аплоад у меня увеличилась с положенных 29-32кб на 60-70-80 килобайт.
С этим я чё-то запутался совсем :(
Дистриб Гентоо х86, серверная сборка.
Хочу много зарабатывать, РАБОТУ не предлагать.
Спасибо сказали: