Итак, есть роутер (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 таки маленькие?
несколько дней тестировал и всячески изголялся, вот результаты наблюдений:
до двух сотен юзеров на один imq (т.е. всего порядка 400 файлов классов in+out), работает нормально, канал весь юзает, шейпит, 300 юзеров и больше - ему начинает плохеть, канал заполняется хуже и хуже...
Пробовал убрать корневой класс - все классы прописать первыми (не imq3-10:264.user , а imq3-264.user) - вообще хреново становится, канал юзается процентов на 5 О_о (мож чего накосячил, таки 1700 файлов sed-ом прошел, хотя вроде норм получилось).
юзерские файлы все стали вида:
cat ./imq3-123.userRATE=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 (собсна речь идет о шейпе мира)...
... хоть бы проца не хватало, аль еще чего - всего навалом :(
>[оверквотинг удален]
>не дало.
>Перебирал типы очередей и их параметры, совсем немного лучше стало (канал юзается
>не на 45% а на 52 ) :(
>Может кто знает, как посмотреть, во что htb упирается, может кто-то знает,
>как правильно тестить при большом количестве классов...
>
>Да, на серваке еще есть iptables+ipset->imq для разделения трафа на мир и UA-IX (собсна речь идет о шейпе мира)...
>
>... хоть бы проца не хватало, аль еще чего - всего навалом
>:(объясните мне зачем вам imq?
Просто дастался в наследство роутер, но там было в несколько раз меньше нагрузка, тянул нормально...
А Вы для линуксового роутера что посоветуете?>
>объясните мне зачем вам imq?
>Просто дастался в наследство роутер, но там было в несколько раз меньше
>нагрузка, тянул нормально...
>А Вы для линуксового роутера что посоветуете?
>
>>
>>объясните мне зачем вам imq?я не понимаю зачем использовать imq, почему нельзя повесить htb прямо на реальные интерфейсы.
приведите вывод tc qdisc sh и tc -s class sh dev {для всех интерфейсов}
Тут получается шейп 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: 52734class 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: 52734class 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: 15212class 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: 16127class 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 {для
>всех интерфейсов}
>[оверквотинг удален]
>
> 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.
ммм... ссылка хороша, есть там рациональное... арбуз :) Пока буду ее разбирать (геморно будет переходить с красивенькой системы в виде файлов). HFSC пока на потом оставлю.
Спасибо.
Как сдюжаю хеширование фильтров, отпишусь.>
>конкретики не скажу, а вот немного попытаюсь посоветовать.
>
>1. учитывая то, что машина занимается исключительно shaping'ом и при этом не
>является vpn сервером я не наблюдаю необходимости использовать imq
>2. такое количество правил НУЖНО упростить, и это расписано тут http://lartc.org/lartc.html#LARTC.ADV-FILTER.HASHING
>3. когда уже всё встанет на места после использования хешей попробовать использовать
>HFSC вместо htb.
Таки лыжи не едут. Для теста сделал коротенький конфиг:
tc qdisc del dev imq0 root
tc qdisc add dev imq0 root handle 1 htb default 10 r2q 4tc qdisc del dev imq1 root
tc qdisc add dev imq1 root handle 1 htb default 10 r2q 4tc qdisc del dev imq2 root
tc qdisc add dev imq2 root handle 1 htb default 110 r2q 10tc qdisc del dev imq3 root
tc qdisc add dev imq3 root handle 1 htb default 110 r2q 15tc 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 256tc 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 10tc 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 10tc 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: 3718class 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: 16127class 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.
а вложенные таблицы фильтров ты сделал?вот несколько ссылок по теме
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. что-же вы, молодой человек никак с гуглём не сдужетесь.
Почитамши доков, нахшил след. схемку (с дрожью жду вечера):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:1016tc 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. что-же вы, молодой человек никак с гуглём не сдужетесь.
здается мне, что никакой хеш тут не поможет. За роутером оказалась сетка на неуправляемых свичах на 800 компов с маской /21, простая однораноговая, глубиной до 7ми свичей по 100 Мбит - чудесный пример ада. ))))
>здается мне, что никакой хеш тут не поможет. За роутером оказалась сетка
>на неуправляемых свичах на 800 компов с маской /21, простая однораноговая,
>глубиной до 7ми свичей по 100 Мбит - чудесный пример ада.
>))))т.е. пользователи сами забивают себе тырнет трафик?
но нагрузка стала меньше или ?
>здается мне, что никакой хеш тут не поможет. За роутером оказалась сетка
>на неуправляемых свичах на 800 компов с маской /21, простая однораноговая,
>глубиной до 7ми свичей по 100 Мбит - чудесный пример ада.
>))))дык опять-же -- ты ведь сам говорил, что если шейпер убрать то скорость вырастает.
Возрастает без шейпа, ибо юзера, сидящие ближе к роутеру, могут разгоняться до немерянных скоростей :). Для эксперимента удвоил всем скорость - возросло потребление в 2 раза, у кого хреново с инетом, у того что с шейпером хреново, что без. Нагрузка заметно не изменилась, но траф идет по классам, для избранных (кто может нормально качать) шейп работает, значит должны хеши работать.>>здается мне, что никакой хеш тут не поможет. За роутером оказалась сетка
>>на неуправляемых свичах на 800 компов с маской /21, простая однораноговая,
>>глубиной до 7ми свичей по 100 Мбит - чудесный пример ада.
>>))))
>
>дык опять-же -- ты ведь сам говорил, что если шейпер убрать то
>скорость вырастает.
>[оверквотинг удален]
>идет по классам, для избранных (кто может нормально качать) шейп работает,
>значит должны хеши работать.
>
>>>здается мне, что никакой хеш тут не поможет. За роутером оказалась сетка
>>>на неуправляемых свичах на 800 компов с маской /21, простая однораноговая,
>>>глубиной до 7ми свичей по 100 Мбит - чудесный пример ада.
>>>))))
>>
>>дык опять-же -- ты ведь сам говорил, что если шейпер убрать то
>>скорость вырастает.хмм....
вобщем рад за тебя
>расписаны классы и т.д. Суммарный 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 в основном не пишется.
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 в основном не пишется.
<>
>Если я не укажу CEIL для юзеров, то он автоматически будет равен
>RATE, а сие не есть допустимо:). CEIL c основного убрал, это
>было бесполезно изначально, так потуги дымящегося мозга:)
>Я не о юзерском CEIL говорил, а о корневом классе, и привел пример как он добавляется
У меня схожая проблема.
Гуглил, читал, пробовал, но пока не добился нужного результата. Видимо, что-то я не так понимаю.Суть такая. Для каждого пользователя создается класс с 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 2tc 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:101tc 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.
>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, конечно.