LINUX.ORG.RU
ФорумAdmin

почему не работает приоритизация трафика tc htb?


0

1

После применения правил все пакеты раскладываются в нужные классы. Но почему то торренты больше 1мбит не выдают и веб иногда на уровне 18мбит (через 5 мин после старта, если удалить eth0 root правило, то сразу норм). 25мбит канал у меня, сами понимаете, что для нормальной жизни без приоритизации на таком узком канале не прожить. Что делать?

P.S. про l7, p2p грабинг пакетов через iptables тож знаю. и знаю, что торрент может на порт тут указанный (jabber-порт(5222) или 80, например) подключиться и попасть не в свой фильтр. Но пока не надо, пока бы с этим разобраться.
P.P.S. фишка не в том, чтобы шейпить, а в том, чтобы делать приоритизацию! т.е. надо, чтобы любой класс мог себе забрать столько канала, сколько свободно (в низком приоритете) или столько, сколько может выдать канал/сервер при выском приоритете.

Для нетелепатов:
tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1: htb default 3
#пингам максимальный приоритет.
tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 100mbit prio 1
#Вебу средний
tc class add dev eth0 parent 1: classid 1:2 htb rate 50mbit ceil 100mbit prio 2
#Остальное (торренты и прочая ересь). Остальному - 1мбит+что останется. Минимальный приоритет.
tc class add dev eth0 parent 1: classid 1:3 htb rate 1mbit ceil 100mbit prio 3

#пинги
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:1

#HTTP
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:2

#jabber, samba, ssh, ftp, telnet
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip protocol 6 0xff match ip sport 5222 0xffff flowid 1:1
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip protocol 6 0xff match ip sport 5223 0xffff flowid 1:1
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip protocol 6 0xff match ip sport 5190 0xffff flowid 1:1
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip protocol 6 0xff match ip sport 139 0xffff flowid 1:1
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip protocol 6 0xff match ip sport 445 0xffff flowid 1:1
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:1
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip protocol 6 0xff match ip sport 23 0xffff flowid 1:1
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip protocol 6 0xff match ip sport 21 0xffff flowid 1:1

Канал 25 Мбит, поэтому создаём три коневых класса, два по 1 Мбит и один 50 Мбит, то есть 52 Мбит в сумме, каждому разрешаем до 100 Мбит, то есть до 300 Мбит. Вобще не понятно, как что-то работает. Делайте по нормальному, один корневой класс с rate/ceil 25 Мбит и потомки с rate 1, 23, 1 Мбит.

mky ★★★★★ ()
Ответ на: комментарий от mky

фишка не в том, чтобы шейпить, а в том, чтобы делать приоритизацию! т.е. надо, чтобы любой класс мог себе забрать столько канала, сколько свободно (в низком приоритете) или столько, сколько может выдать канал/сервер при выском приоритете.

ktulhu666 ☆☆☆ ()
Ответ на: комментарий от ktulhu666

> т.е. надо, чтобы любой класс мог себе забрать столько канала, сколько свободно (в низком приоритете) или столько, сколько может выдать канал/сервер при выском приоритете.

Именно для этого htb и сществует. Создайте. как рекомендуют, корневой класс с пропускной способностью 25мбит/с - 5-10%
И потом внутри этого корневого класса посоздавайте потомков с минимальной гарантированной скоростью (пусть будет 1kbit/s) и максимальной, равной родительскому классу минус минимальные скорости других подклассов.. короче, в идеале всё как в бухгалтерии должно сойтись и не должно превысиьт максимальную щирину родительского класса. Ну а очерёдность «раздвигания» ширины канала классами задаётся в параметре prio.

Slavaz ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.