Com certeza quase todo administrador de rede tem uma dor de cabeça constante: reclamações sobre o link Internet estar lento. Isso ocorre porque a maioria das redes não possuem controle de tráfego.
O controle de tráfego é essencial, pois propicia condições justas para que todos naveguem com boa velocidade. Mas o que causa a saturação do link? Um exemplo clássico é o Emule. Imagine que você possua um link de 10 Mb/s na sua empresa e 20 computadores. De repente, um computador começa a baixar um filme via Emule. Ele buscará partes do filme em várias fontes. Com isso, baixará uma pedaço aqui, outro ali etc. Tudo ao mesmo tempo. Assim, por causa de uma única máquina, foram-se os seus 10 Mb/s. Aumentar o tamanho do link é sinônimo de deixar o “bandido ladrão de link” baixar mais filmes ao mesmo tempo. De nada resolve. A solução é controle de tráfego.
Como acabo de falar sobre Delay Pool no Squid lá no meu Wiki, resolvi escrever este artigo para agrupar tudo o que tenho sobre controle de tráfego.
HTB e Iptables
O HTB é uma disciplina de controle que permite criar diversos canais, conhecidos como classes, por onde passarão os diversos tipos de tráfego. São como tubos. Podemos dizer que em um tubo passará somente o que for HTTP, em outro o que for FTP e email e assim por diante. Um dos tubos será o default. Tudo que não for especificado de alguma forma cairá no tubo default. Ainda, podemos dizer qual classe (tubo) tem prioridade. Assim, em um momento de disputa, um tráfego HTTP terá prioridade, por exemplo. Resultado: rede dez vezes mais rápida com o mesmo link.
O Iptables entende HTB. Então, o HTB criará as classes e o Iptables colocará cada tipo de tráfego na classe correta.
As referências são as seguintes:
- Artigo Controle de tráfego com TC, HTB e Iptables, no wiki.
- Palestra Controle de tráfego com Iptables e HTB, em minhas palestras.
Delay pool no Squid
O delay pool permite, dentre outras tarefas, controlar a velocidade de download na rede por usuário. Essa é uma medida complementar obrigatória ao HTB. O Squid consegue gerenciar sozinho praticamente tudo, podendo, inclusive, utilizar expressões regulares.
Implementar um controle por usuário via HTB seria extremamente complicado e trabalhoso. Disso vem a importância de agregar o Squid ao HTB.
A referência é a seguinte:
- Artigo Implementação de delay pool com Squid, no wiki.
Curiosidade
Apesar de muitos se referirem às atividades citadas como “controle de banda”, o nome correto é “controle de tráfego”. Banda é a capacidade de transmissão que um meio tem. Essa capacidade é medida em hertz. Controle de tráfego é dizer quais pacotes têm prioridade, a velocidade que os mesmos poderão trafegar etc.
Conclusão
Controle de tráfego é essencial em uma rede. Sem ele, as redes de computadores só funcionam pela graça de Deus.
Eriberto,
Realizei todo o procedimento do artigo http://eriberto.pro.br/wiki/index.php?title=Controle_de_tr%C3%A1fego_com_TC,_HTB_e_Iptables, entretanto o trafego http está passando pela classe “Geral”. Realizei outro teste criando uma classe para o SAMBA (porta 445) e o mesmo continua passando pela classe geral, uso os seguintes comandos no iptables para realizar os redirecionamentos:
iptables -t mangle -F
iptables -t mangle -A FORWARD -p tcp -m multiport –ports 80,3128 -j CLASSIFY –set-class 1:30
iptables -t mangle -A FORWARD -o eth0 -p tcp –sport 445 -j CLASSIFY –set-class 1:50
Todo o trafego continua passando pela classe 1:40 (Geral)
Já passou por esse problema? alguma dica? Desde já agradeço
Rodrigo: só terei como analisar se eu ver, por completo, todos os comandos HTB e Iptables.
[]s
Use OUTPUT no lugar de FOWARD na linha abaixo:
iptables -t mangle -A FORWARD -p tcp -m multiport –ports 80,3128 -j CLASSIFY –set-class 1:30
Espero ter ajudado. Marcos.