freebsd
[Início] [Todas as Listas]

Re: [FUG-BR] Controle de Banda [OFF-TOPIC]

From: "Marcio Antunes" <mantunes.listas@xxxxxxxxx>
To: "Lista Brasileira de Discussão sobre FreeBSD (FUG-BR)" <freebsd@xxxxxxxxxx>
Subject: Re: [FUG-BR] Controle de Banda [OFF-TOPIC]
Date: Thu, 31 May 2007 15:23:26 -0300
Tiago..

fica a dica.. pq vc nao escreve um artigo para FUG sobre este script..
faz um bom tempo que não temos artigos atualizados.. Por enquanto
ainda não postei nenhum estou fora do alcance ainda..

Parabens pelo script.



Em 31/05/07, Tiago N. Sampaio<mega@xxxxxxxxxxx> escreveu:
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


<Anterior na Thread] Thread Atual [Próximo na Thread>