[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [SOLVED] Ограничение максимальной скорости по IP



В Чтв, 31/01/2008 в 13:14 -0500, Nicholas пишет:
> Покотиленко Костик wrote:
> > - Добавляем только ещё один HTB класс со скоростью, например 1kbit/s -
> > это для приземления превышения скорости.
> 
> Логичнее дать каждому пользователю соразмерную минимально 
> гарантированную (rate) и максимальную (ceil) ширину канала.
> (rate 64kbps ceil 128kbps, как вариант)

Так сложнее получается. Чем мне не нравится править классы HTB, так это
постоянным пересчётом a1=a11+a12+a13... Конечно, понятно, что это один
раз надо сделать, но, опять же, придётся забить кучу классов, большая
часть из которых будет простаивать, а следовательно, придётся ещё думать
как не используемую ширину канала одалживать классу обычных
пользователей, например.

К тому же человеку заводящему клиентов в биллинг нужно будет постоянно
помнить кому какие IP давать. А так он назначил тариф 128+ или 256+ и
забыл.

Хотя, конечно, ваш вариант - тоже вариант.

> >> Вопрос: есть ли дисциплина позволяющая ограничивать максимальную
> >> скорость до указанного значения для каждого IP отдельно,
> 
> Возможно стоить выдавать анлимитчикам ip из определенной подсети и 
> заранее сделать правила  для всех (каждого) ip этой подсети.
> (клас, дисциплина и фильтры входящий/исходящий - по 4 правила)
> 
> Процесс можно автоматизировать, примерно, так:
> 
> echo "tc qdisc add dev eth0 root handle 1: htb default" > tc.conf
> 
> 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;
> 
> for i in `seq 1 254`; do echo "tc qdisc add dev eth0 parent 1:$i handle 
> $i: sfq perturb 10" >> tc.conf; done;
> 
> for i in `seq 1 254`; do echo "tc filter add dev eth0 parent 1: protocol 
> ip prio 1 u32 match ip src xx.xx.xx.$i flowid 1:$i" >> tc.conf; done;
> 
> for i in `seq 1 254`; do echo "tc filter add dev eth0 parent 1: protocol 
> ip prio 1 u32 match ip dst xx.xx.xx.$i flowid 1:$i" >> tc.conf; done;
> 
> 
> Если вы будете использовать openvpn для авторизации, то eth0 можно 
> заменить на tap0
> 
> Кроме того, если вы используете дисциплину htb, удобно с ее подружить с 
> rrd и смотреть графики нагрузки по ip.

Для авторизации используется биллинг со встроенной функцией авторизации
+ у клиентов в трее висит клиент-авторизатор.

Графики по каждому клиенту рисовать часто - это сильно ресурсоёмко. А не
часто смысла нет, так как эту статистику биллинг ведёт.

Спасибо за то что поделились опытом.

-- 
Покотиленко Костик <casper@meteor.dp.ua>


Reply to: