Você está na página 1de 10

HTB E HTB-TOOLS NO DEBIAN ETCH 4: A IMPORTNCIA, AS FUNCIONALIDADES E O DESEMPENHO NO CONTROLE DE BANDA EM UMA REDE DE COMPUTADORES.

Acio dos Santos Pires e Dannylo Xavier Wanderley, alunos do CST em Redes de Computadores CEFET/PB.

RESUMO Este artigo tem por objetivo mostrar uma soluo de controle de trfego de dados e de banda em uma rede de computadores com acesso a Internet utilizando software livre. Sero realizados um estudo de caso com as ferramentas utilizadas, a avaliao da rede, do servidor e do link fsico de acesso a Internet aps a implantao da soluo baseada no sistema operacional GNU/Linux. A distribuio GNU/Linux Debian Etch 4 foi cogitada para ser usada como sistema operacional - no servidor - devido a sua facilidade de instalao, gerenciamento e compatibilidade com a tecnologia HTB. A metodologia empregada contemplar o estudo de tcnicas para viabilizar o controle do trfego de dados de upload e download. O principal resultado esperado ser a implementao de um controle de banda de acesso Internet, garantindo uma taxa de conexo mnima e suficiente aos usurios que necessitam desenvolver seus trabalhos, pesquisas e estudos, como tambm diminuir as taxas de conexo das pessoas que abusam na utilizao da Internet para ter acesso a contedos e servios altamente proibidos na instituio em que participam. ABSTRACT This article has for objective to show a solution of control of data's traffic and of band in a computers network with Internet access using free software. A case study will be accomplished with the used tools, the evaluation of the net, of the server and of the physical link of access Internet after the implantation of the solution based on the Linux operating system. The GNU/Linux Debian Etch 4 distribution was cogitated to be used as operating system - in the server - due to your installation easiness, administration and compatibility with the technology HTB. The used methodology will contemplate the study of techniques to make possible the control of the traffic of upload data and download. The principal expected result will be the implementao of a control of access band to Internet, guaranteeing a rate of minimum and enough connection to the users that need to develop your works, researches and studies, as well as the rates of the people's connection that abuse in the use of Internet to have access to contents and highly forbidden services in the institution to decrease in that participate. Palavras-chave: controle de banda, HTB, upload, download, redes de computadores.

1. INTRODUO A economia de recursos, equipamentos, servios, compartilhamento de Internet entre outras vantagens tornam indispensvel o uso de redes de computadores em diversas instituies. Porm preciso dividir o uso dos recursos entre os usurios de forma que todos possam usufruir sem prejudicar os demais. o que acontece quando algum usa muita banda de acesso Internet, deixando os outros usurios com acesso restrito e lento. Este problema pode ser resolvido com o HTB, que impe o controle na banda e, ento, garante uma taxa de conexo de acordo com as necessidades e as prioridades de cada usurio pertencente a uma rede de computadores. 2. O QUE HTB? O HTB (Hierarchical Token Bucket) um recurso nativo do kernel GNU/Linux utilizado no controle do trfego de um link fsico de acesso a Internet em uma rede de computadores. Quando nos referimos ao controle de trfego, estamos nos referindo ao controle das taxas de download e de upload que os computadores tm acesso, prioridade de entrada e sada de pacotes na rede, ao contedo e ao controle da banda. 3. AS CARACTERSTICAS DO HTB O controle de banda com o HTB realizado com o auxlio dos seguinte componentes do kernel do GNU/Linux: o qdisc, class, filter e classificadores. 3.1. QDISCS Os qdiscs (Queueing Discipline ou Disciplina de Enfileiramento) nada mais so do que as filas de sada dos pacotes. O GNU/Linux possui dois tipos de qdisc: o classless e o classfull. 3.1.1. CLASSLESS QDISCS Os qdiscs classless (qdiscs no baseado em classes) no podem conter classes definidas pelo usurio. Por padro o GNU/Linux atribui o qdisc pfifo_fast baseado no conceito FIFO (First-in First-out ou Primeiro a Entrar - Primeiro a sair) para todas as interfaces de rede de sua mquina, porm isso pode ser mudado para o qdisc SFQ (Stochastic Fairness Queueing) que utilizado para distribuir de maneira igualitria a todos os computadores da rede a oportunidade de utilizar o fluxo de dados a ser servido. Para que isso acontea ele se utiliza de um algoritmo de escalonamento para servir as filas. Ele possui um parmetro perturb, que verifica em segundos a solicitao de banda por conexo e automaticamente divide o fluxo.

3.1.2. CLASSFULL QDISCS Os qdiscs classfull (qdiscs baseados em classes) podem conter subclasses definidas pelo usurio, podendo desta forma separar e atribuir quantidades de banda diferentes para cada tipo de fluxo definido. O qdisc s pode ser atribudo para cada interface de rede. O HTB possui suporte a classes, por isso ele pode ser usado como um qdisc ou apenas uma classe. Quando utilizado com uma classe, ele possui o parmetro opcional default, que indica a subclasse por onde o pacote deve ir quando no for classificado por nenhum filtro definido pelo usurio. Como escalonador o HTB possui, dentre outros, os seguintes parmetros : rate - velocidade em bits de transmisso dos pacotes. burst - tamanho mximo em bits que pode ser acumulado para rajada. ceil - velocidade total da classe superior. Utilizado para fazer o borrowing, ou seja, emprstimo de banda excedente de uma classe para outra. 3.2. CLASS As classes s existem em qdiscs classfull. Elas so utilizadas para dividir o trfego, dando um tratamento diferenciado se necessrio. Existem dois tipos de classes, as leafs (ou folhas), que so classes que no possuem filhos e as inner (ou internas), que so classes que possuem filhos. 3.3. FILTER Os filtros tem a funo de separar o trfego entre as diversas classes de um qdisc classfull. Esta funo feita atravs de classificadores. 3.4. CLASSIFICADORES Os classificadores no GNU/Linux so utilizados para identificar certas caractersticas e/ou padres dos pacotes e fluxo, permitindo assim a separao em classes. Neste trabalho citaremos apenas o classificador U32, o qual utilizamos em nossos estudos. 3.4.1. U32 O U32 um classificador muito bom e que possui alguns parmetros interessantes, no qual possvel identificar IP de origem/destino, porta de origem/destino e at mesmo o protocolo usado. 4. O HTB-TOOLS

H vrias formas de limitar o uso de uma conexo de Internet em uma rede de computadores usando o HTB. No GNU/Linux existe o comando tc (Traffic Control) que responsvel pelo controle de trfego. Mas neste trabalho utilizaremos o HTB-TOOLS que uma ferramenta de auxlio na configurao do HTB para limitao de uso de banda mais simples e intuitivo que o tc. 5. COMO FUNCIONA O HTB EM UMA REDE LOCAL DE COMPUTADORES? Quando um pacote entra na interface controlada pelo HTB, ele passa por um processo de Classifying, um mecanismo pelo qual os pacotes so separados de forma a terem tratamentos diferentes, possivelmente colocando-os em diferentes filas de sada. Logo depois, acontece o Policing, mecanismo pelo qual o trfego pode ser limitado. Logo aps, todos os pacotes so ordenados ou re-ordenados para serem enviados, o chamado Scheduling ou escalonamento. Por fim, acontece o Shapping, que o ato de "atrasar" o envio de pacotes de forma que o trfego seja retido para ento ser repassado adiante. exatamente dessa forma que feito o controle de banda pelo HTB. 6. OS PR-REQUISITOS PARA USAR O HTB E HTB-TOOLS NO DEBIAN ETCH 4 Para usar o HTB necessrio ter um servidor com uma conexo de Internet e, ao mesmo tempo, conectado as estaes de trabalho. Alm disso, so necessrias pelo menos duas placas de rede. A distribuio Debian Etch com o kernel Linux verso 2.6.18 ou superior deve estar corretamente instalada porque os mdulos do HTB j estaro inclusos no kernel. Finalmente, o administrador da rede deve ser capaz de utilizar o modprobe e permitir o carregamento de mdulos quando inicia o sistema operacional. Para usar o HTB-TOOLS preciso que: o HTB esteja funcionando com seus respectivos mdulos carregados em memria, um editor de texto e os seguintes pacotes: Make Flex, GCC juntamente com seus cabealhos e o iproute2. O comando ficaria o seguinte: # apt-get install make libmudflap0-dev iproute flex gcc libc6-dev libc-dev

7. A INSTALAO DO HTB E DO HTB-TOOLS NO DEBIAN ETCH 4 Confirmado que o seu kernel pertencente a verso 2.6.18 ou superior, simplesmente execute os seguintes comandos: (Lembrando que # significa que deve ser executado como o usurio root). # modprobe sch_htb

# modprobe sch_sfq # modprobe cls_u32 Crie o diretrio man8 (na instalao ser copiado um arquivo de manual para esta pasta). #mkdir /usr/local/man/man8 Feito isto, o HTB j se encontra em pleno funcionamento e j pode ser utilizado para controlar a banda. Porm, vamos instalar o HTB-TOOLS para simplificar a configurao. Primeiramente acesse o site: http://htb-tools.arny.ro/download.php e escolha a verso que mais lhe agrada do HTB. No nosso estudo, utilizamos o tar.gz da verso 0.3.0a. Depois de feito o download, descompactamos o pacote htb_tools-0.3.0a.tar.gz. # tar -zxvf htb_tools-0.3.0a.tar.gz Ento entre no diretrio HTB-TOOLS-0.3.0. # cd HTB-TOOLS-0.3.0a L dentro execute os comandos make e o make full. # make && make full Isto ir instalar os binrios q_parser, q_show, q_checkcfg, htb, htbgen no diretrio /sbin , o script rc.htb ir para o diretrio de scripts que for indicado, os dois arquivos de configurao padro eth0-qos.cfg para upload and eth1-qos.cfg para download iro para a pasta /etc/htb e tambm instalar o q_show.php e o gerador de configuraes wHTB-tools. Pronto, o HTB-TOOLS est funcionando em conjunto com o HTB. 8. CONFIGURANDO O HTB-TOOLS NO DEBIAN ETCH 4 bastante trivial a configurao do HTB. Imaginando que o trfego da rede interna tenha que passar da interface de rede eth0 para sair pela eth1, ento, basta alterar o eth0-qos.cfg padro (isto para o eth0, claro) conforme a necessidade da rede. Digamos que se deseja que o trfego da rede de uma empresa 192.168.1.0/24 (rede_1) tenha exclusividade de 512Kbps no mximo e 480Kbps garantidos nos dias de pico. Sabendo que a banda mxima que a rede pode atingir de 5Mbps, ento, o arquivo eth0-qos.cfg ficaria assim:

class Rede_Empresa { bandwidth 5000; limit 5000; burst 0; priority 1; client rede_1 { bandwidth 480; limit 512; burst 0; priority 1; dst { 192.168.1.0/24; }; }; client rede_geral { bandwidth 8; limit 5000; burst 0; priority 2; dst { 0.0.0.0/24; }; }; }; class default { bandwidth 8; };

Um diferencial que o HTB possui em relao as demais ferramentas de controle de trfego que voc pode determinar qual a banda mnima garantida que o usurio ir ter e qual o limite mximo que ele usar caso haja disponibilidade no link. Feito esta configurao, basta executar o seguinte comando para que as regras de controle de banda entrem em vigor: # /etc/init.d/rc.htb start_eth0 Est feito o controle de banda desta empresa, dando exclusividade de 512Kbps para a rede 1, assim tambm, limitando a banda da rede para 4520Kbps. Entende-se que, tudo o que no estiver declarado como a rede_1, faz parte da classe default e no da classe Rede_Empresa.

H outras variantes para a configurao do HTB-TOOLS. No caso acima citado, fizemos o controle do download (dst = destination). Para controlar o upload utiliza-se src (source) no lugar do dst. Pode ser usado o IP de um host, no lugar de usar o IP da rede, apenas citando o ip seguido da mscara. (Ex.: 192.168.1.35/24;) Se quiser controlar uma porta especfica, basta incluir o nmero da porta logo aps o IP da rede/host. (Ex.:para a porta 80 ==> 192.168.1.0/24 80). Outros controles que podem ser usado na administrao usando o HTB com HTBTOOLS : # /etc/init.d/rc.htb <parmetro> parmetro = start | stop | start_eth0 | start_eth1 | stop_eth0 | stop_eth1 | show_eth0 | show_eth1 | gen_eth0 | gen_eth1 Onde: start - coloca em vigor todas as regras existentes em /etc/htb. stop - para e apaga todas as regras em vigor. start_eth0, start_eth1 - coloca em vigor as regras da interface eth escolhida. stop_eth0, stop_eth1 - apaga as regras em vigor da interface eth escolhida. show_eth0, show_eth1 - mostra, em tempo real, o quanto de banda est sendo usado e por quem para a interface eth escolhida. gen_eth0, gen_eth1 - gera o arquivo de configurao da eth escolhida para redes classe C. Outra alternativa ao script usar o comando htb. Modo de uso: # htb <interface> { start | stop | stats | generate } ou # htb { help | version } Onde: interface - a interface de rede que voc deseja controlar start - aplica as propriedades do arquivo de configurao na interface stop - apaga as regras aplicadas a interface especfica stats - mostra, em tempo real, a estatstica de trfego para a interface generate - apenas cria o script para aplicar as regras help - mostra algumas informaes teis version - mostra a verso e informaes de direitos autorais 9. TESTANDO COMPUTADORES O HTB E HTB-TOOLS EM UMA REDE LOCAL DE

Depois que estudamos a instalao, a configurao e que j conhecemos algumas caractersticas do HTB e do HTB-TOOLS, iremos testar e avaliar o despenho das ferramentas estudadas, bem como das estaes clientes de trabalho em uma rede de computadores de uma determinada instituio universitria. A rede estruturada em VLANS (Virtual Local Area Networks ou Redes Locais Virtuais). A universidade em estudo, possui cerca de 600 computadores e uma conexo de 8 Mbps que est saturado devido, principalmente, a falta do controle de banda e/ou do mau uso desse servio, o que gera a insatisfao dos usurios e "lentido" na conexo de determinado servios crticos como: aos laboratrios de informtica, ao departamento financeiro e ao sistema de controle acadmico. Iremos gerenciar nesta rede apenas as VLANS 64, 75 e 92 as quais pertencem respectivamente: trs laboratrios de informtica (totalizando 93 computadores), o setor financeiro (totalizando 5 computadores) e a coordenao de controle acadmico (totalizando 8 computadores), garantindo a qualidade do servio oferecido aos setores em questo. As demais VLANS disputaro a conexo restante entre si representada pela classe default. A VLAN 64 ter uma conexo mnima de 1024 Mbps para download e upload, podendo obter 1536 Mbps quando houver poucas requisies de acesso a Internet. As VLANS 75 e 92 tero acesso cada uma conexo variando de 512 a 640 Mbps. Restando, portanto, uma banda que de 6144 Mbps para a classe default que atender aos demais computadores da rede. 9.1. OS EQUIPAMENTOS UTILIZADOS O teste foi realizado em um servidor que funcionava com um firewall interno com o Iptables instalado e devidamente configurado filtrando as portas e os pacotes de dados que trafegavem, tendo como origem e destino a rede interna da instituio. O servidor utilizado possui as seguintes configuraes fsicas: IBM Server xSeries 225; Processador Intel Xeon (TM) 2.8 GHz; 512 MB de memria RAM; 2 Placas de rede Realtek RTL8139a.

9.2. O RESULTADO DO TESTE DO CONTROLE DE BANDA COM O HTB E O HTB-TOOLS NO DEBIAN ETCH 4 No servidor, antes da implantao do controle de banda, havia pouco uso memria RAM e processamento moderado. Aps toda a instalao e o pleno funcionamento do HTB e do HTB-TOOLS, verificou-se que no houve aumento no uso da memria RAM e que o uso da CPU cresceu cerca de 5%. Logo, o HTB e o HTB-TOOLS utilizam o mnimo de memria RAM e processamento possveis para controlar a banda.

O link fsico de 8 Mbps, antes saturado por conexes no to importantes, agora est melhor administrado e com tima taxa de conexo. As VLANS 64, 75 e 92 obtiveram a conexo mnima pr-definda mesmo em horrios de pico de acesso a Internet. 10. CONSIDERAES FINAIS A partir deste trabalho percebemos que o HTB em conjunto com o HTB-TOOLS so timas solues tecnolgicas e economicamente viveis para serem utilizadas no controle de banda usando o sistema operacional Linux. No estudo de caso realizado, conseguimos alcanar o principal resultado esperado: a implementao de um controle de banda, garantindo uma taxa de conexo mnima e suficiente aos usurios para desenvolver seus trabalhos, pesquisas e estudos, como tambm a diminuio do uso excessivo da conexo por alguns usurios para terem acesso a contedos e servios altamente imprprios na instituio em que participam. 11. REFERNCIAS LIRA, Christian e TORRES, Pedro - Construindo Roteadores com Linux. Disponvel em: http://www.rnp.br/_arquivo/sci/2003/roteadores_linux_v1.pdf Acesso em: 15 de junho de 2007. SECCO, Fernando M. - Controle de Trfego utilizando o Debian Sarge. Disponvel em: http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=5344&pagina=4 Acesso em: 15 de junho de 2007. CUNHA, Emanuel M. - Squid + HTB-TOOLS = Cache Passando a Full para os Usurios. Disponvel em: http://under-linux.org/wiki/index.php/Tutoriais/Proxy/Squidcachefull#Autor Acesso em: 15 de junho de 2007. NERI, Felipe - Compartilhando Internet com Controle de Banda. Disponvel em: http://www.vivaolinux.com.br/dicas/verDica.php?codigo=6926 Acesso em: 15 de junho de 2007. STANIC, Milan P. - TC Traffic Control. Disponvel em: http://www.rns-nis.co.yu/~mps/ linux-tc.html Acesso em: 15 de junho de 2007. REIS, Wanderson Santiago dos - HTB-TOOLS: Exemplos Prticos de Configurao. Disponvel em: http://www.wasare.net/home/node/17 Acesso em: 15 de junho de 2007. REIS, Wanderson Santiago dos - Controle de Banda Descomplicado com HTB-TOOLS. Disponvel em: http://www.wasare.net/home/node/2Acesso em: 15 de junho de 2007. Viso Net - Utilizando HTB para QoS. Disponvel em: http://consultoriatecnica.visaonet.com.br/tiki/tiki-

pagehistory.php?page=Utilizando%20HTB%20para%20QoS&diff2=12&diff_style=sideview Acesso em: 15 de junho de 2007.