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

Responder a