Re: Ограничение максимальной скорости по IP
В Чтв, 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
В Срд, 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
В Чтв, 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
В Чтв, 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
В Чтв, 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
В Срд, 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]