Eu faço isso, fiz um script em php que pega o uso atual da banda via
snmp, tira a media com o minuto anterior
e aumenta ou diminui a banda...
ele na verdade grava em arquivos, e depois eu fiz um script de firewall
ler esse arquivos...
vou colocar o script aqui, pq ele eh pequeno mesmo:
#!/usr/local/bin/php -f
<?
require("adodb/adodb.inc.php");
$dbhost="seudbpgsql";
$dbpass="senha";
$dbuser="user";
$dbbase="base";
$db = NewADOConnection('postgres8');
$db->Pconnect($dbhost,$dbuser,$dbpass,$dbbase) or die("erro");
//Essa variavel define a taxa de amostragem
$tempo = 60;
//Soh pra zerar...
$anterior="";
$atual="";
// valores que vc quer que a sua banda fique, pois ele vai tentar manter
entre os dois sempre...
//em BPS
$tetomaximo="11800000";
$tetominimp="11200000";
//percentual anterior
$percentual=0.5;
//toda a variação é nesses valores, que vai de 0% a 100%
$velocidades = array(50,80,100,150,210,50,374,648,90,200,500);
//o que estiver aqui eh garantido
$velocidades_garantidas = array(100,150,200,300,390,50,650,1400,60,100,100);
//Arquivos pra gravar as velocidades
$arquivos =
array("V150","V230","V300","V450","V600","V128","V1024","V2048","V150N","V300N","V600N");
while(TRUE){
$anterior=$atual;
$atual = snmpget("ipdorouter","comunidade","ifOutOctets.1");
$atual = str_replace("Counter32: ","",$atual);
sleep($tempo);
if(!$anterior || !$atual) continue;
$media = round((($atual - $anterior)/$tempo)*8);
else if($media > $tetomaximo) mudar_percentual(0);
else if($media < $tetominimo) mudar_percentual(1);
else continue;
system("/bin/sh /etc/firewall/pipes.sh");
}
function mudar_percentual($status){
GLOBAL $percentual;
GLOBAL $velocidades;
GLOBAL $velocidades_garantidas;
GLOBAL $arquivos;
GLOBAL $db;
if($status == 1){
if($percentual > 0.9) return;
$percentual+=0.1;
}else{
if($percentual < 0.1) return;
$percentual-=0.1;
}
for($i=0;$i<count($velocidades);$i++){
$velocidade =
round($velocidades_garantidas[$i]+($velocidades[$i]*$percentual));
$db->Execute("UPDATE velocidades SET velocidade =
'$velocidade' WHERE plano = '".$arquivos[$i]."'");
if(!($arquivo=fopen("/etc/firewall/velocidades/".$arquivos[$i],"w"))){
continue;
}
fprintf($arquivo,$velocidade);
fclose($arquivo);
}
}
?>
É algo bem simples e tosco, que grava a velocidade no banco apenas pra
consulta, pro gerente saber a quantas andam os planos
dos clientes...
ai vc adapta ele conforme vc precisar...
E antes que alguem me fale, Pq naum usa pf, jah usou um pf com mais de
2000 queues?
eu tentei colocar, mas pra medir a velocidade de todo mundo aqui,
precisaria de no minimo uma maquina quadriprocessada...
Abraços
ThOLOko wrote:
> Galerinha BSD,
>
> Queria desenvolver algum tipo de controle de banda em IPFW que seja
> dinamico... por exemplo,,, criar grupos de bandas conforme o uso do pessoal
> para nao disperdiçar banda...
>
> Alguem tem alguma ideia??? Gostaria de usar PHP+MySQL contendo os clientes e
> suas respectivas bandas...
>
> PF resolveria??
>
> Abbraços...
>
>
-------------------------
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd