FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD - Controle de Trfego - IPFW2 + Dummynet
 
 
09.01  
Inicio arrow Resumo do Site arrow Controle de Trfego - IPFW2 + Dummynet
Principal
Inicio
Noticias
Artigos
Regras da Lista
Assinar a Lista
Histrico da Lista
PC-BSD: Artigos
PC-BSD: Notcias
Galeria de Imagens
Contador Usurios FUG
FUGs Estaduais
Downloads
Enquetes
FAQ
Resumo do Site
Links
Pesquisar
Contato
Sobre a FUG-BR
RSS
-
DOC-BR (FUG BR)
Introduo
Projeto DOC-BR
Handbook
FAQ Oficial
-
+ Noticias
Alertas de Seguranca
Alertas em Ports
BSD em Geral
DaemonNews (Ingles)
MyFreeBSD
Todas Categorias
-
Login
Nome de Usurio

Senha

Lembrar login
Esqueceu sua senha?
Sem conta? Crie uma


Controle de Trfego - IPFW2 + Dummynet PDF Imprimir E-mail
Por Guilherme Rosrio   
12/06/2006

Controle de Tráfego

IPFW2 + Dummynet


O Dummynet é uma ferramenta muito flexível para gerenciamento de banda, para impor ou simular algumas condições desejadas no tráfego da rede. Ele funciona interceptando os pacotes e passando-os por um ou mais "pipes" ou "queues", que podem efetuar a limitação de banda, perdas de pacotes, retardos de propagação etc. Os pipes são canais com largura de banda fixa, enquanto as queues representam filas de pacotes, associadas a um peso (weight). As queues compartilham, em proporção ao peso, a largura de banda dos pipes aos quais estão associadas.

Todo o gerenciamento do Dummynet é feito através do IPFW, que deverá estar configurado e funcionando.

options DUMMYNET
options HZ=1000

A segunda opção não é obrigatória, mas na maioria dos casos auxilia no funcionamento do Dummynet. Ela define a granularidade do timer utilizado pelo sistema, que é de 10ms (HZ=100) por padrão. Efeitos do Dummynet como o delay de propagação são aplicados um a cada ponto do timer, então reduzir a granularidade irá possibilitar o tratamento de taxas de tráfego mais altas, e a especificação de delays mais precisos. A opção HZ=1000 irá definir a granularidade para 1ms. Valores menores que 1ms não são recomendados, para maiores informações veja a RFC1323.

Adicionadas as opções, compile e instale o kernel, conforme descrito na seção Recompilação e Instalação do Kernel.

Após isso, basta adicionar as regras desejadas através do IPFW. As opções do IPFW específicas para Dummynet estão descritas abaixo.

Para definir um pipe utiliza-se o seguinte comando / regra:

ipfw pipe número config opções-configuração

Para a definição de uma queue utiliza-se o comando / regra abaixo:

ipfw queue número config opções-configuração

Em ambos os casos o parâmetro número não depende da númeração das demais regras do ipfw. As opções de configuração são as seguintes:


Opções de configuração específicas do pipe:

bw banda
Define a largura de banda do pipe. A banda deve ser especificada em Kbit/s, Mbit/s, KByte/s ou MByte/s.


delay delay
Define o delay de propagação do pipe. O delay deverá ser especificado em milisegundos.


Opções de configuração específicas da queue:

pipe número
Conecta a queue ao pipe especificado. Podem ser conectadas várias queues a um único pipe.

weight peso
Especifica o peso daquela queue. O valor pode variar de 1 a 100.


Principais opções de configuração, comuns ao pipe e à queue:

buckets tamanho-tabela
Especifica o tamanho da tabela usada para guardar as diversas queues. O valor pode variar de 16 a 65536, o padrão é 64.

mask especificação-máscara
Define diferentes fluxos através da aplicação da máscara especificada. Cada fluxo é enviado para uma queue ou pipe separado, criados dinamicamente. Cada pipe dinâmico terá a mesma largura de banda do pipe original, enquanto que cada queue dinâmica irá compartilhar com as demais dinâmicas a largura de banda do pipe ao qual está conectada a original. A especificação de máscara deve ser uma ou mais das seguintes:
dst-ip máscara, src-ip máscara, dst-port máscara, src-port máscara, proto máscara ou all.
O parâmetro all define que todos os bits em todos os campos são significantes.

noerror
Não reporta o erro quando um pacote for perdido, por exemplo em uma simulação de perda de pacotes ou congestionamento.

plr taxa-perda
Define a taxa de perda de pacotes. O valor deverá ser entre 0 e 1, com 0 significando nenhuma perda, e 1 significando 100% de perda.

queue {slots | tamanhoKBytes}
Tamanho da fila, em slots ou KBytes.


Os comandos para manipular as regras de pipes e queues são similares aos das regras comuns do IPFW:

ipfw {pipe | queue} {delete | list | show} número


Exemplos


 

Limitar o tráfego da rede 10.10.0.0/16 para a 192.168.0.0/16 em 300 Kbit/s:

ipfw add 1000 pipe 1 src-ip 10.10.0.0/16 dst-ip 192.168.0.0/16
ipfw pipe 1 config bw 300Kbit/s queue 50KBytes


Simular uma perda de pacotes de entrada de 5%:

ipfw add 1000 pipe 1 in
ipfw pipe 1 config plr 0.05


Limitar o tráfego em 300Kbit/s de entrada em ambas as direções:

ipfw add 1000 pipe 1 in
ipfw add 1100 pipe 2 out
ipfw pipe 1 config bw 300Kbit/s queue 50KBytes
ipfw pipe 2 config bw 300Kbit/s queue 50KBytes


Limitar o tráfego de cada máquina da rede 10.10.0.0/16 em 128Kbit/s nas duas direções:

ipfw add 1000 pipe 1 src-ip 10.10.0.0/16 out
ipfw add 1100 pipe 2 dst-ip 10.10.0.0/16 in
ipfw pipe 1 config mask src-ip 0x000000ff bw 128Kbit/s queue 10KBytes
ipfw pipe 2 config mask dst-ip 0x000000ff bw 128Kbit/s queue 10KBytes


Introduzir um delay no tráfego:

ipfw add 1000 pipe 1 in
ipfw add 1100 pipe 2 out
ipfw pipe 1 config delay 250ms bw 1Mbit/s
ipfw pipe 2 config delay 250ms bw 1Mbit/s



Devemos dar atenção ao tamanho da queue (fila) nos pipes quando fazemos limitação de banda, pois apesar de limitarmos a largura de banda em 50 Kbit/s, por exemplo, o MTU da interface de rede continua o normal, 1500 bytes. Se não for especificado o tamanho da fila, ela será muito grande e irá gerar um delay não desejado no tráfego. O tamanho padrão da fila é 50 slots, que multiplicado pelo MTU de 1500 bytes, dá o valor de 600 Kbits. Essa fila iria levar 12 segundos para ser preenchida por uma banda de 50 Kbit/s, o que é um atraso muito grande na comunicação.

Referencia: http://www2.unijui.tche.br/~heini/freebsd/dummynet.html

Comentrios


Comente!*
Nome:
E-mail
Homepage
Ttulo:
Comentrio:

Cdigo:* Code

ltima Atualizao ( 12/06/2006 )
 
< Anterior   Prximo >
FUG-BR - Espalhando BSD
Dicas Rpidas:

Após sincronizar o Ports, para atualizar seu INDEX de aplicações se você tiver portupgrade instalado, digite:

portsdb -Uu 

Se não tiver portupgrade:

cd /usr/ports/
make fetchindex

 






Wallpapers
Online:
Ns temos 19 visitantes online


Devil Store - Sua loja BSD
FreeBSD Brasil LTDA

FUG-BR: Desde 1999, espalhando BSD pelo Brasil.