URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 86587
[ Назад ]

Исходное сообщение
"HTB не использует весь канал"

Отправлено yatim , 14-Сен-09 16:01 
Итак, есть роутер (INTEL 4x2.4MHz / 2G...Debian), работает не напрягаясь, канал в 40Мбит и 800 юзеров, которых надо на нем шейпить. Т.к. пров хочет из этих 40М раздать что-то около 300М, то поставил RATE в 16 раз меньше, чем CEIL :).
Проблема в том, что общая загрузка канала не превышает 20-25 Мбит, т.е. htb не раздает даже то, что есть (если вырубить шейпер, то аж бегом трафик выростает до 40 Мбит). Используется скрипт htb.init, расписаны классы и т.д. Суммарный RATE в пользовательских классах немного меньше 40Мбит. Используется 2 imq интерфейса (in/out)... Ошибок в конфиге не замечено. Немного инфы:

родительский для всех (~800) клиентов класс:

class htb 1:10 root rate 40000Kbit ceil 80000Kbit burst 21675b/8 mpu 0b overhead 0b cburst 41750b/8 mpu 0b overh
ead 0b level 7
Sent 412501985436 bytes 587723359 pkt (dropped 0, overlimits 0 requeues 0)
rate 19204Kbit 3094pps backlog 0b 0p requeues 0
lended: 394920221 borrowed: 0 giants: 0

пользовательские классы на оба интерфейса прописаны одинаково, что-то вроде этого:

RATE=192Kbit
CEIL=3072Kbit
RULE=10.62.3.69
RULE=10.62.3.69,

В прайм-тайм общий трафик не подымается выше 25 Мбит, т.е. 15Мбит гуляют. Вот родительский класс:
RATE=40Mbit
CEIL=80Mbit
LEAF=sfq
PERTURB=10
PRIO=1

Пробовал смотреть tc -s -d (qdisc/class/filter) dev imq... , есть там все классы, rate & ceil ...
может он не напрягается из-за того, что rate таки маленькие?


Содержание

Сообщения в этом обсуждении
"HTB не использует весь канал"
Отправлено yatim , 17-Сен-09 15:10 
несколько дней тестировал и всячески изголялся, вот результаты наблюдений:
до двух сотен юзеров на один imq (т.е. всего порядка 400 файлов классов in+out), работает нормально, канал весь юзает, шейпит, 300 юзеров и больше - ему начинает плохеть, канал заполняется хуже и хуже...
Пробовал убрать корневой класс - все классы прописать первыми (не imq3-10:264.user , а imq3-264.user) - вообще хреново становится, канал юзается процентов на 5 О_о (мож чего накосячил, таки 1700 файлов sed-ом прошел, хотя вроде норм получилось).
юзерские файлы все стали вида:
cat ./imq3-123.user

RATE=64Kbit
CEIL=1024Kbit
LEAF=sfq
PERTURB=10
RULE=192.168.1.196
RULE=192.168.1.196,

Пробовал задавать несуществующий дефолтный класс (де-то в инетах видал такую мыслю), ничего не дало.
Перебирал типы очередей и их параметры, совсем немного лучше стало (канал юзается не на 45% а на 52 ) :(
Может кто знает, как посмотреть, во что htb упирается, может кто-то знает, как правильно тестить при большом количестве классов...

Да, на серваке еще есть iptables+ipset->imq для разделения трафа на мир и UA-IX (собсна речь идет о шейпе мира)...

... хоть бы проца не хватало, аль еще чего - всего навалом :(


"HTB не использует весь канал"
Отправлено pavel_simple , 17-Сен-09 18:20 
>[оверквотинг удален]
>не дало.
>Перебирал типы очередей и их параметры, совсем немного лучше стало (канал юзается
>не на 45% а на 52 ) :(
>Может кто знает, как посмотреть, во что htb упирается, может кто-то знает,
>как правильно тестить при большом количестве классов...
>
>Да, на серваке еще есть iptables+ipset->imq для разделения трафа на мир и UA-IX (собсна речь идет о шейпе мира)...
>
>... хоть бы проца не хватало, аль еще чего - всего навалом
>:(

объясните мне зачем вам imq?


"HTB не использует весь канал"
Отправлено yatim , 18-Сен-09 13:40 
Просто дастался в наследство роутер, но там было в несколько раз меньше нагрузка, тянул нормально...
А Вы для линуксового роутера что посоветуете?

>
>объясните мне зачем вам imq?


"HTB не использует весь канал"
Отправлено pavel_simple , 18-Сен-09 13:58 
>Просто дастался в наследство роутер, но там было в несколько раз меньше
>нагрузка, тянул нормально...
>А Вы для линуксового роутера что посоветуете?
>
>>
>>объясните мне зачем вам imq?

я не понимаю зачем использовать imq, почему нельзя повесить htb прямо на реальные интерфейсы.

приведите вывод tc qdisc sh и tc -s class sh dev {для всех интерфейсов}


"HTB не использует весь канал"
Отправлено yatim , 18-Сен-09 14:07 
Тут получается шейп 2-х каналов (логических), т.е. разбивается на "мир" и UA-IX. UA-IX почти не шейпится, ибо не актуально - его много и не особо нужен, просто можно на весь канал навесить sfq :) (лично у меня 90% трафика не UA-IX :), а вот мир, собственно, нужно раздавать скурпулезно.

tc qdisc sh

qdisc pfifo_fast 0: dev eth0 root bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev eth1 root bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc htb 1: dev imq0 root r2q 4 default 10 direct_packets_stat 1353892
qdisc htb 1: dev imq1 root r2q 4 default 10 direct_packets_stat 869630
qdisc htb 1: dev imq2 root r2q 4 default 10 direct_packets_stat 43813
qdisc htb 1: dev imq3 root r2q 4 default 10 direct_packets_stat 96295
----------------------------------------
tc -s class sh dev imq0 |tail -n12
class htb 1:179 parent 1:10 prio 0 rate 256000bit ceil 256000bit burst 1727b cburst 1727b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 52734 ctokens: 52734

class htb 1:168 parent 1:10 prio 0 rate 256000bit ceil 256000bit burst 1727b cburst 1727b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 52734 ctokens: 52734
------------------------------------------
tc -s class sh dev imq1 |tail -n12
class htb 1:179 parent 1:10 prio 0 rate 256000bit ceil 256000bit burst 1727b cburst 1727b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 52734 ctokens: 52734

class htb 1:168 parent 1:10 prio 0 rate 256000bit ceil 256000bit burst 1727b cburst 1727b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 52734 ctokens: 52734
--------------------------------------------
tc -s class sh dev imq2 |tail -n12
class htb 1:1079 parent 1:10 prio 0 rate 64000bit ceil 1024Kbit burst 1631b cburst 2113b
Sent 27493 bytes 215 pkt (dropped 0, overlimits 0 requeues 0)
rate 696bit 1pps backlog 0b 0p requeues 0
lended: 215 borrowed: 0 giants: 0
tokens: 184570 ctokens: 15212

class htb 1:1068 parent 1:10 prio 0 rate 96000bit ceil 1560Kbit burst 1647b cburst 2382b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 134114 ctokens: 11933
-----------
tc -s class sh dev imq2 |grep -A4 "class htb 1:10 "
class htb 1:10 root rate 40000Kbit ceil 40000Kbit burst 21675b cburst 21675b
Sent 1770024249 bytes 2187253 pkt (dropped 0, overlimits 0 requeues 0)
rate 15625Kbit 2540pps backlog 0b 0p requeues 0
lended: 1334158 borrowed: 0 giants: 0
tokens: 3077 ctokens: 3077

---------------------------------------------
tc -s class sh dev imq3 |tail -n12
class htb 1:1079 parent 1:10 prio 0 rate 64000bit ceil 1024Kbit burst 1631b cburst 2113b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 199218 ctokens: 16127

class htb 1:1068 parent 1:10 prio 0 rate 96000bit ceil 1560Kbit burst 1647b cburst 2382b
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 134114 ctokens: 11933
-----------
tc -s class sh dev imq3 |grep -A4 "class htb 1:10 "

class htb 1:10 root rate 40000Kbit ceil 40000Kbit burst 21675b cburst 21675b
Sent 1117233195 bytes 2008722 pkt (dropped 0, overlimits 0 requeues 0)
rate 13318Kbit 2580pps backlog 0b 0p requeues 0
lended: 1176571 borrowed: 0 giants: 0
tokens: 3791 ctokens: 3791


Проблема с imq2 && imq3, там из 40М раздается порядка 20М.

>приведите вывод tc qdisc sh и tc -s class sh dev {для
>всех интерфейсов}


"HTB не использует весь канал"
Отправлено pavel_simple , 18-Сен-09 15:24 
>[оверквотинг удален]
>
> rate 13318Kbit 2580pps backlog 0b 0p requeues 0
> lended: 1176571 borrowed: 0 giants: 0
> tokens: 3791 ctokens: 3791
>
>
>Проблема с imq2 && imq3, там из 40М раздается порядка 20М.
>
>>приведите вывод tc qdisc sh и tc -s class sh dev {для
>>всех интерфейсов}

конкретики не скажу, а вот немного попытаюсь посоветовать.

1. учитывая то, что машина занимается исключительно shaping'ом и при этом не является vpn сервером я не наблюдаю необходимости использовать imq
2. такое количество правил НУЖНО упростить, и это расписано тут http://lartc.org/lartc.html#LARTC.ADV-FILTER.HASHING
3. когда уже всё встанет на места после использования хешей попробовать использовать HFSC вместо htb.


"HTB не использует весь канал"
Отправлено yatim , 18-Сен-09 15:51 
ммм... ссылка хороша, есть там рациональное... арбуз :) Пока буду ее разбирать (геморно будет переходить с красивенькой системы в виде файлов). HFSC пока на потом оставлю.
Спасибо.
Как сдюжаю хеширование фильтров, отпишусь.

>
>конкретики не скажу, а вот немного попытаюсь посоветовать.
>
>1. учитывая то, что машина занимается исключительно shaping'ом и при этом не
>является vpn сервером я не наблюдаю необходимости использовать imq
>2. такое количество правил НУЖНО упростить, и это расписано тут http://lartc.org/lartc.html#LARTC.ADV-FILTER.HASHING
>3. когда уже всё встанет на места после использования хешей попробовать использовать
>HFSC вместо htb.


"HTB не использует весь канал"
Отправлено yatim , 22-Сен-09 17:51 
Таки лыжи не едут. Для теста сделал коротенький конфиг:
tc qdisc del dev imq0 root
tc qdisc add dev imq0 root handle 1 htb default 10 r2q 4

tc qdisc del dev imq1 root
tc qdisc add dev imq1 root handle 1 htb default 10 r2q 4

tc qdisc del dev imq2 root
tc qdisc add dev imq2 root handle 1 htb default 110 r2q 10

tc qdisc del dev imq3 root
tc qdisc add dev imq3 root handle 1 htb default 110 r2q 15

tc filter add dev imq2 parent 1:0 prio 5 protocol ip u32
tc filter add dev imq2 parent 1:0 prio 5 handle 2: protocol ip u32 divisor 256

tc filter add dev imq2 protocol ip parent 1:0 prio 5 u32 ht 800:: match ip dst 10.62.0.0/16 hashkey mask 0x000000ff at 12 link 2:

tc class add dev imq2 parent 1: classid 1:10 htb rate  5Mbit prio 1
tc qdisc add dev imq2 parent 1:10 handle 10 sfq perturb 10

tc class add dev imq2 parent 1: classid 1:110 htb rate 35Mbit prio 1
tc qdisc add dev imq2 parent 1:110 handle 110 sfq perturb 10

tc class add dev imq2 parent 1:10 classid 1:1000 htb rate 64Kbit ceil 1024Kbit
tc filter add dev imq2 parent 1:0 protocol ip prio 100 u32 ht 2:03:  match ip dst 10.62.1.3 classid 1:1000
tc filter add dev imq2 parent 1:0 protocol ip prio 100 u32 ht 2:03:  match ip src 10.62.1.3 classid 1:1000
------------------------------------------------------------------------------
он отработал без ошибок, но трафик весь идет по дефолтному классу :(

вот статистика :
qdisc htb 1: root r2q 10 default 110 direct_packets_stat 296 ver 3.17
Sent 750711644 bytes 1251711 pkt (dropped 2516, overlimits 214915 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
qdisc sfq 110: parent 1:110 limit 127p quantum 16000b flows 127/1024 perturb 10sec
Sent 750550975 bytes 1251413 pkt (dropped 2516, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0

[class out]
class htb 1:110 root leaf 110: prio 1 quantum 200000 rate 35000Kbit ceil 35000Kbit burst 19162b/8 mpu 0b overhead 0b cburst 19162b/8 mpu 0b overhead 0b level 0
Sent 750552281 bytes 1251418 pkt (dropped 2516, overlimits 0 requeues 0)
rate 29670Kbit 6123pps backlog 0b 0p requeues 0
lended: 1251418 borrowed: 0 giants: 0
tokens: 3718 ctokens: 3718

class htb 1:1000 parent 1:10 prio 0 quantum 1000 rate 64000bit ceil 1024Kbit burst 1631b/8 mpu 0b overhead 0b cburst 2113b/8 mpu 0b overhead 0b level 0
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 199218 ctokens: 16127

class htb 1:10 root rate 5000Kbit ceil 5000Kbit burst 4Kb/8 mpu 0b overhead 0b cburst 4Kb/8 mpu 0b overhead 0b level 7
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
lended: 0 borrowed: 0 giants: 0
tokens: 6421 ctokens: 6421


[filter out]
filter parent 1: protocol ip pref 5 u32
filter parent 1: protocol ip pref 5 u32 fh 2: ht divisor 256
filter parent 1: protocol ip pref 5 u32 fh 2:3:800 order 2048 key ht 2 bkt 3 flowid 1:1000  (rule hit 482 success 0)
  match 0a3e0103/ffffffff at 16 (success 0 )
filter parent 1: protocol ip pref 5 u32 fh 2:3:801 order 2049 key ht 2 bkt 3 flowid 1:1000  (rule hit 482 success 0)
  match 0a3e0103/ffffffff at 12 (success 0 )
filter parent 1: protocol ip pref 5 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 5 u32 fh 800::800 order 2048 key ht 800 bkt 0 link 2:  (rule hit 1253947 success 0)
  match 0a3e0000/ffff0000 at 16 (success 789500 )
    hash mask 000000ff at 12
filter parent 1: protocol ip pref 100 u32
filter parent 1: protocol ip pref 100 u32 fh 801: ht divisor 1

***qdisk на 10й тож вешал, не там ошибка...


>>>всех интерфейсов}
>
>конкретики не скажу, а вот немного попытаюсь посоветовать.
>
>1. учитывая то, что машина занимается исключительно shaping'ом и при этом не
>является vpn сервером я не наблюдаю необходимости использовать imq
>2. такое количество правил НУЖНО упростить, и это расписано тут http://lartc.org/lartc.html#LARTC.ADV-FILTER.HASHING
>3. когда уже всё встанет на места после использования хешей попробовать использовать
>HFSC вместо htb.


"HTB не использует весь канал"
Отправлено pavel_simple. , 23-Сен-09 00:08 
а вложенные таблицы фильтров ты сделал?

вот несколько ссылок по теме

1. если делать на основе u32
http://gazette.linux.ru.net/rus/articles/lartc/x1661.html = на русском
http://vcalinus.gemenii.ro/?p=9 = генератор таблиц фильтров
http://forum.nag.ru/forum/index.php?showtopic=47480 = люди на nag'е решают подобные проблемы
http://lists.altlinux.org/pipermail/sysadmins/2007-August/02... = ещё на русском

2. другой и более легкий подход основан на классификаторе flow

http://www.mail-archive.com/netdev@vger.kernel.org/msg6... = не забыть внимательно прочитать весь тред
http://forum.nag.ru/forum/index.php?showtopic=44152 = на русском
http://forum.nag.ru/forum/index.php?showtopic=48301&st=0&p=3... = рабочее (можно сказать промышленное) решение


за сим откланиваюсь в надежде наблюдать отчёт о хорошо сделанной работе.

P.S. что-же вы, молодой человек никак с гуглём не сдужетесь.


"HTB не использует весь канал"
Отправлено yatim , 24-Сен-09 14:02 
Почитамши доков, нахшил след. схемку (с дрожью жду вечера):

tc filter add dev imq2 parent 1:0 prio 5 protocol ip u32 ### не понял толком, что это, корневой фильтр, значит нужен только один? (сетей всего 10, 8 10,62,0/24 и 2 других /24)

tc filter add dev imq2 parent 1:0 prio 5 handle 20: protocol ip u32 divisor 256
tc filter add dev imq2 parent 1:0 prio 5 handle 21: protocol ip u32 divisor 256
tc filter add dev imq2 parent 1:0 prio 5 handle 22: protocol ip u32 divisor 256
... (всего 10)

tc filter add dev imq2 protocol ip parent 1:0 prio 5 u32 ht 800:: match ip dst 10.62.0.0/24 hashkey mask 0x000000ff at 16 link 20:
tc filter add dev imq2 protocol ip parent 1:0 prio 5 u32 ht 800:: match ip dst 10.62.1.0/24 hashkey mask 0x000000ff at 16 link 21:
tc filter add dev imq2 protocol ip parent 1:0 prio 5 u32 ht 800:: match ip dst 10.62.2.0/24 hashkey mask 0x000000ff at 16 link 22:
... тоже 10, по 1-му на 10 предыдущих

так на 2й и 3й imq (тока на 3-й "match ip src" и "at 12 link"), на первых 2х (0-й и 1-й)мало классов и они будут со временем убраны вообще.

дефолтными классами для imq2 & imq3, указаны несуществующие классы (хз, де-то прочитал, что гут это, заюзал, ибо видно, что хеш заработал :), думаю надо хоть чуток дать.
т.к. юзается htb.init и система классов в виде файлов, можно получить готовый скрипт, наваял на перле скрипту, которы высчитывает и дописывает в него "ht **:$$:" ,там ** выглядит как "'2'[3й октет]", а $$ - последний октет в hex (для сетей не 10.62.0.0 в ** = '3'[3й октет] и т.д),т.е.

tc class add dev imq2 parent 1:10 classid 1:1016 htb rate 64Kbit ceil 1024Kbit
tc filter add dev imq2 parent 1:0 protocol ip prio 100 u32 ht 22:43: match ip dst 10.62.2.67 classid 1:1016
tc filter add dev imq2 parent 1:0 protocol ip prio 100 u32 ht 22:43: match ip src 10.62.2.67 classid 1:1016

tc class add dev imq2 parent 1:10 classid 1:1007 htb rate 64Kbit ceil 1024Kbit
tc filter add dev imq2 parent 1:0 protocol ip prio 100 u32 ht 26:4a: match ip dst 10.62.6.74 classid 1:1007
tc filter add dev imq2 parent 1:0 protocol ip prio 100 u32 ht 26:4a: match ip src 10.62.6.74 classid 1:1007

теоретически, вместо перебора 2к правил (как до этого), имеем 2 набора хешей в первом 10 строк, во втором 1, т.е. сразу на нужный фильтр.

***вложенные таблицы, это там где на втором прыге сразу в фильтр?

смотрел tc -s -d class show dev imq2 [|grep -A2 1:682], фильтры вродь, работают, пока народу мало все красиво шейпится, но эти проклятые 20Мбит меня преследуют - не рздает больше :( , жду вечера, предвкушаю, блин.

гугелю надо правильно задавать вопросы, а это в своем роде исскусство, пока практикуюсь )

**ссылки - бомба, еще не все прочитал, ща буду с-шный генератор хеш-таблиц пробовать :)

>[оверквотинг удален]
>2. другой и более легкий подход основан на классификаторе flow
>
>http://www.mail-archive.com/netdev@vger.kernel.org/msg6... = не забыть внимательно прочитать весь тред
>http://forum.nag.ru/forum/index.php?showtopic=44152 = на русском
>http://forum.nag.ru/forum/index.php?showtopic=48301&st=0&p=3... = рабочее (можно сказать промышленное) решение
>
>
>за сим откланиваюсь в надежде наблюдать отчёт о хорошо сделанной работе.
>
>P.S. что-же вы, молодой человек никак с гуглём не сдужетесь.


"HTB не использует весь канал"
Отправлено yatim , 25-Сен-09 13:50 
здается мне, что никакой хеш тут не поможет. За роутером оказалась сетка на неуправляемых свичах на 800 компов с маской /21, простая однораноговая, глубиной до 7ми свичей по 100 Мбит - чудесный пример ада. ))))

"HTB не использует весь канал"
Отправлено pavel_simple. , 25-Сен-09 14:07 
>здается мне, что никакой хеш тут не поможет. За роутером оказалась сетка
>на неуправляемых свичах на 800 компов с маской /21, простая однораноговая,
>глубиной до 7ми свичей по 100 Мбит - чудесный пример ада.
>))))

т.е. пользователи сами забивают себе тырнет трафик?

но нагрузка стала меньше или ?


"HTB не использует весь канал"
Отправлено pavel_simple. , 25-Сен-09 14:09 
>здается мне, что никакой хеш тут не поможет. За роутером оказалась сетка
>на неуправляемых свичах на 800 компов с маской /21, простая однораноговая,
>глубиной до 7ми свичей по 100 Мбит - чудесный пример ада.
>))))

дык опять-же -- ты ведь сам говорил, что если шейпер убрать то скорость вырастает.


"HTB не использует весь канал"
Отправлено yatim , 28-Сен-09 11:40 
Возрастает без шейпа, ибо юзера, сидящие ближе к роутеру, могут разгоняться до немерянных скоростей :). Для эксперимента удвоил всем скорость - возросло потребление в 2 раза, у кого хреново с инетом, у того что с шейпером хреново, что без. Нагрузка заметно не изменилась, но траф идет по классам, для избранных (кто может нормально качать) шейп работает, значит должны хеши работать.

>>здается мне, что никакой хеш тут не поможет. За роутером оказалась сетка
>>на неуправляемых свичах на 800 компов с маской /21, простая однораноговая,
>>глубиной до 7ми свичей по 100 Мбит - чудесный пример ада.
>>))))
>
>дык опять-же -- ты ведь сам говорил, что если шейпер убрать то
>скорость вырастает.


"HTB не использует весь канал"
Отправлено pavel_simple , 28-Сен-09 14:09 
>[оверквотинг удален]
>идет по классам, для избранных (кто может нормально качать) шейп работает,
>значит должны хеши работать.
>
>>>здается мне, что никакой хеш тут не поможет. За роутером оказалась сетка
>>>на неуправляемых свичах на 800 компов с маской /21, простая однораноговая,
>>>глубиной до 7ми свичей по 100 Мбит - чудесный пример ада.
>>>))))
>>
>>дык опять-же -- ты ведь сам говорил, что если шейпер убрать то
>>скорость вырастает.

хмм....

вобщем рад за тебя


"HTB не использует весь канал"
Отправлено AAndreychuk , 18-Сен-09 12:32 

>расписаны классы и т.д. Суммарный RATE в пользовательских классах немного меньше
>40Мбит. Используется 2 imq интерфейса (in/out)... Ошибок в конфиге не замечено.
>Немного инфы:
>
>родительский для всех (~800) клиентов класс:
>
>class htb 1:10 root rate 40000Kbit ceil 80000Kbit burst 21675b/8 mpu 0b

Интересно, суммарный рейт 800 пользователей по 192К будет 154Мбита. Даже если понизил до 64К рейт - 51,2Мбита. Уменьшай еще рейт, ничего страшного не будет (10-40К ставь).
У меня на 50М канале основной класс так добавляется:
tc class add dev imq0 parent 1: classid 1:1 htb rate 47000kbit burst 80k cburst 80k
ceil в основном не пишется.


"HTB не использует весь канал"
Отправлено yatim , 18-Сен-09 13:53 
RATE расписан так, что в сумме около 34М, т.е. норм (RATE/CEIL 1/16). Проблемма в том, что когда количество классов переваливает за 300, перестает раздавать весь канал, на данный момент их (классов) 800+ , раздается только ~50% канала (т.е. я не знаю, это 50% от 40М, или 20М, как потолок для текущей схемы) . На днях канал будет увеличен раза в 2, будет обидно, если при 80М будет по прежнему раздаваться 20М

Если я не укажу CEIL для юзеров, то он автоматически будет равен RATE, а сие не есть допустимо:). CEIL c основного убрал, это было бесполезно изначально, так потуги дымящегося мозга:)

Можно посмотреть на ваши конфиги для
tc qdisc add dev imq...
и пример пользовательского класса.

Я использую скрипт htb.init, может чего еще указывать там надо. Я в пользовательские классы не добавлял изначально дисциплины обработки очереди, но все работало, пробовал указать - улушчений не заметил.

Сколько у Вас всего пользовательских классов?

>[оверквотинг удален]
>>
>>class htb 1:10 root rate 40000Kbit ceil 80000Kbit burst 21675b/8 mpu 0b
>
>Интересно, суммарный рейт 800 пользователей по 192К будет 154Мбита. Даже если понизил
>до 64К рейт - 51,2Мбита. Уменьшай еще рейт, ничего страшного не
>будет (10-40К ставь).
>У меня на 50М канале основной класс так добавляется:
>tc class add dev imq0 parent 1: classid 1:1 htb rate 47000kbit
>burst 80k cburst 80k
>ceil в основном не пишется.


"HTB не использует весь канал"
Отправлено yatim , 18-Сен-09 14:00 
<>


"HTB не использует весь канал"
Отправлено AAndreychuk , 18-Сен-09 16:31 

>Если я не укажу CEIL для юзеров, то он автоматически будет равен
>RATE, а сие не есть допустимо:). CEIL c основного убрал, это
>было бесполезно изначально, так потуги дымящегося мозга:)
>

Я не о юзерском CEIL говорил, а о корневом классе, и привел пример как он добавляется


"HTB не использует весь канал"
Отправлено mee , 02-Мрт-10 18:21 
У меня схожая проблема.
Гуглил, читал, пробовал, но пока не добился нужного результата. Видимо, что-то я не так понимаю.

Суть такая. Для каждого пользователя создается класс с rate и ceil, но не смотря на простой канала, скорость к клиенту режется по rate и упорно не хочет разгоняться до ceil.
Тестирую на одном виндовом компе торрентами. Больше никто канал не утилизирует. Если поднять rate - то и скорость поднимается до нового значения rate.

Более подробно. Имеется общий канал 200мбит, поделенный на три класса 50+50+100мбит;
и три соответствующих фильтра по портам (третий не фильтр, а дефолтное значение в очереди):
  1) voip (5060);
  2) http (80);
  3) все остальное.
Если входящий пакет имеет порт отправления 5060 или 80, не важно какой адрес получателя, попадает в один из первых двух классов и отправляется клиенту без резки, иначе пакет попадает в третий класс, где идет резка в зависимости от адреса получателя и его тарифа, а если и тут не срабатывает ни один фильтр, то режется с некой минимальной скоростью (допустим, 32к) и идет получателю.

Вот что я по этому поводу насоображал.

tc qdisc add dev $LAN root handle 1: htb default 3

tc class add dev $LAN parent 1: classid 1:1 htb rate 50mbit prio 0
tc class add dev $LAN parent 1: classid 1:2 htb rate 50mbit prio 1
tc class add dev $LAN parent 1: classid 1:3 htb rate 100mbit prio 2

tc qdisc add dev $LAN parent 1:1 handle 11: sfq perturb 10
tc qdisc add dev $LAN parent 1:2 handle 12: sfq perturb 10
tc qdisc add dev $LAN parent 1:3 handle 13: htb default 1

# фильтры на приоритетный трафик
tc filter add dev $LAN parent 1:0 protocol ip prio 5060 u32 match ip sport 5060 0xffff flowid 1:1
tc filter add dev $LAN parent 1:0 protocol ip prio 80 u32 match ip sport 80 0xffff flowid 1:2

# дефолтный класс, 32кбита
tc class add dev $LAN parent 13: classid 13:1 htb rate 32kbit prio 0
tc qdisc add dev $LAN parent 13:1 handle 130: sfq perturb 10

# для каждого пользователя выполняется набор команд следующего вида:
tc class add dev $LAN parent 13: classid 13:101 htb rate 512kbit ceil 1024kbit
tc qdisc add dev $LAN parent 13:101 handle 131: sfq perturb 10
tc filter add dev $LAN parent 13: protocol ip prio 1 u32 match ip dst 10.0.0.11/255.255.255.255 flowid 13:101

tc class add dev $LAN parent 13: classid 13:102 htb rate 512kbit ceil 1024kbit
tc qdisc add dev $LAN parent 13:102 handle 132: sfq perturb 10
tc filter add dev $LAN parent 13: protocol ip prio 2 u32 match ip dst 10.0.0.12/255.255.255.255 flowid 13:101

Почти все работает как надо, т.е. http трафик льется без ограничений, а, например, торренты режутся, но по границе rate.


"HTB не использует весь канал"
Отправлено mee , 03-Мрт-10 11:15 
>tc filter add dev $LAN parent 13: protocol ip prio 2 u32 match ip dst 10.0.0.12/255.255.255.255 flowid 13:101

Тут очепятко. flowid 13.102, конечно.