Название: Совершенствование динамического шейпера Отправлено: Efendy от 21 Августа 2009, 12:45:29 Динамический шейпер теперь может работать по времени. Что есть динамическйи шейпер? Это предоставление определенной скорости в зависимости от потребленного клиентом трафика. Например, особо наглым качальщикам постепенно ее понижать ее.
Добавлена фича, учитывающая время суток. Причем может работать как отдельно так и совместно с контролем трафика. Например в тарифе в поле "скрипт" (это уже есть в новой версии) указываются такие строки: Цитировать <time 0,1,2,3,4>0:0-10000 <time 18,19,20>0:20000-512:50000-256:100000-128 <time 21>0:20000-400:50000-300 0:0-1024 Как расшифровываются эти строки? В теге <time> указывается час суток, в которые будет действовать данная строка. Часы перечисляются через запятую. Так первое правило будет срабатывать с 0 до 4 часа ночи. Далее все идет по правилам динамического шейпа как ранее. Т.е: с 0 до 4 часа ночи каждый абонент тарифа получит 10000 кбит скорости вне зависимости от рафика с 18 до 20 - скорость указанную в тарифе, но при превышении 20 Гб скорость будет установлена в 512 кбит, 50 Гб - 256 кбит, 100 гб - 128 кбит в 21 час вереча будет работать правило: скорость тарифа, но при превышении 20Гб - 400 кбит, 50гб -300 килобит во все остальное время клиентам будет выдана скорость 1024 кбит вне зависимости от трафика. Отдельно хочу отметить, что фичу заказал один из клиентов и теперь будет получать 50% от продаж этой фичи Название: Re: Совершенствование динамического шейпера Отправлено: elite от 21 Августа 2009, 16:55:28 Ну тогда было бы интересно, чтобы с 0 до 4 часа ночи трафик не учитывался ;)
Название: Re: Совершенствование динамического шейпера Отправлено: Efendy от 21 Августа 2009, 17:12:27 это надо ядро править. Здесь же речь о noserver
Название: Re: Совершенствование динамического шейпера Отправлено: elite от 21 Августа 2009, 17:16:17 это надо ядро править. Здесь же речь о noserver ну а так получается, что ночью народ накачает без ограничения скорости, а днем скорость хреновая будет - тоже нехорошо )а что по поводу моего ТЗ на динамический шейпер? Название: Re: Совершенствование динамического шейпера Отправлено: Efendy от 21 Августа 2009, 19:01:19 а что по поводу моего ТЗ на динамический шейпер? шейпить разные направления? Так оно и без динамического шейпит только первоеНазвание: Re: Совершенствование динамического шейпера Отправлено: goletsa от 21 Августа 2009, 19:54:31 это надо ядро править. Здесь же речь о noserver ну а так получается, что ночью народ накачает без ограничения скорости, а днем скорость хреновая будет - тоже нехорошо )а что по поводу моего ТЗ на динамический шейпер? Тех кто качает терабайтами единицы. Название: Re: Совершенствование динамического шейпера Отправлено: elite от 21 Августа 2009, 19:55:08 а что по поводу моего ТЗ на динамический шейпер? шейпить разные направления? Так оно и без динамического шейпит только первоединамический шейпер, который анализирует трафик за последние Х мин, если средняя скорость за этот промежуток времени превышает Y Мбит/с, то шейпер уменьшает скорость абоненту, когда абонент перестает качать, скорость восстанавливается Название: Re: Совершенствование динамического шейпера Отправлено: Efendy от 21 Августа 2009, 20:07:34 Для этого надо модифицировать ядро - аккумулировать этот трафик. Я уже рассказывал, что трафик за сутки формируется по окончании этих суток. Напомню для чего это делано. В сетях с числом абонентов несколько десятков тысяч (я испытывал NoDeny как раз на такой) идет интенсивная запись трафика. Особенно это усугубляется, если пишется вся детализация. Это гигабайты информации (не трафика, а информации о нем) записываются в БД. Записать детализацию - это задача более-менее оптимизирована, поскольку запись идет insert с большим хвостом данных, которые записываются скопом. Другой вопрос, если надо апдейтить суточную статистику - здесь не надо вставлять данные, здесь надо к текущим значениям добавлять полученные в последнем срезе. Это возможно, конечно. Но это дополнительная нагрузка на СУБД. А поскольку главный лозунг сетестроителя "секономить", мне пришлось буквально вылизать ядро чтобы оно при максимальном эффекте требовало средних ресурсов. Ради добавления одной фичи, я пока не могу пойти на увеличения нагрузки (хоть и незначительной, но все же) - это ниша NoDeny в первую очередь быть надежной системой, а лояльное использование вычислительных мощностей - одна из составляющих надежности
Название: Re: Совершенствование динамического шейпера Отправлено: elite от 21 Августа 2009, 20:22:24 Для этого надо модифицировать ядро - аккумулировать этот трафик. Я уже рассказывал, что трафик за сутки формируется по окончании этих суток. Напомню для чего это делано. В сетях с числом абонентов несколько десятков тысяч (я испытывал NoDeny как раз на такой) идет интенсивная запись трафика. Особенно это усугубляется, если пишется вся детализация. Это гигабайты информации (не трафика, а информации о нем) записываются в БД. Записать детализацию - это задача более-менее оптимизирована, поскольку запись идет insert с большим хвостом данных, которые записываются скопом. Другой вопрос, если надо апдейтить суточную статистику - здесь не надо вставлять данные, здесь надо к текущим значениям добавлять полученные в последнем срезе. Это возможно, конечно. Но это дополнительная нагрузка на СУБД. А поскольку главный лозунг сетестроителя "секономить", мне пришлось буквально вылизать ядро чтобы оно при максимальном эффекте требовало средних ресурсов. Ради добавления одной фичи, я пока не могу пойти на увеличения нагрузки (хоть и незначительной, но все же) - это ниша NoDeny в первую очередь быть надежной системой, а лояльное использование вычислительных мощностей - одна из составляющих надежности Ну может тогда добавить еще массив Utraf_prev? И динамический шейпер будет работать не с Utraf, а с Utraf-Utraf_prevА раз в Х мин делать Utraf_prev=Utraf Название: Re: Совершенствование динамического шейпера Отправлено: Efendy от 21 Августа 2009, 20:31:15 Да, можно, подоху, суммировать в скрипте. Но если рестартанет скрипт, то данные о трафике потеряются. В целом идея неплохая, подумаю
Название: Re: Совершенствование динамического шейпера Отправлено: elite от 21 Августа 2009, 22:30:12 Да, можно, подоху, суммировать в скрипте. Но если рестартанет скрипт, то данные о трафике потеряются. В целом идея неплохая, подумаю Ну вот над этим я и думаю :) Ну разве что в бд сливать Utraf_prevНазвание: Re: Совершенствование динамического шейпера Отправлено: goletsa от 31 Августа 2009, 06:12:12 Для того чтобы учитывать только входящий трафик при регулировании скорости достаточно ли изменить:
Код: C $Utraf{$p->{uid}}=$p->{in1}+$p->{out1}; Или я не в том месте трогаю? Название: Re: Совершенствование динамического шейпера Отправлено: elite от 31 Августа 2009, 07:24:05 Для того чтобы учитывать только входящий трафик при регулировании скорости достаточно ли изменить: даКод: C $Utraf{$p->{uid}}=$p->{in1}+$p->{out1}; Или я не в том месте трогаю? Название: Re: Совершенствование динамического шейпера Отправлено: goletsa от 31 Августа 2009, 16:11:45 Лаконично.
Но на какой вопрос? :) Название: Re: Совершенствование динамического шейпера Отправлено: elite от 31 Августа 2009, 18:03:00 Для того чтобы учитывать только входящий трафик при регулировании скорости достаточно ли изменить: вот так вот :)Код: C $Utraf{$p->{uid}}=$p->{in1}+$p->{out1}; Название: Re: Совершенствование динамического шейпера Отправлено: Aivanzipper от 25 Ноября 2009, 13:56:58 А возможно проводить анализ, например, каждые 5 минут? И, соответственно, если порог превышен резать скорость. А то сутки как-то многовато....
Название: Re: Совершенствование динамического шейпера Отправлено: Efendy от 25 Ноября 2009, 14:15:10 трафик проверяется даже чаще чем 5 минут. Просто за основу берется трафик за сутки. Ставится ограничение столько-то мегабайт в сутки.
Название: Re: Совершенствование динамического шейпера Отправлено: Aivanzipper от 25 Ноября 2009, 14:45:22 я правильно понимаю? :
ограничение трафика среза = (ограничение на трафик в сутки) \ (период среза) ЕСЛИ (трафик среза) > (ограничение трафика среза) ТО "применить санкции" т.е. администратор задает только количество мегабайт в сутки? Сколько раз можно на одного пользователя "применить санкции"? Есть несколько вложенных порогов либо только один? Название: Re: Совершенствование динамического шейпера Отправлено: Efendy от 25 Ноября 2009, 16:40:50 Все гораздо проще. Если трафик за текущие сутки больше ограничения -> применить санкции. Период среза не играет никакого значения. Например стоит указание резать скорость до 512 кбит при достижении 1 гб/сутки, как только клиент скачает 1Гиг (хоть утром, хоть днем, хоть вечером, хоть полгига утром, а полгига днем) - ему урежется скорость до 512кбит
Название: Re: Совершенствование динамического шейпера Отправлено: Aivanzipper от 25 Ноября 2009, 17:20:36 понятно..
но в таком случае придется уведомлять об этом клиентов, чтобы не появилось недовольных Название: Re: Совершенствование динамического шейпера Отправлено: Aivanzipper от 30 Ноября 2009, 09:40:45 Нашел на НАГе:
Цитировать Активных качальщиков режем таким способом: Завели для клиентов 4 класса - 0, 1, 2, 3. Класс 3 - это самый приоритетный, который идет без ограничений. Для класса 2 завели пайп на 5Мегабит Для класса 1 завели пайп на 4Мегабита Для класса 0 завели пайп на 2Мегабита В билинге ведется учет объема МБ по каждому безлимитчику, как только этот объем превысит, например 40% от теоретического объема тарифного плана - к такому клиенту начинает применяться следующий алгоритм: Проверяется объем выкачанной абонентом за последний час информации и если он превышает 80% от теоретического - клиенту понижается класс на еденицу, а если не превышает - то класс повышается на еденицу. Таким образом все активные качальщики сидят в зависимости от наглости в классах 0, 1 и 2 и меньше грузят общий канал. Вот так было-бы супер! Не пинайте, предлагаю как идею по дальнейшему совершенствованию. Название: Re: Совершенствование динамического шейпера Отправлено: AndyDv от 03 Декабря 2009, 13:26:18 Нашел на НАГе: Цитировать Активных качальщиков режем таким способом: Завели для клиентов 4 класса - 0, 1, 2, 3. Класс 3 - это самый приоритетный, который идет без ограничений. Для класса 2 завели пайп на 5Мегабит Для класса 1 завели пайп на 4Мегабита Для класса 0 завели пайп на 2Мегабита В билинге ведется учет объема МБ по каждому безлимитчику, как только этот объем превысит, например 40% от теоретического объема тарифного плана - к такому клиенту начинает применяться следующий алгоритм: Проверяется объем выкачанной абонентом за последний час информации и если он превышает 80% от теоретического - клиенту понижается класс на еденицу, а если не превышает - то класс повышается на еденицу. Таким образом все активные качальщики сидят в зависимости от наглости в классах 0, 1 и 2 и меньше грузят общий канал. Вот так было-бы супер! Не пинайте, предлагаю как идею по дальнейшему совершенствованию. Очень здравый алгоритм. Название: Re: Совершенствование динамического шейпера Отправлено: Maks от 17 Декабря 2009, 12:12:09 Идея еще жива но просто нет времени на реализацию?
или пока отложена до лучших времен? Название: Re: Совершенствование динамического шейпера Отправлено: Александр (AleksHr) от 11 Февраля 2010, 18:57:25 Up! Етот модуль платный или бесплатный и вообще он существует, а то как то не очень понятно по теме...
Название: Re: Совершенствование динамического шейпера Отправлено: blackjack от 11 Февраля 2010, 20:17:25 тату, а люди є?
н синку, це фантастика. ;D ;D Название: Re: Совершенствование динамического шейпера Отправлено: Александр (AleksHr) от 11 Февраля 2010, 21:24:26 А если серйозно? Я может быть даже и купил бы... штука очень полезная... класные тарифы можно создать с ее помощю ))).
Название: Re: Совершенствование динамического шейпера Отправлено: goletsa от 13 Марта 2010, 10:29:15 А теперь хотелка.:)
Можно ли чтобы правила для входящего и исходящего трафика быди разными? А то забитый аплоад (выше чем даунлоад) по графикам в кактусе это просто ненормально. Название: Re: Совершенствование динамического шейпера Отправлено: smallcms от 13 Марта 2010, 12:16:12 Можно.
идёте в noserver.pl находите строку Код: $speed_out=int($2*$speed_out/($speed_in||1)); Код: $speed_out=int($2*$speed_out/($speed_in||3)); + для альтернативных направлений исходящий я режу так: http://forum.nodeny.com.ua/index.php?topic=245.msg4623#msg4623 пользуйте поиск по форуму. Название: Re: Совершенствование динамического шейпера Отправлено: goletsa от 13 Марта 2010, 13:49:21 Хм, чую придется самому по аналогии допиливать.
Название: Re: Совершенствование динамического шейпера Отправлено: stix от 13 Февраля 2013, 12:53:13 подниму старый топик.
решил заюзать динамический шейпер в одной из сетей. для теста сделал: 0:200000-10000:400000-5000:600000-1000 0:0-40000 при 200 гбайт - 10 мбит при 400 гбайт - 5 мбит при 600 гбайт - 1 мбит в остальном - 40 мбит но такая вот шляпа, у тех, у кого уже 800 гбайт набежало или существующий трафик, то шейпер не поменялся. делаю pipe list 02452: 40.000 Mbit/s 0 ms burst 0 Исходники не смотрел, может быстро кто ответит, там триггер при прохождении порога или сразу должен примениться? Название: Re: Совершенствование динамического шейпера Отправлено: Cell от 13 Февраля 2013, 12:58:58 в тарифе "использовать скрипты" галочку поставил?
Название: Re: Совершенствование динамического шейпера Отправлено: stix от 13 Февраля 2013, 12:59:09 ага
раз pipe ipfw table 10 list | grep 138.101 192.168.138.101/32 1532 два pipe ipfw table 11 list | grep 138.101 192.168.138.101/32 1533 ipfw pipe 1532 list 01532: 40.000 Mbit/s 0 ms burst 0 q132604 50 sl. 0 flows (1 buckets) sched 67068 weight 0 lmax 0 pri 0 droptail sched 67068 type FIFO flags 0x0 0 buckets 0 active ipfw pipe 1533 list 01533: 40.000 Mbit/s 0 ms burst 0 q132605 50 sl. 0 flows (1 buckets) sched 67069 weight 0 lmax 0 pri 0 droptail sched 67069 type FIFO flags 0x0 0 buckets 0 active reload тарифов делал noserver передернул, nofire перечитал, заново создал пайпы с такими же параметрами. в продакшн системе не охота отладку включать останавливая текущих юзеров Название: Re: Совершенствование динамического шейпера Отправлено: Efendy от 13 Февраля 2013, 15:03:50 Если ты написал в 2 строки, то 2я "затирает" 1-ю. Такая форма только для ситуации когда префиксом указывается время. Надо так:
0:0-40000:200000-10000:400000-5000:600000-1000 Название: Re: Совершенствование динамического шейпера Отправлено: stix от 13 Февраля 2013, 15:45:25 Большое спасибо :)
интересна динамика жалоб и зависимости трафика Название: Re: Совершенствование динамического шейпера Отправлено: stix от 14 Февраля 2013, 12:29:42 еще вопрос:
Код: my $tbl_traf='x'.($year+1900).'x'.($mon+1).'x'.$day; а я хочу на основе трафика за месяц. достаточно ли здесь поменять логику выборки трафика заюзав Get_need_traf функцию? Название: Re: Совершенствование динамического шейпера Отправлено: Efendy от 14 Февраля 2013, 13:22:36 Черт, ну дока ведь помещается на одну страницу:
Цитировать Динамический шейпер в качестве трафика может рассматривать не только месячный, но и суточный трафик. В этом случае в строке описания необходимо первый ноль заменить на единицу: 0 - месячный1:трафик-скорость:трафик-скорость:трафик-скорость 1 - суточный Название: Re: Совершенствование динамического шейпера Отправлено: stix от 14 Февраля 2013, 13:46:50 вот я Вася, трижды перечитал доку, кроме последнего абзаца и пришлось свой код писать ;D ;D ;D
+ в карму еще раз |