Re: [SOLVED] Ограничение максимальной скорости по IP
В Птн, 01/02/2008 в 09:37 -0500, Nicholas пишет:
> Покотиленко Костик wrote:
> > Так сложнее получается. Чем мне не нравится править классы HTB, так это
> > постоянным пересчётом a1=a11+a12+a13... Конечно, понятно, что это один
> > раз надо сделать, но,
>
> каждая команда делает 256 правил автоматом (`seq 1 254` - для примера )
>
> for i in `seq 1 254`; do echo "tc class add dev eth0 parent 1: classid
> 1:$i htb rate 64kbps ceil 128kbps burst 150k" >> tc.conf; done;
>
> > опять же, придётся забить кучу классов, большая
> > часть из которых будет простаивать, а следовательно, придётся ещё думать
> > как не используемую ширину канала одалживать
>
> это делает htb автоматом - вы можете указать каждому клиенту свою
> минимальную и максимальную ширину, можно максимальную не указывать
> (ceil) - htb разделит дополнительную скорость пропорционально.
> Если суммарная выделенная клиентам ширина канала, наоборот, больше
> реальной - htb тоже все пересчитает пропорционально (при нагрузке, а
> пока клиентов мало всем даст столько сколько в правиле для клиента
> прописанно).
>
> Вы можете делать "деревья" - root сделать 1:, первую ветвь 1:888 для
> обычных поьзователей и вторую для анлимит 1:777
>
> http://www.opennet.ru/docs/RUS/LARTC/x1075.html#THEQDISCFAMILYROOTSHANDLESSIBLINGSANDPARENTS
>
>
> tc qdisc add dev eth0 root handle 1: htb default 1
>
> tc class add dev eth0 parent 1: classid 1:9999 htb rate 2mbit burst 15k
>
> tc class add dev eth0 parent 1:9999 classid 1:888 htb rate 1mbit ceil
> 1mbit burst 15k
> tc class add dev eth0 parent 1:9999 classid 1:777 htb rate 1mbit ceil
> 1mbit burst 15k
>
>
> и определять общую скорость для всех пользователей группы + для каждого
> пользователя в группе.
>
> tc class add dev eth0 parent 1:777 classid 1:71 htb rate 128kbit ceil
> 256kbit burst 15k
> ...
> tc class add dev eth0 parent 1:777 classid 1:7254 htb rate 128kbit ceil
> 256kbit burst 15k и т.д.
>
> в этом примере комада для создания правила будет тоже с семеркой перед
> "номером хоста" (1-254)
> for i in `seq 1 254`; do echo "tc class add dev eth0 parent 1:777
> classid 1:7$i htb rate 128kbps ceil 256kbps burst 150k" >> tc.conf; done;
>
> надо сказать что 4 правила для каждого из 255 ip для двух подситей
> (4*255*2=2040) совсем не "грузят" htb.
>
> С уважением, Николай.
>
> PS
>
> rrd tool как раз и ведет статистику, а графики рисует по требованию.
> Основная идея - снимать статистику удобнее именно tc (htb) - наименее
> затратный и наиболее точный способ (так как это не "грузит" процессор вы
> можете ее снимать как угодно часто).
>
> tc -s -d qdisc show dev eth0
Принцип ясен, спасибо за пример!
--
Покотиленко Костик <casper@meteor.dp.ua>
Reply to: