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

Главная категория => Nodeny Plus => Тема начата: Sidius от 27 Апреля 2015, 11:18:59



Название: Скрипт управления скоростью (rev. 319)
Отправлено: Sidius от 27 Апреля 2015, 11:18:59
Пытались начать использовать скрипт управления скоростью. Столкнулись с непонятной проблемой.
Был создан тестовый тариф с скорость 30 мегабит в секунду на вход и 3 на выход.
В скрипте было прописано
if ( get_hour() > 10 ) { set_speed(10000) }
Клиент подключается, создаются два правила фаервола (один для исходящего трафика с скоростью 3 мегабита, другой для входящего с скоростью 30 мегабит). Вроде бы все ок.
Когда срабатывает скрипт - меняется почему-то только исходящая скорость, входящая остается такой же 30 мегабит.
При изменении входящей скорости в самом тарифе - она корректно меняется в фаерволе.
Стали копать глубже.
Сделали общую скорость для входящей и исходящей скорости. Все корректно создались записи в двух таблицах фаервола с одним и тем же номером пайпа с скоростью заданой в тарифе. При срабатывании скрипта - создается новый пайп в таблице исходящей скорости с скоростью 10 мегабит а пайп входящей скорости так и не изменяется. При использовании set_speed_in - ничего не происходит (остаются два правила в таблицах вход/выход с скоростью прописаной в тарифе). При использовании set_speed_out - создается другой пайп с скоростью из скрипта (10мегабит).
В файле noserver/scripts.pm вроде бы все ок

Код:
sub set_speed
{
    $Usr->{speed_in1} = $Usr->{speed_out1} = $_[0]*1000;
}


Подводим итог - скриптом не получается изменить входящую скорость абонента :(


Название: Re: Скрипт управления скоростью (rev. 319)
Отправлено: Sidius от 27 Апреля 2015, 21:41:29
Такое ощущение что я один только такой у всех все хорошо? Не верю (С)


Название: Re: Скрипт управления скоростью (rev. 319)
Отправлено: Efendy от 27 Апреля 2015, 21:58:18
noserver.pl построен таким образом, что к нему можно подключать множество модулей, которые управляют скоростью. Таким образом, получается конфликт, когда один модуль ставит одну скорость, другой - иную. Какую взять? Для разруливания этой ситуации принял правило: берется бОльшая скорость.

Следовательно, необходимо изменить скрипт и скорости в услуге таким образом, чтобы в услуге были минимальные значения.

Например, в услуге поставь входящую скорость в 3 и исходящую в 3. Даже если у тебя такого тарифа и нет, он рисуется скриптом:

в период времени до 10 часов устанавливай скорость 3 на 30
в период времени после 10 часов: 10 на 10


Название: Re: Скрипт управления скоростью (rev. 319)
Отправлено: vasil.german от 05 Мая 2015, 22:48:32
Код:
if (
   get_hour() >= 18
&& get_hour() <  22
&& traf(60) < 2048000
)
{ set_speed_in(100000); return }

if (
traf(720) < 20480000
)
{ set_speed_in(100000) }

Зравствуйте, подскажите пожалуйста, такой скрипт будет правильно решать задачу: с 18 до 22.59 если трафик за час меньше 2гб то «Входящая скорость 1» 100мб, иначе по умолчанию. В иное время если трафик за последние 720 мин меньше 20гб то  «Входящая скорость 1» 100мб, иначе  по умолчанию.

Входящая скорость 1 в настройках тарифа задана = 20 Мбит/сек.
NoDeny+ (rev. 319).

ПС: если я правильно понял то конструкция
Код:
 if (
traf(720) < 20480000
)
{ set_speed_in(100000) }
не должна действовать в промежуток времени с 18 до 22.59. Но есть подозрение что она (конструкция) сделает свое дело в 17.59 и правило будет действовать 720 мин или пока не наберется 20гб. Если да то как решить задачу?
ПС2: В ipfw не силен. Прошу понять и простить. Буду штурмовать.

Итог: надо нарезать в час пик(18–22.59) хомячкам 20мб если скачали за последний час больше 2гб. В иное время пусть качают но не больше 20гб за 720мин. иначе тоже 20мб. 720мин. именно потому чтобы если ночью закончил качать, то когда проснется было снова 100мб.

Заранее всем спосибо!


Название: Re: Скрипт управления скоростью (rev. 319)
Отправлено: ux0qt от 11 Мая 2015, 12:30:14
Такое ощущение что я один только такой у всех все хорошо? Не верю (С)
Тоже самое происходит (rev. 320)   , пока просто отказался от использования скриптов.


Название: Re: Скрипт управления скоростью (rev. 319)
Отправлено: vasil.german от 11 Мая 2015, 21:14:09
Надо нарезать скриптом в час пик(18–22.59) хомячкам 20мб если скачали за последний час больше 2гб. В иное время пусть качают но не больше 20гб за 720мин. иначе тоже 20мб. 720мин. именно потому чтобы если ночью закончил качать, то когда проснется было снова 100мб.

Подскажите пожалуйста !


Название: Re: Скрипт управления скоростью (rev. 319)
Отправлено: vasil.german от 11 Мая 2015, 21:24:08
Код:

if ( get_hour() >= 18
     && get_hour() <  22
     && traf(60) < 2048000
)  { set_speed_in(100000) }

if (
   get_hour() >= 23
   && get_hour() <  17
   &&traf(720) < 20480000
)  { set_speed_in(100000) }

или

Код:
if ( get_hour() >= 18
     && get_hour() <  22
)  {  if (traf(60) < 2048000)
         { set_speed_in(100000) }
       else {return}
   }

if (
traf(720) < 20480000
)
{ set_speed_in(100000) }
как будет правильно ?

Неплохо было бы добавить в скрипт возможность проверять общую нагрузку по  трафику. Например, если  канал за 10мин меньше 500мбит то установить скорость 100мбит.


Название: Re: Скрипт управления скоростью (rev. 319)
Отправлено: vasil.german от 12 Мая 2015, 16:04:55
Итак, рабочий скрипт под мои нужды :

Код:
if (
   get_hour() >= 18
&& get_hour() <  22
)
{  if (traf(60) < 2048000)
   { set_speed_in(100000); return }
   else {return}
}

if (
traf(720) < 20480000
)
{ set_speed_in(100000) }

ПРОВЕРЕНО !!!


Название: Re: Скрипт управления скоростью (rev. 319)
Отправлено: Nafanya от 09 Ноября 2019, 09:19:07
noserver.pl построен таким образом, что к нему можно подключать множество модулей, которые управляют скоростью. Таким образом, получается конфликт, когда один модуль ставит одну скорость, другой - иную. Какую взять? Для разруливания этой ситуации принял правило: берется бОльшая скорость.

Следовательно, необходимо изменить скрипт и скорости в услуге таким образом, чтобы в услуге были минимальные значения.

Например, в услуге поставь входящую скорость в 3 и исходящую в 3. Даже если у тебя такого тарифа и нет, он рисуется скриптом:

в период времени до 10 часов устанавливай скорость 3 на 30
в период времени после 10 часов: 10 на 10

Сделал по рекомендации (возникла необходимость). Не работает.
Цитировать
if (
   get_hour() >= 01
&& get_hour() <  09
)
   { set_speed_in(20000); return }
if (
   get_hour() >= 08
&& get_hour() <  20
)
   { set_speed_in(10000); return }
Может что-то не так? Помогите, Подскажите.
Релиз самый крайний.


Название: Re: Скрипт управления скоростью (rev. 319)
Отправлено: Nafanya от 09 Ноября 2019, 12:30:20
как бы сделал, работает.
Цитировать
if( get_hour() >= 1 &&
    get_hour() <  9
) { set_speed_in(20000); return }
if( get_hour() >= 9 &&
    get_hour() <  20
) { set_speed_in(10000); return }
if( get_hour() >= 23 &&
    get_hour() <  24
) { set_speed_in(10000); return }
if( get_hour() >= 0 &&
    get_hour() <  1
) { set_speed_in(10000) }
Если есть ошибки - подскажите.
Есть вопрос, может кто подскажет. У клиентов стоит удвоение скорости. Она будет работать? Или будет работать скрипт?
Спасибо.


Название: Re: Скрипт управления скоростью (rev. 319)
Отправлено: Efendy от 12 Ноября 2019, 02:04:40
что значит "У клиентов стоит удвоение скорости"? это модуль какой-то?


Название: Re: Скрипт управления скоростью (rev. 319)
Отправлено: Nafanya от 12 Января 2020, 22:13:49
что значит "У клиентов стоит удвоение скорости"? это модуль какой-то?
Повышение скорости в услугах.Все работает. Разобрался. Спасибо.