LINUX.ORG.RU

Нужна помощь с HTB


0

0

Задача - есть канал, подключенный к линукс-роутеру при помощи Ethernet. Макс скорость локалки - 1mbps, мне нужно дать какому то конкретному айпишнику гарантированную полосу пропусканися (имеется ввиду полосу от сервера в локалку), а остальная полоса отдавалась всей оставшейся сети. Но если этот определенный айпи не проявляет никакой активности - чтобы его полоса так же отдавалась остальным. Создаю шейпер:

tc qdisc add dev eth1 root handle 1: htb
tc class add dev eth1 parent 1 classid 1:1 htb rate 1mbps
tc class add dev eth1 parent 1:1 classid 1:11 htb rate 64kbps ceil 64kbps prio 1
tc class add dev eth1 parent 1:1 classid 1:12 htb rate 1mbps prio 2
tc filter add dev eth1 protocol ip prio 1 u32 match ip dst 192.168.54.18 flowid 1:11
tc filter add dev eth1 protocol ip prio 2 u32 match ip dst 192.168.0.0/16 flowid 1:12

несмотря что класс 1:11 имеет приоритет 1, и ceil 64kpps - если кто то начинает что то качать - скорость к 192.168.54.18 падает почти до нуля.

anonymous

P.S. Сорри за апичатки ;)

anonymous
()

И еще вопрос - допустим, как в данном случае, имеется полоса 1мбит, есть 2 класса, 1 - на 64кбит, 2 на 1мбит, - возможно ли чтобы если класс на мегабит полностью забит, тот что на 64к - мог "насильно" забирать полосу?

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

хм, исправил mbps на mbit и kbps на kbit - всеравно не помогает

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

перед тем как задать вопрос тут - я прочитал документацию на опеннете, при этом перепробовал множество вариантов, с подклассами, например pfifo, sfq и т.п., но когда вижу что пинги так и остаются больше 1000мс, кажется что то не так...

anonymous
()

> имеется ввиду полосу от сервера в локалку
Хм... А это как ? Нельзя ли по конкретнее написать где находится тот IP, которому нужно выделить эту полосу, по отношению к router-у и локалке. Может нужно ограничивать ориентируясь не на скорость локалки, а на скорость канала ?

> я прочитал документацию
Плохо читали, либо читали, но не ту, которая нужна :-)

> возможно ли чтобы если класс на мегабит полностью забит, тот что на 64к - мог "насильно" забирать полосу?
Для того, чтоб кто-то имел право "насильно" забрать полосу, она должна быть описана для этого "кого-то" как гарантированная (параметр rate). Это необходимое условие, но не достаточное: нужно еще, чтоб другие классы смогли отдать эту полосу, т.е. чтоб эти 64kbit не являлись гарантированной полосой других классов ! Иначе они будут "драться" за нее, и полоса распределится пропорционально в зависимости от их rate, + приоритеты классов (пока в очереди есть пакеты будет обрабатываться класс с большим приоритетом (меньшим prio)).
Вывод: для решения вашей задачи нужны
родительский класс - rate=1mbit, ceil=1mbit
класс1 - rate=64kbit, ceil=64kbit
класс2 - rate=960kbit, ceil=1mbit (960=1024-64)

tc qdisc add dev eth1 root handle 1: htb

tc class add dev eth1 parent 1:0 classid 1:1 htb rate 1mbit ceil 1mbit
tc class add dev eth1 parent 1:1 classid 1:11 htb rate 64kbit ceil 64kbit prio 1
tc class add dev eth1 parent 1:1 classid 1:12 htb rate 960kbit ceil 1mbit prio 2

tc filter add dev eth1 protocol ip prio 1 u32 match ip dst 192.168.54.18 flowid 1:11
tc filter add dev eth1 protocol ip prio 2 u32 match ip dst 192.168.0.0/16 flowid 1:12

tc qdisc add dev eth1 parent 1:11 handle 11:0 pfifo limit 20
tc qdisc add dev eth1 parent 1:12 handle 12:0 pfifo limit 20

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

а если имеется как в данном случае "общая" неиспользованная полоса, и есть классы которые могут ее занимать, какому классу она будет отдаваться сначала? или всем поровну? или в зависимости от приоритета?

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

На 100% точно уже не скажу, т.к. разные тонкости уже не помню, но рекомендую почитать тут (так сказать первоисточник):
User guide - http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm
Теория - http://luxik.cdi.cz/~devik/qos/htb/manual/theory.htm
FAQ - http://luxik.cdi.cz/~devik/qos/htb/htbfaq.htm
(http://luxik.cdi.cz/~devik/qos/htb/)
Думаю тут должно быть написано.

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