Биллинговая система Nodeny

Главная категория => Nodeny Plus => Тема начата: Efendy от 15 Января 2012, 21:10:08



Название: noserver
Отправлено: Efendy от 15 Января 2012, 21:10:08
Посмотрел я на noserver новой версии и решил, что он достаточно хорош, настолько, что было бы неплохо бекпортировать его на 50.32/33 версию.

В чем хорошесть? Главное:

1) код более понятен и не так запутан, т.е. проще модифицировать сторонним разработчикам
2) удобный режим отладки
3) модульная структура
4) введение таких сущностей как "задача" и "событие"

Подробнее.

Например. Вы пишите свой плагин, который оформляется как отдельный файл и подключается к noserver во время загрузки. Ваш модуль подписывается на событие "получание данных клиента". noserver вызывает соответсвующую подпрограмму, когда получит данные клиента. Допустим эта ваша подпрограмма посмотрела на звезды и решила уменьшить скорость на 40%, она берет и меняет эту скорость (так: $M->{user}{$uid}{speed_in1} *= 0.6; ). noserver видит, что данные клиента изменились и переподключает его, т.е удаляет и создает правила уже с новыми шейпами.

Естественно, ваша подпрограмма может вести учет использования канала конкретным клиентом и, например, если в течении 30 минут клиент выгребает в среднем  более 90% своей скорости - берет и прирезает его. Т.е возможностей для интеллектуального шейпа много. Главное, что это вынесено из noserver и нет необходимости держать в голове кучу глобальных переменных.

$M->{user} - это данных клиентов, которые в состоянии "включен". Ваш плагин может, вообще, запретить доступ в интернет в данный момент:

Код:
delete $M->{user}{$uid};

На данный момент в noserver реализованы шейпы в 4 направления. По умолчанию шейп действует на 1е направление, т.е. один шейп на весь трафик. Однако, плагином можно посмотреть в поле "скрипты" тарифного плана и если там закодировать скорости для остальных направлений, то всего одной строчкой клиент начнет шейпится и по ним.

Дебажить очень просто:
perl noserver.pl -v
или более детальный дебаг:
perl noserver.pl -vv

Код:
[0.030342: noserver.pl(12) nod.pm::new(95)]
Start. Flag -h for help

[0.044852: noserver.pl(12) nod.pm::new(100) Db.pm::new(37) Db.pm::connect(70)]
Connecting to DBI:mysql:database=bill;host=localhost;mysql_connect_timeout=5 : OK

[0.044944: noserver.pl(25)]
loading /usr/local/nodeny/noserver/nofire.pl...

[0.046463: noserver.pl(25)]
loading /usr/local/nodeny/noserver/shapes.pl...

[0.049258: noserver.pl(59) nod.pm::sleep(116) nod.pm::task_run(169) nod.pm(169) noserver.pl::load_nets(136) Db.pm::sql(160)]
SELECT SQL_BUFFER_RESULT * FROM nets WHERE priority>0 ORDER BY priority
Строк: 4. Время выполнения sql: 0.0003 сек

[0.049599: noserver.pl(59) nod.pm::sleep(116) nod.pm::task_run(169) nod.pm(169) noserver.pl::load_nets(146) nofire.pl::fw_net_add(147)]
Добавление в фаервол сети 10.0.0.0/8, пресет 0, направление 4

[0.049845: noserver.pl(59) nod.pm::sleep(116) nod.pm::task_run(169) nod.pm(169) noserver.pl::load_nets(146) nofire.pl::fw_net_add(147)]
Добавление в фаервол сети 192.168.0.0/16, пресет 0, направление 4

[0.050052: noserver.pl(59) nod.pm::sleep(116) nod.pm::task_run(169) nod.pm(169) noserver.pl::load_nets(146) nofire.pl::fw_net_add(147)]
Добавление в фаервол сети 203.211.129.0/27, пресет 0, направление 3

[0.050219: noserver.pl(59) nod.pm::sleep(116) nod.pm::task_run(169) nod.pm(169) noserver.pl::load_nets(146) nofire.pl::fw_net_add(147)]
Добавление в фаервол сети 0.0.0.0/0, пресет 0, направление 1

[0.050679: noserver.pl(59) nod.pm::sleep(116) nod.pm::task_run(169) nod.pm(169) noserver.pl::load_tarifs(122) Db.pm::sql(160)]
SELECT SQL_BUFFER_RESULT * FROM plans2
Строк: 50. Время выполнения sql: 0.0002 сек

В общем, надеюсь, я вас заинтриговал. Пока тестирую. Скоро выложу


Название: Re: noserver
Отправлено: 0xbad0c0d3 от 15 Января 2012, 21:25:59
отлично, ждем ;)


Название: Re: noserver
Отправлено: goletsa от 15 Января 2012, 21:52:17
А динамический шейпер в нем уже реализован?


Название: Re: noserver
Отправлено: Efendy от 15 Января 2012, 22:32:54
А динамический шейпер в нем уже реализован?
что такое динамический шейп? как я его понимаю: изменение скорости в зависимости от ситуации. Ситуация - это загруженность канала/наглость клиента/время суток и т.д. По новой схеме это все и должно учитываться плагинами. Т.е мониторит плагин какой-то параметр, видит, что клиент наглеет - прирезает скорость. а может и не прирезает, если это ночь или канал не загружен.

Вот, на примере. В воскресенье вечером я вижу, что абонент на тарифе "неограниченный локальный трафик" запарил качать HD фильмы. Я лучше ваще заблочу ему доступ к локальным ресурсам. Да я г..дон, но другие клиенты будут чувствовать себя комфортно. Вот я и есть справедливый динамический шейпер. Ну по крайней мере для мелких сетей, которые вынуждены крутиться в ситуации "вроде бы нормальный канал, но уроды портят все". Вместо меня это спокойно может делать скрипт (плагин).


Название: Re: noserver
Отправлено: goletsa от 16 Января 2012, 12:15:12
В текущей реализации по умолчанию в билинге - т.е. в зависимости от общего трафика и времени.


Название: Re: noserver
Отправлено: stix от 16 Января 2012, 12:41:46
и кстати это будет работать только на сателлитах фряхи.
на микротиках динамический шейпер работать не будет


Название: Re: noserver
Отправлено: Efendy от 16 Января 2012, 13:59:17
и кстати это будет работать только на сателлитах фряхи.
на микротиках динамический шейпер работать не будет
почему?


Название: Re: noserver
Отправлено: stix от 16 Января 2012, 14:05:29
и кстати это будет работать только на сателлитах фряхи.
на микротиках динамический шейпер работать не будет
почему?
микротиковый сателлит дергает информацию из поля speed


Название: Re: noserver
Отправлено: Efendy от 16 Января 2012, 14:31:54
и кстати это будет работать только на сателлитах фряхи.
на микротиках динамический шейпер работать не будет
почему?
микротиковый сателлит дергает информацию из поля speed
а что есть запрет на изменение скрипта для микротика? нет ничего невозможного - все зависит от желания/денег и др. критериев. Если речь идет о радиусе, то он может запускать и скрипты и вообще можно подготавливать скорость в другом поле, специально сделать таблицу для этого


Название: Re: noserver
Отправлено: stix от 16 Января 2012, 14:45:56
и кстати это будет работать только на сателлитах фряхи.
на микротиках динамический шейпер работать не будет
почему?
микротиковый сателлит дергает информацию из поля speed
а что есть запрет на изменение скрипта для микротика? нет ничего невозможного - все зависит от желания/денег и др. критериев. Если речь идет о радиусе, то он может запускать и скрипты и вообще можно подготавливать скорость в другом поле, специально сделать таблицу для этого
нене, это я человеку просто навсякий случай


Название: Re: noserver
Отправлено: Efendy от 16 Января 2012, 20:54:59
Дабы подогреть интерес, прикрепил пример модуля, который динамически шейпит по такому критерию:

если за определенный интервал времени клиент утилизирует больше x% скорости своего тарифа, то ему устанавливается скорость y% тарифной на время z.

Естественно, можно усложнить модуль и включать эту фичу, если утилизация всей сеткой канала в интернет составляет w%.

Если посмотреть на модуль, то мы видим, что, несмотря на усложненную логику шейпа по сравнению со стандартным, читается и понимается он легко (я надеюсь на это).

Походу несколько комментариев. Вычислить загрузку канала в интервал времени - это не тривиальная задача как может показаться, поскольку необходимо иметь данные по трафику за каждый срез времени. Например, клиент скачал 100 мб в первую минуту, потом 200 во 2ю, 300 в 3ю и 400 в 4ю. Если считать среднюю скорость за 2 минуты, то в первые 2 минуты он скачал 300 мб, с 2й минуты по 3ю: 500 мб, с 3й по 4ю: 700 мб.

Вот это в скрипте:

Код:
# Массив значений трафика в определенную единицу времени:
#   [ time1 , { uid1 => traf1, uid2 => traf2 } ],
#   [ time2 , { uid1 => traf1, uid2 => traf2 } ],
my $Traf = ();

с этим все понятно:
Код:
# Подпишемся на событие `получен трафик клиентов`
nod->event_add('load_usr_traf', \&load_usr_traf);

Подпрограмма load_usr_traf заполняет $Traf в каждый срез. Кроме того, вычисляет среднюю скорость за требуемый промежуток времени. Естественно, при старте $Traf пустой и заполняется постепенно, поэтому пока не соберутся данные за требуемый период времени - скорости клиентов не трогаем.

$Limits_end хранит время, когда уже можно перестать понижать скорость:

Код:
$Limits_end->{$uid} = $time_now + $limit_period;

Единственная проблема, с которой вы можете столкнуться так это многоуровневые хеши и массивы. Я раньше пытался избегать их, чтобы проще было разобраться, однако результат был обратным - кучи переменных разбросанных по коду. Здесь же мы имеем иерархию в одном объекте:

$M->{users} - данные клиентов
$M->{users}{15} - данные клиента с id = 15
$M->{users}{15}{ip} - ip клиента с id = 15

После тестов, выложу и сам noserver


Название: Re: noserver
Отправлено: Efendy от 17 Января 2012, 01:32:23
Прошу протестировать. В прикреплении (переименуйте в tar) такие файлы:

Debug.pm - модуль дебага
Db.pm - работа с БД
nod.pm - что-то типа nosat.pm в 50.32/33
noserver/nofire.pm - управление фаерволом ipfw
noserver/shapes.pm - плагин понижения скорости в зависимости от загрузки канала
sat.cfg - он есть и в 50.32/33, но внимание:

в нем есть дополнительные конфигурационные строки. Конфиг сателлита в БД больше не используется. Данные будут браться исключительно из sat.cfg

Также важно:

В настройках направлений, последним правилом должна быть сеть 0.0.0.0/0 для направления №1

Сначала запустите

Код:
perl noserver.pl -vv

или

Код:
perl noserver.pl -v

на экран будет выведено, что скрипт будет делать. В реальности правила выполнены только при

Код:
perl noserver.pl

Хотелось бы получить пожелания по улучшению. Не затягивая т.к. дальше я буду продолжать делать новую версию nodeny, а она уже во некоторых местах не совместима с текущей.



Название: Re: noserver
Отправлено: stix от 17 Января 2012, 07:17:26
оу супер, попробую как буду на работе


Название: Re: noserver
Отправлено: stix от 17 Января 2012, 09:23:22
я так понимаю функциональная логика работы совершенно иная.


Название: Re: noserver
Отправлено: bnet от 17 Января 2012, 16:14:02
дизайн крутой


Название: Re: noserver
Отправлено: Efendy от 18 Января 2012, 11:33:22
у меня стойкое впечатление, что я занимаюсь тем, что никому не нужно. Ну тогда, хотя бы на словах скажите, вот вы (мелкие провайдеры) же вручную бывает прирезаетете какого-нить клиента? По каким критериям? Например, смотрите, что канал загружен, а чел качает что-то уже 2 часа подряд и при этом с начала месяца скачал уже 100 гиг. Какие у вас критерии? Или только у меня такие проблемы... Ну тогда скажите данные по своей сети, например, у меня на каждые 100 человек в месяц потребляют примерно 7 терабайт трафика. Это я им раздолье даю или норм?


Название: Re: noserver
Отправлено: stix от 18 Января 2012, 11:52:24
раздолье.
у нас процветает тирания и диктатура.


Название: Re: noserver
Отправлено: goletsa от 18 Января 2012, 12:29:54
у меня стойкое впечатление, что я занимаюсь тем, что никому не нужно. Ну тогда, хотя бы на словах скажите, вот вы (мелкие провайдеры) же вручную бывает прирезаетете какого-нить клиента? По каким критериям? Например, смотрите, что канал загружен, а чел качает что-то уже 2 часа подряд и при этом с начала месяца скачал уже 100 гиг. Какие у вас критерии? Или только у меня такие проблемы... Ну тогда скажите данные по своей сети, например, у меня на каждые 100 человек в месяц потребляют примерно 7 терабайт трафика. Это я им раздолье даю или норм?
Например после сканичания n сотен Гб за месяц применяется политика что в часы наибольшей нагрузки такому юзеру скорость гдето в 5-10 раз может обрезаться.


Название: Re: noserver
Отправлено: Efendy от 18 Января 2012, 12:33:53
Например после сканичания n сотен Гб за месяц применяется политика что в часы наибольшей нагрузки такому юзеру скорость гдето в 5-10 раз может обрезаться.
в начале месяца это плохо работает


Название: Re: noserver
Отправлено: Efendy от 18 Января 2012, 12:36:55
Я вот думаю поступать так. Выделяется пайп, в который попадают разные проштрафившиеся. Причем размер пайпа динамический. Например, проштрафилось 3 клиента  с суммарным каналом в 15 мбит, пускаем их через один пайп в 10 мбит. Попал еще один клиент, скажем, с пакетом в 4 мбита, общий пайп сделали в 12 мбит. Числа от балды, но вот хотелось бы на словах алгоритмик. Тока реально продуманный.


Название: Re: noserver
Отправлено: ser970 от 18 Января 2012, 13:15:06
Я вот думаю поступать так. Выделяется пайп, в который попадают разные проштрафившиеся. Причем размер пайпа динамический. Например, проштрафилось 3 клиента  с суммарным каналом в 15 мбит, пускаем их через один пайп в 10 мбит. Попал еще один клиент, скажем, с пакетом в 4 мбита, общий пайп сделали в 12 мбит. Числа от балды, но вот хотелось бы на словах алгоритмик. Тока реально продуманный.
у меня когда работало так ( я уже раньше писал )
при максиальной нагрузке резалось на скажем на 1% от трафика всем если канал еще забит то еще -1% до тех пор пока канал не разгрузится до 85%  от ширины  если меее 80% то обратный порядок
не поверите иногда на 2-3% обрезать скорость спасало. ( а клиент даже не ощущал что его режут). подумаешь вместо 1м получал 0.8м = а на общем сказывалось не хило. это реально работало.


Название: Re: noserver
Отправлено: Efendy от 18 Января 2012, 13:32:55
Резку трафика можно оформить и как справедливое явление, достаточно в часы НЕ пик повышать скорость тем, кому ранее резали. Клиенту объяснять: скорость может варьироваться - быть меньше и БОЛЬШЕ, но в среднем будет ваш тариф. Просто нужно понимать, что есть клиенты, которым важно скачать что-то, а есть пи..сы, которым важно качать неважно что. Главное требование к алгоритму - не трогать обычных клиентов, вплоть до того, что у наглых отбирать канал, даже если они мало его используют. Должен быть какой-то коэффициент "наглости", который в основном должен вычисляться динамически, но может модифицироваться и вручную (клиент постоянно нервы мотает). Живя в этом мире, я вижу как наглые получают свое, я не хочу этому способствовать. Почему клиент, который никогда не наглеет, не спорит и платит вовремя, решил скачать 2 фильма в один из 30 дней должен страдать от другого, который 29 дней качал под 100%, но в этот момент использует 50% своего тарифа, но тем не менее сейчас час пик и канал загружен под 100%. Честно слово, запарило выслушивать претензии от сотнегигокачальщиков, потому что они, с..ки, знают, что наглость - это 2е счастье. А я хочу доказать обратное)


Название: Re: noserver
Отправлено: ser970 от 18 Января 2012, 14:08:26
я не умею объяснять, но попробую ,то что хотел сказать.

есть канал 100м. 120зверей (онлайн) по 1м и 4 наглых тоже по 1м
что даст если мы даже вырубим этих 4 в суме разгрузим канал на 4м .так ведь?  120м -4м > 100м
(ну это образно)
теперь порежем всех 120  на 20%  ( звери даже не почуствуют  1м или 0.8м (реально так глубоко не резалось))
120м - 20% < 100м. ведь так?
это реально работало




Название: Re: noserver
Отправлено: Rico-X от 18 Января 2012, 17:10:30
Мне кажется это перегрузка биллинга лишней логикой. Мы вообще отказались от использования шейперов, скорость клиента ограничена скоростью порта свича куда он воткнут. Я режу только nonUnicast трафик, остальное пусть укачаются. Столкнулся с ситуацией когда у нас уплоад значительно превышает даунлоад, локальный ретреккер обрабатывает огромное количество запросов, все новинки качаются внутри локалки. Было тяжело недели 2, подпирали полку, потом нагрузка как-то сама собой нормализовалась (у качальщиков похоже винты кончились). Не скажу что проблем нет, есть с отдельными свичами, по каждому порту веду статистику, если значение с отдельного порта в месяц превышает определенное - даем мониторингу сигнал и желающему забэкапить весь интернет просто обрезаю скорость на порту, таких очень мало на 1000 пользователей 2-3 человека.
ИМХО при современных скоростях наращивать логику шейперов нет смысла.


Название: Re: noserver
Отправлено: ser970 от 18 Января 2012, 17:29:21
все верно когда каналы в гигабит и зверей мешок.
а когда 80м на 300 чел? есть такие сети.
притом новая версия модульная - надо используешь - не надо нет .



Название: Re: noserver
Отправлено: smallcms от 18 Января 2012, 18:32:07
у меня стойкое впечатление, что я занимаюсь тем, что никому не нужно. Ну тогда, хотя бы на словах скажите, вот вы (мелкие провайдеры) же вручную бывает прирезаетете какого-нить клиента? По каким критериям? Например, смотрите, что канал загружен, а чел качает что-то уже 2 часа подряд и при этом с начала месяца скачал уже 100 гиг. Какие у вас критерии? Или только у меня такие проблемы... Ну тогда скажите данные по своей сети, например, у меня на каждые 100 человек в месяц потребляют примерно 7 терабайт трафика. Это я им раздолье даю или норм?

мигобид:
Код:
<time 0,1,17,18,19,20,21,22,23>1:50-1000:200-996:500-994:1000-980
потрахек на 4 Гб:
Код:
<time 0,1,17,18,19,20,21,22,23>1:50-3000:200-2900:500-2100:1000-2000
<time 9,10,11,12,13,14,15,16>1:50-3000:200-2900:500-2700:1000-2600
Это уже реализованный динамический шейпер из 49.32. Из того, чего ужасно не хватало и будет нехватать "провайдерам"-мелочи - это конечно же раздельные шейпы на вход/выход каждого из направлений.
Ну и если бы оно отталкивалось не от полуночи, а как-то плавало постоянно и к вечеру приминяло доп. правила - вообще мечта юного инторнатчика была б...


Название: Re: noserver
Отправлено: Efendy от 18 Января 2012, 18:57:43
Я сам использую такой вариант, но он плох т.к. создает иллюзию хуевого инета - ночью клиент спит, его торент работает и выгребает свой канал на 100%. Вечером он по трафику попал в шейп, смотрит на показатели, а там скорость в 2 раза меньше. Какой вывод делает этот уродец? А то, что мы - уроды даем ему в 2 раза меньше заявленной скорости, хотя выгреб трафика на пару десятков обычных клиентов

Вариант 2: запускает торрент в 18-00 в начало часа пик. Нагружает общий канал, а шейпер его не режет т.к лимит не выгреб. Лучше остальным клиентам? Нифига.

Все это полумеры. Нужно рассматривать все в комплексе. Во-первых, трафик клиента за последние x-дней, включая за прошлый месяц, т.к. в первых числах трафик у всех малый. Во-вторых, общую загруженность канала.  В-третьих, среднюю загрузку за последний интервал времени Y.

Второй момент - как именно резать. Как вы уже поняли, вот тут я в поиске. Такой вариант: на основании текущих данных, делим клиентов на хороших и плохих (это деление условное и в данный конкретный момент времени). Канал у нас  A мбит. Хороших запускаем в канал B, плохих - в C. При этом A=B+C. Но! Не факт что B будет > C. На самом деле это будет высчитываться динамически. Граница может плавать пока не наступят самые лучшие показатели.



Название: Re: noserver
Отправлено: Redmen от 18 Января 2012, 22:34:43
мне нравитса етот вариант


у меня когда работало так ( я уже раньше писал )
при максиальной нагрузке резалось на скажем на 1% от трафика всем если канал еще забит то еще -1% до тех пор пока канал не разгрузится до 85%  от ширины  если меее 80% то обратный порядок
не поверите иногда на 2-3% обрезать скорость спасало. ( а клиент даже не ощущал что его режут). подумаешь вместо 1м получал 0.8м = а на общем сказывалось не хило. это реально работало.



Название: Re: noserver
Отправлено: Efendy от 18 Января 2012, 22:50:40
мне нравитса етот вариант


у меня когда работало так ( я уже раньше писал )
при максиальной нагрузке резалось на скажем на 1% от трафика всем если канал еще забит то еще -1% до тех пор пока канал не разгрузится до 85%  от ширины  если меее 80% то обратный порядок
не поверите иногда на 2-3% обрезать скорость спасало. ( а клиент даже не ощущал что его режут). подумаешь вместо 1м получал 0.8м = а на общем сказывалось не хило. это реально работало.

а в чем это отличается от варианта "никому не резать"? ведь цель не добиться загрузки канала менее 100%, а дать клиентам качественный инет. Ведь, если загрузка канала 100% - это хорошо, полная утилизация. Если вы забираете x% у каждого клиента, то почему за вас это не может делать физическое ограничение канала? Давайте считать. У вас канал 100 мбит. Клиенты качают по максимуму, в среднем абонент получает скорость 100/количество абонентов. Вы понижаете всем скорость до того момента, когда в среднем абонент получит скорость 99/количество абонентов? абсурд

Н.у. т.е уменьшением шейпов вы просто делаете работу, которую за вас бы сделал закон физики


Название: Re: noserver
Отправлено: ser970 от 19 Января 2012, 10:45:26
а в чем это отличается от варианта "никому не резать"? ведь цель не добиться загрузки канала менее 100%, а дать клиентам качественный инет. Ведь, если загрузка канала 100% - это хорошо, полная утилизация.
отличается и сильно . загргузка канала 100% это конечно гуд - а что делать когда  уперлись в полочку  ?


Если вы забираете x% у каждого клиента, то почему за вас это не может делать физическое ограничение канала?
вот тут то и не может - один зверь запустил торент и выгреб ...

Давайте считать. У вас канал 100 мбит. Клиенты качают по максимуму, в среднем абонент получает скорость 100/количество абонентов. Вы понижаете всем скорость до того момента, когда в среднем абонент получит скорость 99/количество абонентов? абсурд
Н.у. т.е уменьшением шейпов вы просто делаете работу, которую за вас бы сделал закон физики

да можете проверить очень просто

сделайте общую трубу на два апи скажем по метру
и на одном компе запустите торен на другом веб ( что одинаково будет?)

тут принцып 0,1 копейки работает ( если округление в банке сдалать до 1коп = сумма получится не хилой = 92г.(по мойму)  )



Название: Re: noserver
Отправлено: ser970 от 19 Января 2012, 11:03:27
не успел дописать.

то есть при таком раскладе уменьшение всем в часы пик - позволяет разгрузить канал и нет такого падения
то есть отрезали всем по по мелочи получили эффект и получше чем отрезать много 5-6 чел наглых качальщиков ( так как их процент не велик).
повторю еще раз это проверено на практике. коффициент не падал ниже чем 0.86.
 


Название: Re: noserver
Отправлено: Efendy от 19 Января 2012, 12:02:04
Ну может, хотя честно говоря что то у меня в голове не сходится: если ты понижаешь всем скорость на 2% и приэтом все становится гуд, то значит тоже самое станет, если ты расширишь свой канал в инет на 2%


Название: Re: noserver
Отправлено: elite от 19 Января 2012, 12:03:11
плюс адын за ser970
имхо наиболее эффективный вариант
и не надо заморачиваться всякими сложными алгоритмами - чем проще, тем лучше


Название: Re: noserver
Отправлено: elite от 19 Января 2012, 12:04:00
Ну может, хотя честно говоря что то у меня в голове не сходится: если ты понижаешь всем скорость на 2% и приэтом все становится гуд, то значит тоже самое станет, если ты расширишь свой канал в инет на 2%
ну необязательно 2%, на 10% можно понизить и мало кто заметит


Название: Re: noserver
Отправлено: ser970 от 19 Января 2012, 15:23:39
Ну может, хотя честно говоря что то у меня в голове не сходится: если ты понижаешь всем скорость на 2% и приэтом все становится гуд, то значит тоже самое станет, если ты расширишь свой канал в инет на 2%
угу расширить то вообще гуд но не всегда есть тех возможность. знаю порайней мере 5 сетей где просто физически нет сейчас возможности взять больше . вот и приходится извращятся.
это к тому что модульность очень сильно поможет. все намного проще станет.


Название: Re: noserver
Отправлено: Efendy от 19 Января 2012, 19:25:59
Фишка в том, что я не могу сильно рапыляться - т.е. уходить от контекста, ибо потом чтобы вернуться и дописать алгоритм - придется тратить время на вспоминание и анализ нюансов. Поэтому я хочу придумать более-менее настраиваемый алгоритм под задачи разных сетей. Ваш алгоритм мне понятен. Я попытаюсь вложить его в общую концепцию, т.е чтобы при каких-то определенных настроечных параметрах выходил именно этот вариант. Так что помогайте, пока я не ушел от этой задачи


Название: Re: noserver
Отправлено: ser970 от 19 Января 2012, 20:05:52
раз у з модульная система то

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




Название: Re: noserver
Отправлено: Efendy от 19 Января 2012, 20:52:32
раз у з модульная система то

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

ты там пивка не выпил?)  возможно ты и написал, что уже реализовано. Как сейчас работает:

noserver каждые X (например 5) секунд вызывает плагин и передает ему инфу о всех абонах, которым включен в данный момент доступ. Плагин может изменить любой параметр любого клиента и при возврате, noserver это увидит и переподключит клиента по новым данным


Название: Re: noserver
Отправлено: ser970 от 19 Января 2012, 21:08:04
реализовано имелось ввиду пилянием sat.pm и noserver.pl 

скрипт в приложении просто провтыкал и чуть не понял логику
раз так тогда все супер.

з.ы. пиво не люблю. коньяк и только хороший и то не много. обычно 4-5 пакек сигарет  2л колы и кофе.


Название: Re: noserver
Отправлено: Efendy от 19 Января 2012, 23:14:47
Если вы не смотрели прикрепленные файлы, то я вам скажу, что на самом деле, разработанная система очень гибкая. Очень просто можно сделать плагин, который в динамике выудит самых крутых качков и скажет "вот этот, этот и этот ip - это один клиент и скорость у него такая-то" и noserver будет думать что в данный момент времени все эти ip принадлежат одному клиенту и пустит всех в один пайп.

В общем, я такой активный, потому что появилась паузы в подключениях (морозы) - так что занимаюсь NoDeny)


Название: Re: noserver
Отправлено: elite от 19 Января 2012, 23:54:26
В общем, я такой активный, потому что появилась паузы в подключениях (морозы) - так что занимаюсь NoDeny)
а когда будет 52 версия?)

а по поводу noserver - не надо ничего мудрить :) сделай просто 2 наиболее эффективных алгоритма:
1) если клиент скачал за последние X времени Y трафика - ступенчато уменьшаем скорость на Z процентов, но чтобы итоговая скорость была не менее P процентов от тарифа
2) если загрузка канала превысила X процентов, уменьшаем всем пользователям данного тарифа ступенчато скорость на Y процентов

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


Название: Re: noserver
Отправлено: Crestfallen от 15 Марта 2012, 22:22:16
Ну может, хотя честно говоря что то у меня в голове не сходится: если ты понижаешь всем скорость на 2% и приэтом все становится гуд, то значит тоже самое станет, если ты расширишь свой канал в инет на 2%
Расширить канал не всегда дадут на 2% ) Нам в свое время надо было 10мб примерно, что бы забыть про полки в час пик, вышестоящие сказали или +50мб или + 100 и не меньше )


Название: Re: noserver
Отправлено: elite от 15 Марта 2012, 23:52:54
Ну может, хотя честно говоря что то у меня в голове не сходится: если ты понижаешь всем скорость на 2% и приэтом все становится гуд, то значит тоже самое станет, если ты расширишь свой канал в инет на 2%
Расширить канал не всегда дадут на 2% ) Нам в свое время надо было 10мб примерно, что бы забыть про полки в час пик, вышестоящие сказали или +50мб или + 100 и не меньше )
ну как бы да :)
если берешь 500 мбит, то как-то 512 мбит просить несолидно :)


Название: Re: noserver
Отправлено: Demeo от 16 Марта 2012, 16:05:26
Ну да, нам тоже меньше 100 уже не дают. Говорят, что так считать цену и скидки проще ;)


Название: Re: noserver
Отправлено: ser970 от 18 Марта 2012, 21:35:25
Ну может, хотя честно говоря что то у меня в голове не сходится: если ты понижаешь всем скорость на 2% и приэтом все становится гуд, то значит тоже самое станет, если ты расширишь свой канал в инет на 2%
вот наглядно видно что понизив скорость   speed*0.9
получили интересный эффект


Название: Re: noserver
Отправлено: Elisium от 18 Марта 2012, 21:41:37
Это загрузка на аплинке или у юзера ?
Если первое, то все красиво, а если второе, то на глаз там совсем не 0.9.


Название: Re: noserver
Отправлено: ser970 от 18 Марта 2012, 21:51:48
это график аплинка одной из сетей
в этом то и смысл динамического шейпера.
режим на чуть получаем больше.
типа с каждого по нитке - голому рубашка