Droid Опубликовано 11 мая, 2008 · Жалоба Подскажите, чем лучше шейпить соединения на 64 - 512 Кб\сек. На данный момент все работает под FreeBSD 7 (ipfw+dummynet). Все бы ничего, но вот стали появляться большие задержки при прохождении файрвола (иногда по 300 мс), что очень не приятно. Сейчас таких правил больше 150 штук. Если расширить пайп скажем до 4Мб\с, то задержки на файрволе практически пропадают. Характеристики компа: FreeBSD 7.0-STABLE CPU: Intel® Xeon® CPU E5335 @ 2.00GHz (2164.56-MHz K8-class CPU) usable memory = 4277878784 (4079 MB) avail memory = 4092952576 (3903 MB) В ядре: options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_FORWARD options IPSTEALTH options IPFIREWALL_VERBOSE_LIMIT=1000 options IPDIVERT options DUMMYNET options IPFIREWALL_DEFAULT_TO_ACCEPT options DEVICE_POLLING options HZ=1000 Подскажите, может что-то надо подкрутить на FreeBSD или использовать какие-то другие альтернативы (altq), или решения на базе других ОС (linux), а может вообще комп заменить каким-то роутером (cisco). Главное, чтобы при количестве правил более 200 этих задержек не было. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Davion Опубликовано 11 мая, 2008 · Жалоба имхо микротик само то по эти цели Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
cmhungry Опубликовано 11 мая, 2008 · Жалоба имхо микротик само то по эти цели+1особенно если справиться на simple queue, без mangle Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 11 мая, 2008 · Жалоба ставьте linux Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
edwin Опубликовано 12 мая, 2008 · Жалоба 2Droid: Посмотрите в сторону ng_car: http://ospf-ripe.livejournal.com/2567.html http://tmp.barev.net/htmlart/unix/ng_car.html И главное - оптимизируйте правила. Активно используйте таблицы - сильно поможет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Droid Опубликовано 12 мая, 2008 · Жалоба ставьте linuxА что по части шейпинга в Линукс лучше, т.е. чем там лучше шейпить? Есть ли у вас какие-то наработки по шейпингу более 200 каналов и какие при этом бывают задержки? И вот про таблицы тоже интересно. Я так понимаю это делается с помощью altq на FreeBSD. Опять же было бы интересно узнать сравнивал ли кто-то уже соотношение производительности на Mikrotik, linux и FreeBSD? Какие-то результаты тестирований. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
edwin Опубликовано 12 мая, 2008 · Жалоба altq тут не причем - это уже епархия pf. Там есть свои нюансы. Вот к примеру pipe's + tables: http://www.opennet.ru/openforum/vsluhforumID1/74093.html Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nuclearcat Опубликовано 12 мая, 2008 · Жалоба 200 каналов? Шейпил на Линуксе, на старом процессоре 5000 и больше... естественно крайне желательно использовать хеширование в фильтрах. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ingress Опубликовано 12 мая, 2008 · Жалоба altq тут не причем - это уже епархия pf. вообще altq и dummynet две отдельные системы, просто в одном фаерволе одной пользуются, а в другом другой :) существует патч который позволяет использовать допустим dummynet в pf(наоборот не видел) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 12 мая, 2008 (изменено) · Жалоба 200 каналов? Шейпил на Линуксе, на старом процессоре 5000 и больше... естественно крайне желательно использовать хеширование в фильтрах.А на рабочие скрипты можно взглянуть? ;) P.S. Кстати, недавно как три дня назад поставил FreeBSD 6.0 RC1 на тестовую машину с целью изучения реализации почти этой же задачи (роутинг, фаервол, впн сервер, шейпер) на фри. Больше с целью сравнения фри и линукс. Если честно, то пока в полной растерянности - совершенно не вижу никаких преимуществ фри перед линукс в этом вопросе.. :( И вообще, после Linux, FreeBSD вызывает довольно удручающее впечатление... :( Изменено 12 мая, 2008 пользователем AlKov Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sirmax Опубликовано 12 мая, 2008 · Жалоба 200 каналов? Шейпил на Линуксе, на старом процессоре 5000 и больше... естественно крайне желательно использовать хеширование в фильтрах.Хм, где прочитать про это?Действительно, хотелось бы пример. (упор на хеширование) Сейчас шейплю на VPN-ах, соответсвенно никаких фильтров, но хочу отказываться от этой схемы.. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mikevlz Опубликовано 12 мая, 2008 · Жалоба P.S. Кстати, недавно как три дня назад поставил FreeBSD 6.0 RC1 на тестовую машину с целью изучения реализации почти этой же задачи (роутинг, фаервол, впн сервер, шейпер) на фри. Больше с целью сравнения фри и линукс. Если честно, то пока в полной растерянности - совершенно не вижу никаких преимуществ фри перед линукс в этом вопросе.. :(И вообще, после Linux, FreeBSD вызывает довольно удручающее впечатление... :( а чем обусловлен выбор релиз-кадидата 6.0? учитывая, что полноценный релиз ветки 6.3 уже скоро полгода как есть. Почему не сравнить современный линукс с какой-нить 4.0 fbsd? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sirmax Опубликовано 12 мая, 2008 · Жалоба Если уж "холи вор" то хоть с примерами =) как Вы во фре делали, и как в линуксе... а то сразу будут вопросы про то что "кто то не умеет что то готовить" (с) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 12 мая, 2008 · Жалоба ставьте linuxА что по части шейпинга в Линукс лучше, т.е. чем там лучше шейпить? Есть ли у вас какие-то наработки по шейпингу более 200 каналов и какие при этом бывают задержки? Не, фря лучше однозначно. Но она подразумевает наличие мозгов у того, кто ее настраивает. В отличие от линукса. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
witch Опубликовано 12 мая, 2008 (изменено) · Жалоба таблицы помогут. проверено фря 6.2 ipfw правила без таблиц и с таблицами. Изменено 12 мая, 2008 пользователем witch Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 12 мая, 2008 (изменено) · Жалоба [а чем обусловлен выбор релиз-кадидата 6.0? учитывая, что полноценный релиз ветки 6.3 уже скоро полгода как есть. Почему не сравнить современный линукс с какой-нить 4.0 fbsd?Да просто поставил то, что имелось в наличии. Как уже говорил, больше из спортивного интереса, наверное. ;)Ну а если насчет "свежести", то Linux у меня, можно сказать, такой же "не первой свежести" (Fedora 6), учитывая что уже давно вышла 8-я, да и 9-я тоже не за горами вроде. Правда признаюсь, что ядро обновил до 6.22 :-) Если уж "холи вор" то хоть с примерами =) как Вы во фре делали, и как в линуксе... а то сразу будут вопросы про то что "кто то не умеет что то готовить" (с)На линуксе собственно наверное также, как и Вы - на VPN-ах. Вот скрипт ip-up#!/usr/bin/php -q <?php error_reporting(E_ALL ^ E_NOTICE); $hname = "localhost"; $uname = "admin"; $dbpasswd = "superpasswd"; $dbname = "myDB"; $utable = "users"; $ptable = "packets"; $username = $argv[2]; $device = $argv[1]; $LINK = @mysql_pconnect($hname,$uname,$dbpasswd) or die ("Couldn't connect to MySQL server!"); @mysql_select_db($dbname,$LINK) or die ("Couldn't select database!"); $result=mysql_query("SELECT uid,gid,framed_ip FROM $utable WHERE user='".$username."'",$LINK) or die("DATABASE BROKE!!! table($utable) file:".__FILE__." line:".__LINE__." MYSQL : ".mysql_error() ); $us=mysql_fetch_array($result); $ip=$us[framed_ip]; $id=$us[uid]; mysql_free_result($result); $result2=mysql_query("SELECT packet, up_speed, max_speed FROM $ptable WHERE gid='".$us[gid]."'",$LINK) or die("DATABASE BROKE!!! table($ptable) file:".__FILE__." line:".__LINE__." MYSQL : ".mysql_error()); $packet2=mysql_fetch_array($result2); $v=$packet2; $up=$v[up_speed]; $max=$v[max_speed]; $tarif=iconv("cp1251","utf8",$v[packet]); mysql_free_result($result2); if ($up<>0 AND $max<>0) // если тариф анлим, запишем правила { $ipt_mark="/sbin/iptables -t mangle -I POSTROUTING 1 -d ${ip}/32 -j MARK --set-mark ${id}"; $ipt_mark2="/sbin/iptables -t mangle -I POSTROUTING 1 -s ${ip}/32 -j MARK --set-mark ${id}"; exec($ipt_mark); exec($ipt_mark2); $text="/sbin/tc qdisc add dev $(device) root handle 1: htb r2q 1 /sbin/tc class add dev $(device) parent 1:1 classid 1:$(ID) htb rate $(MAX)kbit ceil $(UP)kbit /sbin/tc filter add dev $(device) parent 1: protocol ip prio 3 handle $(ID) fw classid 1:$(ID)"; $search=Array('$(device)','$(MAX)','$(UP)','$(ID)'); $replace=Array($device,$v[max_speed],$v[up_speed],$us[uid]); $text1 = str_replace($search, $replace, $text); exec($text1); } ?> В принципе, маркировка в iptables, возможно лишняя, т.к. приоритеты по типу трафика не выставляются. В ip-down "обратная" операция - удаление соотв. очередей и правил. На фри еще не успел ничего попробовать - ну три дня всего, как установил, да еще в праздники! :-) И готовить последнюю я точно еще не умею. :D Не, фря лучше однозначно. Но она подразумевает наличие мозгов у того, кто ее настраивает. В отличие от линуксаКрайне "авторитетное" и "аргументированное" заявление! ;) После такого и обсуждать далее бессмысленно.. :DЛучше и не скажешь - "если у тебя Линукс, то тебе, дебилу, во Фри и делать нечего!" ;) ИМХО, это я лично так понимаю ваше утверждение. ;) По теме - после неоднократного и неоднодневного гугления по теме в плане Linux vs FreeBSD, у меня создалось впечатление, что шейпер на фри реализовать проще, а вот VPN сервер и фаервол проблематичнее. Но это только ИМХО.. Сам на фри за три дня реализовать что-то серьезное еще не успел, если не считать установку MC, смены шелла на bash и русификации консоли. Очень долго "плакаль" на команду route -n... Очень разочаровала... Ну а netstat -nr, ИМХО все же менее информативна и тяжелее в понимании. Ну это во-первых снова ИМХО, а во-вторых к теме не относится.. Изменено 12 мая, 2008 пользователем AlKov Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
martin74 Опубликовано 12 мая, 2008 · Жалоба ip r рулит. В линуксе Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
drug. Опубликовано 12 мая, 2008 (изменено) · Жалоба ИМХО: Использование таблиц, снизит суммарное время прохождения пакета через цепочку правил, но не снизит задержку, которая возникает при прохождении пакета через конкретный pipe. А именно она составляет большую часть из задержки. Решение вот тут: http://www.freebsd.org/cgi/cvsweb.cgi/src/...t/ip_dummynet.c А конкретно: Revision 1.113: download - view: text, markup, annotated - select for diffs Sat Nov 17 21:54:56 2007 UTC (5 months, 3 weeks ago) by oleg Branches: MAIN Diff to: previous 1.112: preferred, colored Changes since revision 1.112: +6 -3 lines - New sysctl variable: net.inet.ip.dummynet.io_fast If it is set to zero value (default) dummynet module will try to emulate real link as close as possible (bandwidth & latency): packet will not leave pipe faster than it should be on real link with given bandwidth. (This is original behaviour of dummynet which was altered in previous commit) If it is set to non-zero value only bandwidth is enforced: packet's latency can be lower comparing to real link with given bandwidth. - Document recently introduced dummynet(4) sysctl variables. Однако, обновление до текущей стабильной версии, где-то месяц тому назад не содержало этих патчей. Изменено 12 мая, 2008 пользователем drug. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nuclearcat Опубликовано 12 мая, 2008 · Жалоба http://lartc.org/howto/lartc.adv-filter.hashing.html Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 12 мая, 2008 · Жалоба Крайне "авторитетное" и "аргументированное" заявление! ;) После такого и обсуждать далее бессмысленно.. :DЛучше и не скажешь - "если у тебя Линукс, то тебе, дебилу, во Фри и делать нечего!" ;) Совсем наоборот. "Тем, кто задает такие же вопросы, как топикстартер, на фре делать нечего - марш на линукс." Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
umike Опубликовано 12 мая, 2008 (изменено) · Жалоба altq тут не причем - это уже епархия pf.вообще altq и dummynet две отдельные системы, просто в одном фаерволе одной пользуются, а в другом другой :) существует патч который позволяет использовать допустим dummynet в pf(наоборот не видел) очень интересно было бы взглянуть. По каким кейвордам гуглить? нагуглил а какже The format of ipfw rules is the following: [rule_number] [set set_number] [prob match_probability] action [log [logamount number]] [altq queue] [{tag | untag} number] body Изменено 12 мая, 2008 пользователем umike Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sirmax Опубликовано 12 мая, 2008 · Жалоба AlKov Свой скрипт я не постил по той причине что простых шейперов оченьмного - а для ВПНа ничего больше и не надо. Тут просто нет места для полета фантазии - отдать полосу и все. Собственно, это одна из причин по которой впн должен умереть ) кстати, я в php не силен, но вариант дергать каждый раз коннектится к БД не очень хорош. в моей давней реализации примерно того-же на bash это порождало 2 лишних вызова mysql, что крайне негативно сказывалось на производительности. рекомендую сделать как тут описано http://abills.net.ua/wiki/doku.php?id=abil...pppd_radattr:ru Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 12 мая, 2008 · Жалоба рекомендую сделать как тут описаноhttp://abills.net.ua/wiki/doku.php?id=abil...pppd_radattr:ru Вариант интересный и более правильный - согласен. Но есть одна незадача - у меня не ABillS, а FreeNibs... И непонятно, как в нем передать атрибуты (ту же скорость) плагину radattr.so ?? Как я понял, именно оттуда (вернее из /var/run/radattr.$user_ppp) скрипт вытаскивает нужные значения. А получает он их, по-видимому, также в MySQL (только за "один раз"). Пересобирать rlm_nibs и затем весь пакет что-то не воодушевляет.. :( Или можно попроще сиё реализовать? Не подскажете? ;) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sirmax Опубликовано 12 мая, 2008 · Жалоба Хм, мы немного отклонились от темы.. А какие пары атрибут-значение возвращает Ваш радиус при коннекте пользователя? откуда он берет эти атрибуты? (я не знаком с FreeNibs, но у меня тоже не ABillS, просто тут наиболее внятно и коротко разъясняется как прикрутить свои атрибуты к связке radius+pptpd) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Davion Опубликовано 12 мая, 2008 · Жалоба имхо микротик и никаких проблем что и другим советую))) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...