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

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



В Срд, 16/01/2008 в 16:14 +0300, Stanislav Kruchinin пишет:
> Покотиленко Костик wrote:
> > 
> > есть роутер на котором настроено разделение канала по группам клиентов
> > (HTB). Сейчас в одной группе нужно сделать подгруппу для клиентов и
> > безлимитными пакетами. Для этого им нужно ограничить максимальную
> > скорость.
> > 
> > Вопрос: есть ли дисциплина позволяющая ограничивать максимальную
> > скорость до указанного значения для каждого IP отдельно, так чтобы не
> > нужно было для каждого следующего безлимитчика добавлять класс
> > ограничения?
> 
> Классы обслуживания должны создаваться в любом случае, иначе как тогда 
> будет работать планировщик. Динамическое создание классов по приходу 
> пакета с указанного IP не реализовано.

В iptables есть такой модуль limit, классификатор которого срабатывает,
например, раз в 5 секунд. А есть модуль hashlimit, который делает то же
самое, только, например, для каждого IP отправителя отдельный счётчик.
Это очень красивое решение, оно позволяет одним правилом выставить
честно ограничения, а не так что один пользователь пингует сайт 10 раз в
секунду, а другие не могут вообще.

По аналогии, мне бы TBF, только чтобы hashTBF. Такое есть?

> Много классов -- это не проблема, их можно нагенерировать скриптами 
> сколько угодно. Проблема в том, что для классификации трафика нужно 
> много фильтров, что приводит к расходу процессорного времени, т.к. их 
> нужно обходить при каждом получении пакета. Если будет по одному IP на 
> класс, то лучше всего воспользоваться фильтром fw и модулем IPMARK, либо 
> модулем IPCLASSIFY, который работает напрямую без фильтров tc. Примеры 
> легко ищутся в документациях к модулям. Также в u32 реализованы т.н. 
> хэширующие фильтры (см. lartc.org), но с ними наборы правил будут 
> намного сложнее.

В принципе для каждого пользователя вставлять HTB от 1кбит/с до
128кбит/с на лету, я надеюсь не большая проблема. Вариант принят.

По поводу массивных фильтров. В случае если существует такой шейпер ala
hashTBF, то можно использовать один фильтр по FWMARK для каждого
ограничения (128, 256, 512), а в iptables с помощью ipset (iphash)
проставлять марки. 

В случае если такого нет, вообще всё грусно.

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


Reply to: