Динамический шейпер

Ubilling начиная с версии 0.1.7 поддерживает нативную механику изменения пользоватльских скоростей в обход тарифных, в зависимости от времени суток. Для управления динамическими шейперами в произвольных временных отрезках, существует соответствующий модуль.
Скоростя в нем задаются в виде интервалов времени в формате ЧЧ:ММ:СС «от и до». Логика построения тарифа «5 мегабит днем / 10 ночью» легко прослеживается по скриншоту приведенному ниже.

Будьте внимательны при заполнении временных рамок - для каждого тарифа требуется минимум два условия, чтобы скорость вернулась «на место». Количество правил динамического шейпера практически не лимитировано (1440 правил на каждый тариф достаточно?). Итого получаем «день» от 08:11:00 утра и до 23:59:59, после чего начинается «ночь», которая продлится до 08:10:59.
Для того, чтобы эта вся радость работала предусмотреным образом нам потребуется вызов скрипта dnswitch (в дистрибутиве он находится в docs/dshaper/) в нужные интервалы времени.

В норме предусмотрено, что скрипт dnswitch должен лежать в директории /etc/stargazer рядом с директорией dn:

# cp docs/dshaper/dnswitch.php /etc/stargazer/

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

dnswitch.php
//mysql settings
$db_host='localhost';
$db_database='stg';
$db_login='mylogin';
$db_password='newpassword';

В crontab это должно выглядеть следующим образом:

02 0  * * *     /usr/local/bin/php /etc/stargazer/dnswitch.php >> /var/log/dn.log
12 8  * * *     /usr/local/bin/php /etc/stargazer/dnswitch.php >> /var/log/dn.log


В случае если вы используете изначальные заготовки скриптов OnConnect/OnDisconnect ничего больше для успешной работы динамического шейпера не требуется. Если же это не так, убедитесь, что в них присутствуют следующие секции:

OnConnect
/bin/echo $SPEED:`expr $ID + 18101` > /etc/stargazer/dn/$LOGIN
/bin/chmod 777 /etc/stargazer/dn/$LOGIN
OnDisconnect
/bin/rm /etc/stargazer/dn/$LOGIN

Собственно это нужно для того, чтобы dnswitch знал какие абоненты сейчас находятся онлайн (ясно, что для неактивных крутить шейпер бесперспективно) и какие пайпы dummynet им соответствуют.
Начиная с Ubilling 0.4.7 динамический шейпер включается опцией DSHAPER_ENABLED.

dnswitch.txt · Последние изменения: 2014/10/17 16:34 — nightfly
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki