Zohan Опубликовано 8 апреля, 2011 (изменено) · Жалоба Решили использовать 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%. кто-нибудь сталкивался с таким, может подкрутить какой параметр? Изменено 8 апреля, 2011 пользователем Zohan Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Zohan Опубликовано 8 апреля, 2011 · Жалоба Трафик максимум 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 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 8 апреля, 2011 · Жалоба Для каждого человека 2 правила вход и выход и 2 пайпа: Используйте таблицы и маски. Будет два правила, две таблицы с IP-адресами+номерами пайпов, и по пайпу на каждую входящую и исходящую скорость. Образец смотрите здесь: http://forum.nag.ru/forum/index.php?showtopic=54379 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Zohan Опубликовано 8 апреля, 2011 · Жалоба Для каждого человека 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 пайпа и добавляем его адрес в обе таблицы? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 8 апреля, 2011 · Жалоба и дальше только создаем для каждого абонента по 2 пайпа и добавляем его адрес в обе таблицы? По пайпу на каждую входящую (mask dst-ip) и каждую исходящую (src-ip) скорость, а не на каждого клиента. Клиентские пайпы будут создаваться автоматически. Рекомендуется настроить sysctl: net.inet.ip.dummynet.hash_size=2048 net.inet.ip.dummynet.io_fast=1 Названия для FreeBSD, в Линукс-версии могут отличаться. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sp!ZER Опубликовано 9 апреля, 2011 · Жалоба Простите а чем tc не устроил? Почему ipfw? Очень интерестная связка, сколько с линукосм дружу но такого гибрита еще не встречал. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 9 апреля, 2011 · Жалоба Простите а чем tc не устроил? Почему ipfw? http://forum.nag.ru/forum/index.php?showtopic=61118 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Zohan Опубликовано 9 апреля, 2011 (изменено) · Жалоба и дальше только создаем для каждого абонента по 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 Изменено 9 апреля, 2011 пользователем Zohan Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Zohan Опубликовано 10 апреля, 2011 · Жалоба и дальше только создаем для каждого абонента по 2 пайпа и добавляем его адрес в обе таблицы? По пайпу на каждую входящую (mask dst-ip) и каждую исходящую (src-ip) скорость, а не на каждого клиента. Клиентские пайпы будут создаваться автоматически. Рекомендуется настроить sysctl: net.inet.ip.dummynet.hash_size=2048 net.inet.ip.dummynet.io_fast=1 Названия для FreeBSD, в Линукс-версии могут отличаться. А если практически у каждого пользователя своя скорость? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Zaqwr Опубликовано 10 апреля, 2011 · Жалоба Простите а чем tc не устроил? Почему ipfw? http://forum.nag.ru/forum/index.php?showtopic=61118 iptables с блеском решает такие задачи, зачем пробовать что-то портированое не понимаю... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 10 апреля, 2011 · Жалоба iptables с блеском решает такие задачи, зачем пробовать что-то портированое не понимаю... Когда идёте по ссылке, не ограничивайтесь прочтением заголовка. Там сравниваются не только nat, но и шейперы. iptables решает задачу шейпирования? с блеском? :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 10 апреля, 2011 (изменено) · Жалоба А если практически у каждого пользователя своя скорость? Так не бывает. Бывает некоторый набор тарифных скоростей, на каждом тарифе некоторое количество пользователей. > 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. Изменено 10 апреля, 2011 пользователем Ilya Evseev Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 10 апреля, 2011 (изменено) · Жалоба Как уже говорилось, прежде всего следует сделать правила с динамическими пайпами (где mask dst-ip/mask src-ip). Если нужно остаться на ipfw/dummynet, то проще поставить другую версию FreeBSD или поменять железо. Для шейпинга нативными средствами Linux есть такое решение: http://forum.nag.ru/forum/index.php?showtopic=48301 iptables и ipset не нужны, если на машине оставить только шейпинг и использовать фильтры u32. Изменено 10 апреля, 2011 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Zohan Опубликовано 11 апреля, 2011 · Жалоба photon, в dummynet производительность достигается за счет динамических труб, масок, таблиц, а за счет чего это достигается в sc через tc? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 11 апреля, 2011 (изменено) · Жалоба Динамические пайпы по сути являются методом классификации трафика, при котором динамически строятся хэш-таблицы вида IP => pipe number. За счет этого время, потраченное на классификацию, не зависит от количества IP-адресов и пакетрейта. В Linux используется аналогичный подход: там тоже хэши, но их надо создавать вручную, и при этом правила tc значительно сложнее. Для решения этой проблемы нужно было написать какую-то прослойку, генерирующую такие правила. Изменено 11 апреля, 2011 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Zohan Опубликовано 11 апреля, 2011 · Жалоба А если практически у каждого пользователя своя скорость? Так не бывает. Бывает некоторый набор тарифных скоростей, на каждом тарифе некоторое количество пользователей. > 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 и так для каждого абонента будут напрягать систему? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 11 апреля, 2011 (изменено) · Жалоба Для динамических пайпов правила с pass не нужны, если мы уже разрешили трафик для всех IP, находящихся в таблицах. Подсчет трафика следует делать на другой машине (border gateway с Netflow-коллектором). Про Netflow -- отдельный разговор. Изменено 11 апреля, 2011 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Zohan Опубликовано 11 апреля, 2011 · Жалоба Для динамических пайпов правила с pass не нужны, если мы уже разрешили трафик для всех IP, находящихся в таблицах. Подсчет трафика следует делать на другой машине (border gateway с Netflow-коллектором). Про Netflow -- отдельный разговор. Я в курсе что не нужны разрешающие правила :) - мы их создаем для подсчета трафика - 2*кол-во_абонентов, трафик просто пробегающий по ним будет сильно нагружать систему или нет? Или есть другие кроме Netflow-коллектора способы подсчета трафика? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 11 апреля, 2011 (изменено) · Жалоба Вы по счетчикам в правилах ipfw считаете что-ли? Конечно это сильно нагружает систему и к тому же ненадежно. Провайдеры для счета трафика обычно используют Netflow, т.к. полицаям надо предоставлять информацию о том, когда и на какие IP заходил тот или иной человек. Изменено 11 апреля, 2011 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
st_re Опубликовано 11 апреля, 2011 · Жалоба Zohan Зависит от количества клиентов. При большом будет грузить, при очень большом будет очень грузить. У меня, где надо считать только объем, пользуются теже pipe, но без ограничения по скорости (и net.inet.ip.dummynet.expire=0 есесено) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Zohan Опубликовано 11 апреля, 2011 · Жалоба Вы по счетчикам в правилах ipfw считаете что-ли? Конечно это сильно нагружает систему и к тому же ненадежно. Провайдеры для счета трафика обычно используют Netflow. Да, именно так, считаем правилами :( А если в правилах использовать констукцию типа skipto? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
st_re Опубликовано 11 апреля, 2011 · Жалоба скип ту улучшит ситуацию, но все равно количество правил имеет значение. правила просматриваются ВСЕ до сработавшего на вылет. Если в 1 правиле стоит скито 65000 то все правила от 1 до 65000 просмотрятся (но только в плане номера, что быстрее, чем полностью правило проверять, но это не скип в чистом виде) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Zohan Опубликовано 11 апреля, 2011 · Жалоба Решили снимать по Netflow с Циски в ядре сети :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 11 апреля, 2011 · Жалоба Решили снимать по Netflow с Циски в ядре сети :) Лучше ipfw ngtee + ng_netflow на FreeBSD. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 11 апреля, 2011 (изменено) · Жалоба Лучше ipfw ngtee + ng_netflow на FreeBSD. Если Cisco потянет, то почему бы нет. В случае FreeBSD будет еще лучше не копировать трафик с помощью ng_tee, а сделать как показано на схеме 7: http://alexandr.sysoev.ru/node/112 Изменено 11 апреля, 2011 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...