[FUG-BR] IPFW + Burst ?

Luiz Otavio Souza luiz em visualconnect.com.br
Quarta Janeiro 10 14:09:12 BRST 2007


Renato Frederick escreveu:
> (...)
>   
> Só uma pergunta. Estes scripts não consomem muita CPU/memória com o passar
> do tempo? Ou você desenvolveu algo mais "pra baixo" em C e etc, consultando
> diretamente a biblioteca do ipfw? Seria algo bacana de desenvolver hehe
>   
Renato,

Tenho algo assim....

Criei uma tabela no mysql com alguns dados:
mysql> select ip, upload, download, enabled, ready from ips limit 10;
+---------------+--------+----------+---------+-------+
| ip            | upload | download | enabled | ready |
+---------------+--------+----------+---------+-------+
| xxx.xx.xxx.51 |    150 |      300 |       1 |     1 |
| xxx.xx.xxx.50 |    300 |      600 |       1 |     1 |
| xxx.xx.xxx.3  |    175 |      350 |       1 |     1 |
| xxx.xx.xxx.4  |    300 |      600 |       1 |     1 |
| xxx.xx.xxx.5  |    175 |      350 |       1 |     1 |
| xxx.xx.xxx.52 |     64 |      128 |       1 |     1 |
| xxx.xx.xxx.53 |    128 |      256 |       1 |     1 |
| xxx.xx.xxx.54 |     64 |      128 |       1 |     1 |
| xxx.xx.xxx.55 |    128 |      256 |       1 |     1 |
| xxx.xx.xxx.57 |     64 |      128 |       1 |     1 |
+---------------+--------+----------+---------+-------+
10 rows in set (0.00 sec)

E escrevi um daemon pra fazer o trabalho sujo pra mim...  o dummynetd.

Ele le essa tabela, procura por ips habilitados (enabled == 1) e cria os 
pipes e as regras do ipfw.

Esse campo ready da tabela do mysql é utilizado para se comunicar com o 
daemon, se eu preciso alterar uma velocidade, eu altero na tabela e 
depois seto esse campo para 0 (zero). O dummynetd percebe isso e refaz 
os pipes do usuário (e seta o ready novamente para 1 indicando que o 
mesmo esta pronto para uso).

Fora isso ele le os contadores dos pipes e gera os graficos por ip 
utilizando uma base de dados rrd.

Ele esta escrito todo em C, fala direto com o kernel para criar, 
alterar, remover as regras e pipes.

Falta a interface web para administrar essa tabela... nao estou 
preocupado com isso no momento...

O código esta disponivel sob licença BSD, mas não tem manual nem 
instruções de instalação, embora não seja necessário nenhum guru para 
faze-lo funcionar, posso ajudar e tirar as dúvidas de quem precisar.

[]'s
Luiz


Mais detalhes sobre a lista de discussão freebsd