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