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

Самый быстрый шейпер ?

Подскажите, чем лучше шейпить соединения на 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 этих задержек не было.

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


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

имхо микротик само то по эти цели

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


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

имхо микротик само то по эти цели
+1

особенно если справиться на simple queue, без mangle

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


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

2Droid:

Посмотрите в сторону ng_car:

http://ospf-ripe.livejournal.com/2567.html

http://tmp.barev.net/htmlart/unix/ng_car.html

 

 

И главное - оптимизируйте правила.

Активно используйте таблицы - сильно поможет.

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


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

ставьте linux
А что по части шейпинга в Линукс лучше, т.е. чем там лучше шейпить? Есть ли у вас какие-то наработки по шейпингу более 200 каналов и какие при этом бывают задержки?

 

И вот про таблицы тоже интересно. Я так понимаю это делается с помощью altq на FreeBSD. Опять же было бы интересно узнать сравнивал ли кто-то уже соотношение производительности на Mikrotik, linux и FreeBSD? Какие-то результаты тестирований.

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


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

altq тут не причем - это уже епархия pf.

Там есть свои нюансы.

Вот к примеру pipe's + tables:

http://www.opennet.ru/openforum/vsluhforumID1/74093.html

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


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

200 каналов? Шейпил на Линуксе, на старом процессоре 5000 и больше... естественно крайне желательно использовать хеширование в фильтрах.

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


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

altq тут не причем - это уже епархия pf.

вообще altq и dummynet две отдельные системы, просто в одном фаерволе одной пользуются, а в другом другой :)

существует патч который позволяет использовать допустим dummynet в pf(наоборот не видел)

 

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


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

200 каналов? Шейпил на Линуксе, на старом процессоре 5000 и больше... естественно крайне желательно использовать хеширование в фильтрах.
А на рабочие скрипты можно взглянуть? ;)

 

P.S. Кстати, недавно как три дня назад поставил FreeBSD 6.0 RC1 на тестовую машину с целью изучения реализации почти этой же задачи (роутинг, фаервол, впн сервер, шейпер) на фри. Больше с целью сравнения фри и линукс. Если честно, то пока в полной растерянности - совершенно не вижу никаких преимуществ фри перед линукс в этом вопросе.. :(

И вообще, после Linux, FreeBSD вызывает довольно удручающее впечатление... :(

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

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


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

200 каналов? Шейпил на Линуксе, на старом процессоре 5000 и больше... естественно крайне желательно использовать хеширование в фильтрах.
Хм, где прочитать про это?

Действительно, хотелось бы пример. (упор на хеширование)

 

Сейчас шейплю на VPN-ах, соответсвенно никаких фильтров, но хочу отказываться от этой схемы..

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


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

P.S. Кстати, недавно как три дня назад поставил FreeBSD 6.0 RC1 на тестовую машину с целью изучения реализации почти этой же задачи (роутинг, фаервол, впн сервер, шейпер) на фри. Больше с целью сравнения фри и линукс. Если честно, то пока в полной растерянности - совершенно не вижу никаких преимуществ фри перед линукс в этом вопросе.. :(

И вообще, после Linux, FreeBSD вызывает довольно удручающее впечатление... :(

а чем обусловлен выбор релиз-кадидата 6.0? учитывая, что полноценный релиз ветки 6.3 уже скоро полгода как есть. Почему не сравнить современный линукс с какой-нить 4.0 fbsd?

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


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

Если уж "холи вор" то хоть с примерами =) как Вы во фре делали, и как в линуксе... а то сразу будут вопросы про то что "кто то не умеет что то готовить" (с)

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


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

ставьте linux
А что по части шейпинга в Линукс лучше, т.е. чем там лучше шейпить? Есть ли у вас какие-то наработки по шейпингу более 200 каналов и какие при этом бывают задержки?

Не, фря лучше однозначно. Но она подразумевает наличие мозгов у того, кто ее настраивает. В отличие от линукса.

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


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

таблицы помогут. проверено

d5f6e8a54103t.jpg

фря 6.2 ipfw правила без таблиц и с таблицами.

 

 

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

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


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

[а чем обусловлен выбор релиз-кадидата 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, ИМХО все же менее информативна и тяжелее в понимании. Ну это во-первых снова ИМХО, а во-вторых к теме не относится..

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

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


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

ИМХО:

Использование таблиц, снизит суммарное время прохождения пакета через цепочку правил, но не снизит задержку, которая возникает при прохождении пакета через конкретный 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.

 

Однако, обновление до текущей стабильной версии, где-то месяц тому назад не содержало этих патчей.

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

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


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

Крайне "авторитетное" и "аргументированное" заявление! ;) После такого и обсуждать далее бессмысленно.. :D

Лучше и не скажешь - "если у тебя Линукс, то тебе, дебилу, во Фри и делать нечего!" ;)

Совсем наоборот. "Тем, кто задает такие же вопросы, как топикстартер, на фре делать нечего - марш на линукс."

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


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

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

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

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


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

AlKov

Свой скрипт я не постил по той причине что простых шейперов оченьмного - а для ВПНа ничего больше и не надо.

Тут просто нет места для полета фантазии - отдать полосу и все.

Собственно, это одна из причин по которой впн должен умереть )

 

кстати, я в php не силен, но вариант дергать каждый раз коннектится к БД не очень хорош.

в моей давней реализации примерно того-же на bash это порождало 2 лишних вызова mysql, что крайне негативно сказывалось на производительности.

 

рекомендую сделать как тут описано

http://abills.net.ua/wiki/doku.php?id=abil...pppd_radattr:ru

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


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

рекомендую сделать как тут описано

http://abills.net.ua/wiki/doku.php?id=abil...pppd_radattr:ru

Вариант интересный и более правильный - согласен. Но есть одна незадача - у меня не ABillS, а FreeNibs... И непонятно, как в нем передать атрибуты (ту же скорость) плагину radattr.so ?? Как я понял, именно оттуда (вернее из /var/run/radattr.$user_ppp) скрипт вытаскивает нужные значения. А получает он их, по-видимому, также в MySQL (только за "один раз"). Пересобирать rlm_nibs и затем весь пакет что-то не воодушевляет.. :( Или можно попроще сиё реализовать? Не подскажете? ;)

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


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

Хм, мы немного отклонились от темы..

А какие пары атрибут-значение возвращает Ваш радиус при коннекте пользователя? откуда он берет эти атрибуты?

(я не знаком с FreeNibs, но у меня тоже не ABillS, просто тут наиболее внятно и коротко разъясняется как прикрутить свои атрибуты к связке

radius+pptpd)

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


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

имхо микротик и никаких проблем что и другим советую)))

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


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

Join the conversation

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

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

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

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

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

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

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