Перейти к содержимому
Калькуляторы

Решили использовать ipfw for Linux

 

2.6.32-30

Ununtu 10.04.2

 

Шейпим реальники.

Для каждого человека 2 правила вход и выход и 2 пайпа:

 

#out

ipfw pipe 1 config bw 3000Kbit/s

#in

ipfw pipe 2 config bw 3000Kbit/s

 

ipfw add 1 pipe 1 all from 175.*.*.* to any out

ipfw add 2 pipe 2 all from any to 175.*.*.* in

 

пока что шейпим 150 человек, т.е. 300 пайпов и система по вечерам тормозит - чем больше пайпов, тем более, ksoftirqd уходит в 100%.

 

кто-нибудь сталкивался с таким, может подкрутить какой параметр?

Изменено пользователем Zohan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Трафик максимум 250 Мбит.

 

Машина с 2-мя Ксеонами каждый по 4 ядра.

 

Загружен 2 ядра. smp_afinity не помогает.

ipfw что-то сильно лопатит - очищаю правила и машина спокойно пропускает 2 Гбита.

 

Тюнинг ipfw такой:

 

echo "1" > /sys/module/ipfw_mod/parameters/io_fast

echo "10240" > /sys/module/ipfw_mod/parameters/hash_size

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для каждого человека 2 правила вход и выход и 2 пайпа:

Используйте таблицы и маски.

Будет два правила, две таблицы с IP-адресами+номерами пайпов, и по пайпу на каждую входящую и исходящую скорость.

Образец смотрите здесь:

http://forum.nag.ru/forum/index.php?showtopic=54379

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для каждого человека 2 правила вход и выход и 2 пайпа:

Используйте таблицы и маски.

Будет два правила, две таблицы с IP-адресами+номерами пайпов, и по пайпу на каждую входящую и исходящую скорость.

Образец смотрите здесь:

http://forum.nag.ru/forum/index.php?showtopic=54379

 

Наример, вот так:

 

 

ipfw add pipe tablearg ip from any to table(1) in

ipfw add pipe tablearg ip from table(2) to any out

 

ipfw pipe 1000 config bw 512Kbit/s mask dst-ip 0xffffffff

ipfw pipe 1001 config bw 512Kbit/s mask src-ip 0xffffffff

 

ipfw table 1 add 175.2.2.1 1000

ipfw table 2 add 175.2.2.1 1001

 

и дальше только создаем для каждого абонента по 2 пайпа и добавляем его адрес в обе таблицы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

и дальше только создаем для каждого абонента по 2 пайпа и добавляем его адрес в обе таблицы?

По пайпу на каждую входящую (mask dst-ip) и каждую исходящую (src-ip) скорость, а не на каждого клиента.

Клиентские пайпы будут создаваться автоматически.

 

Рекомендуется настроить sysctl:

net.inet.ip.dummynet.hash_size=2048

net.inet.ip.dummynet.io_fast=1

Названия для FreeBSD, в Линукс-версии могут отличаться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Простите а чем tc не устроил? Почему ipfw? Очень интерестная связка, сколько с линукосм дружу но такого гибрита еще не встречал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Простите а чем tc не устроил? Почему ipfw?

http://forum.nag.ru/forum/index.php?showtopic=61118

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

и дальше только создаем для каждого абонента по 2 пайпа и добавляем его адрес в обе таблицы?

По пайпу на каждую входящую (mask dst-ip) и каждую исходящую (src-ip) скорость, а не на каждого клиента.

Клиентские пайпы будут создаваться автоматически.

 

Рекомендуется настроить sysctl:

net.inet.ip.dummynet.hash_size=2048

net.inet.ip.dummynet.io_fast=1

Названия для FreeBSD, в Линукс-версии могут отличаться.

 

В понедельник попробую и отпишусь о результатах :)

Кстати, новые версии ipfw for Linux здесь - http://info.iet.unipi.it/~marta/dummynet/

последняя от 4 апреля http://info.iet.unipi.it/~marta/dummynet/ipfw3-20110404.tar.gz

Изменено пользователем Zohan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

и дальше только создаем для каждого абонента по 2 пайпа и добавляем его адрес в обе таблицы?

По пайпу на каждую входящую (mask dst-ip) и каждую исходящую (src-ip) скорость, а не на каждого клиента.

Клиентские пайпы будут создаваться автоматически.

 

Рекомендуется настроить sysctl:

net.inet.ip.dummynet.hash_size=2048

net.inet.ip.dummynet.io_fast=1

Названия для FreeBSD, в Линукс-версии могут отличаться.

 

А если практически у каждого пользователя своя скорость?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Простите а чем tc не устроил? Почему ipfw?

http://forum.nag.ru/forum/index.php?showtopic=61118

iptables с блеском решает такие задачи, зачем пробовать что-то портированое не понимаю...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

iptables с блеском решает такие задачи, зачем пробовать что-то портированое не понимаю...

Когда идёте по ссылке, не ограничивайтесь прочтением заголовка.

Там сравниваются не только nat, но и шейперы.

iptables решает задачу шейпирования? с блеском? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А если практически у каждого пользователя своя скорость?

Так не бывает. Бывает некоторый набор тарифных скоростей, на каждом тарифе некоторое количество пользователей.

> sudo ipfw pipe list | perl -e '$a=0; $b=0; while(<>) {
/\d+ buckets (\d+) active/ or next; ++$a; $b += $1 } print "$a speeds, $b pipes.\n"'
49 speeds, 2188 clients.

Изменено пользователем Ilya Evseev

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как уже говорилось, прежде всего следует сделать правила с динамическими пайпами (где mask dst-ip/mask src-ip). Если нужно остаться на ipfw/dummynet, то проще поставить другую версию FreeBSD или поменять железо.

 

Для шейпинга нативными средствами Linux есть такое решение: http://forum.nag.ru/forum/index.php?showtopic=48301

iptables и ipset не нужны, если на машине оставить только шейпинг и использовать фильтры u32.

Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

photon, в dummynet производительность достигается за счет динамических труб, масок, таблиц, а за счет чего это достигается в sc через tc?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Динамические пайпы по сути являются методом классификации трафика, при котором динамически строятся хэш-таблицы вида IP => pipe number. За счет этого время, потраченное на классификацию, не зависит от количества IP-адресов и пакетрейта. В Linux используется аналогичный подход: там тоже хэши, но их надо создавать вручную, и при этом правила tc значительно сложнее. Для решения этой проблемы нужно было написать какую-то прослойку, генерирующую такие правила.

Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А если практически у каждого пользователя своя скорость?

Так не бывает. Бывает некоторый набор тарифных скоростей, на каждом тарифе некоторое количество пользователей.

> sudo ipfw pipe list | perl -e '$a=0; $b=0; while(<>) {
/\d+ buckets (\d+) active/ or next; ++$a; $b += $1 } print "$a speeds, $b pipes.\n"'
49 speeds, 2188 clients.

 

Ilya Evseev, photon - а плюс к динамическим пайпам

обычные правила для подсчета трафика аля:

 

ipfw add 1000 pass ip from 175.2.2.1 to any

ipfw add 1001 pass ip from any to 175.2.2.1

 

и так для каждого абонента будут напрягать систему?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для динамических пайпов правила с pass не нужны, если мы уже разрешили трафик для всех IP, находящихся в таблицах. Подсчет трафика следует делать на другой машине (border gateway с Netflow-коллектором). Про Netflow -- отдельный разговор.

Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для динамических пайпов правила с pass не нужны, если мы уже разрешили трафик для всех IP, находящихся в таблицах. Подсчет трафика следует делать на другой машине (border gateway с Netflow-коллектором). Про Netflow -- отдельный разговор.

Я в курсе что не нужны разрешающие правила :) - мы их создаем для подсчета трафика - 2*кол-во_абонентов, трафик просто пробегающий по ним будет сильно нагружать систему или нет?

 

Или есть другие кроме Netflow-коллектора способы подсчета трафика?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вы по счетчикам в правилах ipfw считаете что-ли? Конечно это сильно нагружает систему и к тому же ненадежно. Провайдеры для счета трафика обычно используют Netflow, т.к. полицаям надо предоставлять информацию о том, когда и на какие IP заходил тот или иной человек.

Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Zohan Зависит от количества клиентов. При большом будет грузить, при очень большом будет очень грузить. У меня, где надо считать только объем, пользуются теже pipe, но без ограничения по скорости (и net.inet.ip.dummynet.expire=0 есесено)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вы по счетчикам в правилах ipfw считаете что-ли? Конечно это сильно нагружает систему и к тому же ненадежно. Провайдеры для счета трафика обычно используют Netflow.

Да, именно так, считаем правилами :( А если в правилах использовать констукцию типа skipto?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

скип ту улучшит ситуацию, но все равно количество правил имеет значение. правила просматриваются ВСЕ до сработавшего на вылет. Если в 1 правиле стоит скито 65000 то все правила от 1 до 65000 просмотрятся (но только в плане номера, что быстрее, чем полностью правило проверять, но это не скип в чистом виде)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Решили снимать по Netflow с Циски в ядре сети :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Решили снимать по Netflow с Циски в ядре сети :)

Лучше ipfw ngtee + ng_netflow на FreeBSD.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Лучше ipfw ngtee + ng_netflow на FreeBSD.

Если Cisco потянет, то почему бы нет. В случае FreeBSD будет еще лучше не копировать трафик с помощью ng_tee, а сделать как показано на схеме 7: http://alexandr.sysoev.ru/node/112

Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.