Jump to content

Recommended Posts

Posted

Существует ли возможность изменения параметров ng интерфейса уже поднятой сессии непосредственно на NAS'e? То есть при поднятии сессии mpd получает параметры с RADIUS и в зависимости от какого-либо параметра (IP не подойдет) повышает лимит скорости интерфейса, либо оставляет его без изменений. Через pipe и ipfw, как я понимаю, скорость можно только урезать.

 

Есть какие варианты через консоль mpd, если они вообще есть?

 

Нужно это для реализации "турбо-кнопки". Понятно, что это можно сделать через билинг/RADIUS, чтобы на NAS приходили уже правильные параметры, но ввиду некоторых специфических особенностей организации сети и тарифных планов, хотелось бы сделать все на NAS.

 

mpd5.5 FreeBSD 8.2

Posted

Присоединяюсь. Только мы ищем вариант обхода ng_car. Хотим просто снимать скоростные ограничения сразу для всех авторизованных абонентов ночью.

Posted

CoA же вроде как поддерживается, и изменение скорости по CoA запросу - тоже...

Да и снимать ограничения тождественно установке скажем 100 мбит ограничения в общем-то...

Posted

CoA же вроде как поддерживается, и изменение скорости по CoA запросу - тоже...

Да и снимать ограничения тождественно установке скажем 100 мбит ограничения в общем-то...

ВОт наша turbo кнопка.

#!/usr/bin/env python
from datetime import datetime
import string
import sys
import os

hosts = ["192.168.53.2", "192.168.53.7", "192.168.53.8", "192.168.53.9", "192.168.53.10", "192.168.53.11", "192.168.53.14", "192.168.53.15", "192.168.53.13"]
port = 3799
password = "password"
radclient = "/usr/local/bin/radclient"

logins = []
logFile = open("/var/log/billing/turbo.log", "a+")
logFile.write("%s [sTART] Set Turbo Mode\n" % datetime.now())

if len(sys.argv) > 1 and os.path.isfile(sys.argv[1]):
   logFile.write("%s [ARGUMENTS] %s \n" % (datetime.now(), sys.argv[1]))
   lgns = open(sys.argv[1])
   for login in lgns:
logins.append(login.rstrip())
logFile.write("%s [ADD] To List %s\n" % (datetime.now(), login.rstrip()))
   lgns.close()
   os.unlink(sys.argv[1])
   for login in logins:
for host in hosts:
    lgn = login.split("-")[0]
    speed = login.split("-")[1]
    set_speed_command = "echo \"User-Name := %s, mpd-limit += 'in#1=all rate-limit %s', mpd-limit += 'out#1=all rate-limit %s'\" | %s %s:%d coa %s" % (lgn, speed, speed, radclient, host, port, password)
    os.system(set_speed_command)
    logFile.write("%s [sEND] %s\n" % (datetime.now(), set_speed_command))
    logFile.write("%s [TURBO] Username: %s\n" %(datetime.now(), lgn))
logFile.write("%s [sTOP]\n" % datetime.now())
logFile.close()

Posted

Кусок моего старого скрипта динамического шейпера под utm5. Как один из вариантов управления скоростью:

	$ebs=floor($speed_shape/8);
$cbs=$ebs/2;
$if_up="/usr/sbin/ngctl msg ".$interface.":inet.1-0-m setconf { upstream={ cbs=".$cbs." ebs=".$ebs." cir=".$speed_shape." greenAction=1 yellowAction=1 redAction=2 mode=3 } downstream={ cbs=".$cbs." ebs=".$ebs." cir=".$speed_shape." greenAction=1 yellowAction=1 redAction=2 mode=3 } }";
$if_dw="/usr/sbin/ngctl msg ".$interface.":inet.0-0-m setconf { upstream={ cbs=".$cbs." ebs=".$ebs." cir=".$speed_shape." greenAction=1 yellowAction=1 redAction=2 mode=3 } downstream={ cbs=".$cbs." ebs=".$ebs." cir=".$speed_shape." greenAction=1 yellowAction=1 redAction=2 mode=3 } }";

exec($if_up);
exec($if_dw);

Где: $speed_shape - скорость в Кбит/с, $interface - ngXX

Соотвественно, надо заранее знать имя ноды. У меня сохранялость в самодельную табличку скриптами up/down значения login/ip/ng* и пр., затем оттуда бралось.

Posted

mrlexus

 

Да, спасибо, что-то в этом духе - теперь понятно куда копать :)

 

Остается актуальным вопрос, что использовать в качестве триггера. IP не подойдет, остальные параметры mpd, как я понимаю, тоже. Можно ли как-то поймать "неважный" параметр от RADIUS'a или включить в словарь новый, чтобы mpd отработал скрипт исходя из его значения?

Posted

mrlexus

 

Да, спасибо, что-то в этом духе - теперь понятно куда копать :)

 

Остается актуальным вопрос, что использовать в качестве триггера. IP не подойдет, остальные параметры mpd, как я понимаю, тоже. Можно ли как-то поймать "неважный" параметр от RADIUS'a или включить в словарь новый, чтобы mpd отработал скрипт исходя из его значения?

я не понял вашего вопроса. По логину можно обратится к mpd5 и сменить скорость

  • 2 weeks later...
Posted

roysbike

 

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

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.