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

2008-01-18 Пенетрантность Покотиленко Костик
В Чтв, 17/01/2008 в 15:09 -0500, Nicholas пишет:
 Покотиленко Костик wrote:
 
  Мало того HANDLE не может быть больше ::999 :(( ППЦ.
 
 , и это на каждый parent, umho.

Таки там шестнадцатеричные числа, но только 3 разряда, то есть до FFF
(4095).

-- 
Покотиленко Костик [EMAIL PROTECTED]


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



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

2008-01-17 Пенетрантность Покотиленко Костик
В Срд, 16/01/2008 в 20:40 -0500, Nicholas пишет:
 Stanislav Kruchinin wrote:
  Если будет по одному IP на 
  класс, то лучше всего воспользоваться фильтром fw и модулем IPMARK, либо 
  модулем IPCLASSIFY, который работает напрямую без фильтров tc. Примеры 
  легко ищутся в документациях к модулям. Также в u32 реализованы т.н. 
  хэширующие фильтры (см. lartc.org), но с ними наборы правил будут 
  намного сложнее.
 
 Вы могли бы подсказать, есть ли преимущества IPMARK либо IPCLASSIFY 
 перед u32 ?
 При каком количестве фильтров это может начать проявляться на практике и 
 как это можно посчитать теоретически ?

Про разницу массового фильтрования в iptables и посредством tc filter
попробую объяснить на пальцах.

  - tc filter использует линейный список фильтров, в iptables можно
построить в виде дерева;
  - tc filter имеет ограниченное число критериев сравнения по сравнению
с iptables;
  - в iptables легче добавлять правила динамически, если выстроить
древовидную структуру.

То есть, если сегодня Вам нужно фильтровать только по IP, tc filter
подойдёт. А завтра понадобится фильтровать в зависимости от фазы луны и
придётся слезать на iptables :)

-- 
Покотиленко Костик [EMAIL PROTECTED]


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



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

2008-01-17 Пенетрантность Покотиленко Костик
В Чтв, 17/01/2008 в 16:10 +0300, Stanislav Kruchinin пишет:
 Покотиленко Костик wrote:
  
  Про разницу массового фильтрования в iptables и посредством tc filter
  попробую объяснить на пальцах.
  
- tc filter использует линейный список фильтров, в iptables можно
  построить в виде дерева;
 
 Наоборот. Деревья фильтров можно (с трудом) строить в u32. IPCLASSIFY 
 просто вычисляет номер класса из IP-адреса, т.е. фактически строит хэш 
 вида IP = class. IPMARK таким же образом маркирует пакеты.

- tc filter имеет ограниченное число критериев сравнения по сравнению
  с iptables;
  
  То есть, если сегодня Вам нужно фильтровать только по IP, tc filter
  подойдёт. А завтра понадобится фильтровать в зависимости от фазы луны и
  придётся слезать на iptables :)
  
 
 Фильтр u32 работает с любыми полям пакета, в отличие от 
 IPMARK/IPCLASSIFY, которые читают только IP источника или назначения.

Вы про какие IPMARK/IPCLASSIFY говорите? Если про те, что в iptables -j
CLASSIFY --set-class MAJOR:MINOR и -j MARK --set-mark value, то что
значит которые читают только...? Они ничего не читают, читает
iptables посредством разных модулей, у которых есть возможность
фильтровать не только IP источника или назначения, а так же по MAC
адресам, оригинальным адресам (до/после работы SNAT/DNAT), протоколам,
портам, портам моста, PID'у локальной программы, состоянию conntrack и
многим другим критериям.

-- 
Покотиленко Костик [EMAIL PROTECTED]


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



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

2008-01-17 Пенетрантность Покотиленко Костик
В Чтв, 17/01/2008 в 20:25 +0200, Покотиленко Костик пишет:
 В Чтв, 17/01/2008 в 20:14 +0300, Stanislav Kruchinin пишет:
  Покотиленко Костик wrote:
   
   Вы про какие IPMARK/IPCLASSIFY говорите? Если про те, что в iptables
   -j CLASSIFY --set-class MAJOR:MINOR и -j MARK --set-mark value,
   то что значит которые читают только...? Они ничего не читают,
   читает iptables посредством разных модулей, у которых есть
   возможность фильтровать не только IP источника или назначения, а
   так же по MAC адресам, оригинальным адресам (до/после работы
   SNAT/DNAT), протоколам, портам, портам моста, PID'у локальной
   программы, состоянию conntrack и многим другим критериям.
   
  
  Я говорю о модулях IPMARK и IPCLASSIFY, которые заменяют кучу правил с
  -j MARK и -j CLASSIFY, соответственно, и работают только для IP
  источника и назначения.
  http://www.netfilter.org/projects/patch-o-matic/pom-external.html
  http://ipclassify.relef.net/docs.html
 
 Сори, о IPMARK и IPCLASSIFY не знал. Однако, мне они не помогут.
 
 На счёт tc filter - ещё один большой минус - если фильтры вставляются
 динамически, их тяжело удалять. Если команду tc filter add ..., с
 помощью которой вставлялся фильтр просто заменить на tc filter del ...
 то удалятся все фильтры с тем же приоритетом. И тут приходится генерить
 HANDLE'ы, запоминать их, и по ним только удалять - ГЕМОР.

Мало того HANDLE не может быть больше ::999 :(( ППЦ.

-- 
Покотиленко Костик [EMAIL PROTECTED]


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



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

2008-01-17 Пенетрантность Покотиленко Костик
В Чтв, 17/01/2008 в 20:14 +0300, Stanislav Kruchinin пишет:
 Покотиленко Костик wrote:
  
  Вы про какие IPMARK/IPCLASSIFY говорите? Если про те, что в iptables
  -j CLASSIFY --set-class MAJOR:MINOR и -j MARK --set-mark value,
  то что значит которые читают только...? Они ничего не читают,
  читает iptables посредством разных модулей, у которых есть
  возможность фильтровать не только IP источника или назначения, а
  так же по MAC адресам, оригинальным адресам (до/после работы
  SNAT/DNAT), протоколам, портам, портам моста, PID'у локальной
  программы, состоянию conntrack и многим другим критериям.
  
 
 Я говорю о модулях IPMARK и IPCLASSIFY, которые заменяют кучу правил с
 -j MARK и -j CLASSIFY, соответственно, и работают только для IP
 источника и назначения.
 http://www.netfilter.org/projects/patch-o-matic/pom-external.html
 http://ipclassify.relef.net/docs.html

Сори, о IPMARK и IPCLASSIFY не знал. Однако, мне они не помогут.

На счёт tc filter - ещё один большой минус - если фильтры вставляются
динамически, их тяжело удалять. Если команду tc filter add ..., с
помощью которой вставлялся фильтр просто заменить на tc filter del ...
то удалятся все фильтры с тем же приоритетом. И тут приходится генерить
HANDLE'ы, запоминать их, и по ним только удалять - ГЕМОР.

P.S. я вроде придумал как решить свою проблему, проверю, напишу.

-- 
Покотиленко Костик [EMAIL PROTECTED]


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



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

2008-01-16 Пенетрантность Покотиленко Костик
В Срд, 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)
проставлять марки. 

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

-- 
Покотиленко Костик [EMAIL PROTECTED]


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]