{"id":101,"date":"2011-03-23T17:21:31","date_gmt":"2011-03-23T20:21:31","guid":{"rendered":"http:\/\/blog.digavoip.com.br\/2011\/03\/23\/gerenciamento-no-controle-de-banda-%e2%80%93-htb-tools\/"},"modified":"2011-03-23T17:21:45","modified_gmt":"2011-03-23T20:21:47","slug":"gerenciamento-no-controle-de-banda-%e2%80%93-htb-tools","status":"publish","type":"post","link":"https:\/\/blog.abratel.com.br\/?p=101","title":{"rendered":"GERENCIAMENTO NO CONTROLE DE BANDA \u2013 HTB-Tools"},"content":{"rendered":"<p>ATEN\u00c7\u00c3O: O PACOTE DO HTB-TOOLS E O ARQUIVO BITOPS.H ENCONTRAM-SE ANEXADOS.<\/p>\n<p>Este artigo tem por objetivo mostrar uma solu\u00e7\u00e3o de gerenciamento e controle de tr\u00e1fego de dados e de banda em uma rede de computadores com acesso a internet utilizando software livre, dando prefer\u00eancia aos recursos de maior prioridade para utiliza\u00e7\u00e3o de sua banda (link). O conhecido QoS (Qualidade de Servi\u00e7o). Foi realizado um estudo de caso com as ferramentas utilizadas, a avalia\u00e7\u00e3o da<br \/>\nrede, do servidor e do link f\u00edsico de acesso a Internet ap\u00f3s a implanta\u00e7\u00e3o da solu\u00e7\u00e3o baseada no sistema operacional GNU\/Linux. A distribui\u00e7\u00e3o GNU\/Linux Fedora 9 foi cogitada para ser usada como sistema operacional &#8211; no servidor &#8211; devido a sua facilidade de instala\u00e7\u00e3o, gerenciamento e compatibilidade com a tecnologia HTB. A metodologia empregada contemplar\u00e1 o estudo de t\u00e9cnicas para viabilizar o controle do tr\u00e1fego de dados de upload e download. O principal resultado esperado ser\u00e1 a implementa\u00e7\u00e3o de um controle de banda de acesso \u00e0 Internet, garantindo uma taxa de conex\u00e3o m\u00ednima e suficiente aos usu\u00e1rios que necessitam desenvolver seus trabalhos, pesquisas e estudos, como tamb\u00e9m diminuir as taxas de conex\u00e3o das pessoas que abusam na utiliza\u00e7\u00e3o da Internet para ter acesso a conte\u00fados e servi\u00e7os altamente proibidos na institui\u00e7\u00e3o em que participam.<\/p>\n<p>1. INTRODU\u00c7\u00c3O<br \/>\nA economia de recursos, equipamentos, servi\u00e7os, compartilhamento de Internet entre outras vantagens tornam indispens\u00e1vel o uso de redes de computadores em diversas institui\u00e7\u00f5es. Por\u00e9m \u00e9 preciso dividir o uso dos recursos entre os usu\u00e1rios de forma que todos possam usufruir sem prejudicar os demais. \u00c9 o que acontece quando algu\u00e9m usa muita banda de acesso \u00e0 Internet, deixando os outros usu\u00e1rios com acesso restrito e lento. Este problema pode ser resolvido com o HTB, que imp\u00f5e o controle na banda e, ent\u00e3o, garante uma taxa de conex\u00e3o de acordo com as necessidades e as prioridades de cada usu\u00e1rio pertencente a uma rede de computadores.<\/p>\n<p>2. O QUE \u00c9 HTB?<br \/>\nO HTB (Hierarchical Token Bucket) \u00e9 um recurso nativo do kernel GNU\/Linux utilizado no controle do tr\u00e1fego de um link f\u00edsico de acesso a Internet em uma rede de computadores. <\/p>\n<p>4. O HTB-TOOLS<br \/>\nH\u00e1 v\u00e1rias formas de limitar o uso de uma conex\u00e3o de Internet em uma rede de computadores usando o HTB. No GNU\/Linux existe o comando tc (Traffic Control) que \u00e9 respons\u00e1vel pelo controle de tr\u00e1fego. Mas neste trabalho utilizaremos o HTB-TOOLS que \u00e9 uma ferramenta de aux\u00edlio na configura\u00e7\u00e3o do HTB para limita\u00e7\u00e3o de uso de banda mais simples e intuitivo que o tc.<\/p>\n<p>5. COMO FUNCIONA O HTB EM UMA REDE LOCAL DE COMPUTADORES?<br \/>\nQuando um pacote entra na interface controlada pelo HTB, ele passa por um processo de Classifying, um mecanismo pelo qual os pacotes s\u00e3o separados de forma a terem tratamentos diferentes, possivelmente colocando-os em diferentes filas de sa\u00edda. Logo depois, acontece o Policing, mecanismo pelo qual o tr\u00e1fego pode ser limitado. Logo ap\u00f3s, todos os pacotes s\u00e3o ordenados ou re-ordenados para serem enviados, \u00e9 o chamado Scheduling ou escalonamento. Por fim, acontece o Shapping, que \u00e9 o ato de &#8220;atrasar&#8221; o envio de pacotes de forma que o tr\u00e1fego seja retido para ent\u00e3o ser repassado adiante. \u00c9 exatamente dessa forma que \u00e9 feito o controle de banda pelo HTB.<\/p>\n<p>6. OS PR\u00c9-REQUISITOS PARA USAR O HTB E HTB-TOOLS NO FEDORA 9<br \/>\nPara usar o HTB \u00e9 necess\u00e1rio ter um servidor com uma conex\u00e3o de Internet e, ao mesmo tempo, conectado as esta\u00e7\u00f5es de trabalho. Al\u00e9m disso, s\u00e3o necess\u00e1rias pelo menos duas placas de rede. A distribui\u00e7\u00e3o FEDORA 9 com o kernel Linux vers\u00e3o 2.6.18 ou superior deve estar corretamente instalada porque os m\u00f3dulos do HTB j\u00e1 estar\u00e3o inclusos no kernel. Finalmente, o administrador da rede deve ser capaz de utilizar o modprobe e permitir o carregamento de m\u00f3dulos quando inicia o sistema operacional. Para usar o HTB-TOOLS \u00e9 preciso que: o HTB esteja funcionando com seus respectivos m\u00f3dulos carregados em mem\u00f3ria, um editor de texto e os seguintes pacotes: Make Flex, GCC e o Dialog juntamente com seus cabe\u00e7alhos.<\/p>\n<p>7. A INSTALA\u00c7\u00c3O DO HTB E DO HTB-TOOLS NO FEDORA 9<\/p>\n<p>Confirmado que o seu kernel \u00e9 pertencente a vers\u00e3o 2.6.18 ou superior, iremos agora come\u00e7ar todo o procedimento para a instala\u00e7\u00e3o e configura\u00e7\u00e3o do HTB-Tools. <\/p>\n<p>1\u00ba passo<br \/>\nRealizar a instala\u00e7\u00e3o dos pacotes os quais o HTB Tools possui  depend\u00eancia. Os pacotes s\u00e3o: Make, Flex, Gcc e o Dialog. Em seu terminal, digite o seguinte comando, sendo usu\u00e1rio root:<\/p>\n<p>[root@servidor] yum install make flex gcc dialog<\/p>\n<p>2\u00ba passo<br \/>\nAgora iremos levantar o seguintes m\u00f3dulos necess\u00e1rios. Em seu terminal, digite o seguinte comando, sendo usu\u00e1rio root:<\/p>\n<p>[root@servidor] modprobe sch_htb<br \/>\n[root@servidor] modprobe sch_sfq<br \/>\n[root@servidor] modprobe cls_u32<\/p>\n<p>3\u00ba passo<br \/>\nCrie o diret\u00f3rio man8 (na instala\u00e7\u00e3o ser\u00e1 copiado um arquivo de manual para esta<br \/>\npasta). E caso n\u00e3o seja criado, apresentar\u00e1 erro na instala\u00e7\u00e3o do pacote HTB-Tools.<\/p>\n<p>[root@servidor] mkdir \/usr\/local\/man\/man8<\/p>\n<p>4\u00ba passo<br \/>\nAgora, realize o download do arquivo htb_tools-0.3.0a.tar.gz. Feito o download, descompactamos o pacote: <\/p>\n<p>[root@servidor] tar \u2013zxvf htb_tools-0.3.0a.tar.gz<\/p>\n<p>Entre no diret\u00f3rio HTB-TOOLS-0.3.0a.<\/p>\n<p>[root@servidor]  cd HTB-TOOLS-0.3.0a<\/p>\n<p>Dentro do diret\u00f3rio HTB-TOOLS-0.3.0a, crie um diret\u00f3rio dentro do subdiret\u00f3rio \/include. O diret\u00f3rio criado ter\u00e1 o nome de asm (\/include\/asm): <\/p>\n<p>[root@servidor] mkdir \/include\/asm<\/p>\n<p>Ap\u00f3s criar o diret\u00f3rio \/include\/asm, copie o arquivo bitops.h (o arquivo est\u00e1 disponibilizado junto com o artigo) para dentro dele. <\/p>\n<p>Feito isto, o HTB-Tools j\u00e1 se encontra todo configurado e pronto para a sua instala\u00e7\u00e3o.<br \/>\nVolte para a raiz do diret\u00f3rio HTB-TOOLS-0.3.a e execute os seguintes comandos:<\/p>\n<p>[root@servidor \/HTB-TOOLS-0.3.0a]  make  &#038;&#038; make full<\/p>\n<p>Isto ir\u00e1 instalar os bin\u00e1rios q_parser, q_show, q_checkcfg, htb, htbgen no diret\u00f3rio<br \/>\n\/sbin , o script rc.htb ir\u00e1 para o diret\u00f3rio de scripts que for indicado, os dois arquivos de<br \/>\nconfigura\u00e7\u00e3o padr\u00e3o eth0-qos.cfg para upload and eth1-qos.cfg para download ir\u00e3o<br \/>\npara a pasta \/etc\/htb e tamb\u00e9m instalar\u00e1 o q_show.php e o gerador de configura\u00e7\u00f5es<br \/>\nwHTB-tools.<\/p>\n<p>Pronto, o HTB-TOOLS est\u00e1 funcionando em conjunto com o HTB.<\/p>\n<p>8. CONFIGURANDO O HTB-TOOLS NO FEDORA 9<\/p>\n<p>\u00c9 bastante trivial a configura\u00e7\u00e3o do HTB-Tools. Imaginando que o tr\u00e1fego da rede interna tenha que passar da interface de rede eth0 (placa onde est\u00e1 sua rede interna, isto \u00e9, conectada no swicth) para sair pela eth1 (placa rede conectada com o roteador), ent\u00e3o, basta alterar o eth0-qos.cfg padr\u00e3o (isto para o eth0, \u00e9 claro) conforme a necessidade da rede. Digamos que se deseja que o tr\u00e1fego da rede de uma empresa 192.168.1.0\/24 (rede_1) tenha exclusividade de 512Kbps no m\u00e1ximo e 480Kbps garantidos nos dias de pico. Sabendo que a banda m\u00e1xima que a rede pode atingir \u00e9 de 5Mbps, ent\u00e3o, o arquivo eth0-qos.cfg ficaria assim:<\/p>\n<p>class Rede_Empresa {<br \/>\nbandwidth 5000;<br \/>\nlimit 5000;<br \/>\nburst 0;<br \/>\npriority 1;<br \/>\nclient rede_1 {<br \/>\nbandwidth 480;<br \/>\nlimit 512;<br \/>\nburst 0;<br \/>\npriority 1;<br \/>\ndst {<br \/>\n192.168.1.0\/24;<br \/>\n};<br \/>\n};<br \/>\nclient rede_geral {<br \/>\nbandwidth 8;<br \/>\nlimit 5000;<br \/>\nburst 0;<br \/>\npriority 2;<br \/>\ndst {<br \/>\n0.0.0.0\/24;<br \/>\n};<br \/>\n};<br \/>\n};<\/p>\n<p>class default {<br \/>\nbandwidth 8;<br \/>\n};<\/p>\n<p>Um diferencial que o HTB possui em rela\u00e7\u00e3o as demais ferramentas de controle de tr\u00e1fego \u00e9 que voc\u00ea pode determinar qual a banda m\u00ednima garantida que o usu\u00e1rio ir\u00e1 ter e qual o limite m\u00e1ximo que ele usar\u00e1 caso haja disponibilidade no link. Feito esta configura\u00e7\u00e3o, basta executar o seguinte comando para que as regras de controle de banda entrem em vigor:<\/p>\n<p>[root@servidor]  htb eth0 start<\/p>\n<p>Est\u00e1 feito o controle de banda desta empresa, dando exclusividade de 512Kbps para a rede 1, assim tamb\u00e9m, limitando a banda da rede para 4520Kbps. Entende-se que, tudo o que n\u00e3o estiver declarado como a rede_1, faz parte da classe default e n\u00e3o da classe Rede_Empresa. H\u00e1 outras variantes para a configura\u00e7\u00e3o 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 m\u00e1scara. (Ex.: 192.168.1.35\/24;)<\/p>\n<p>Se quiser controlar uma porta espec\u00edfica, basta incluir o n\u00famero da porta logo ap\u00f3s o IP da rede\/host. (Ex.:para a porta 80 ==> 192.168.1.0\/24 80). Outros controles que podem ser usado na administra\u00e7\u00e3o usando o HTB com HTBTOOLS \u00e9:<\/p>\n<p>par\u00e2metro = start | stop | start_eth0 | start_eth1 | stop_eth0 |<br \/>\nstop_eth1 | show_eth0 | show_eth1 | gen_eth0 | gen_eth1<\/p>\n<p>Onde:<\/p>\n<p>start &#8211; coloca em vigor todas as regras existentes em \/etc\/htb.<br \/>\nstop &#8211; para e apaga todas as regras em vigor.<br \/>\nstart_eth0, start_eth1 &#8211; coloca em vigor as regras da interface eth escolhida.<br \/>\nstop_eth0, stop_eth1 &#8211; apaga as regras em vigor da interface eth escolhida.<br \/>\nshow_eth0, show_eth1 &#8211; mostra, em tempo real, o quanto de banda est\u00e1 sendo usado e por quem<br \/>\n                                    para a interface eth escolhida.<br \/>\ngen_eth0, gen_eth1 &#8211; gera o arquivo de configura\u00e7\u00e3o da eth escolhida para redes classe C.<\/p>\n<p>Outra alternativa ao script \u00e9 usar o comando htb. Modo de uso:<\/p>\n<p># htb <interface> { start | stop | stats | generate }<\/p>\n<p>ou<\/p>\n<p># htb { help | version }<\/p>\n<p>Onde:<\/p>\n<p>interface &#8211; a interface de rede que voc\u00ea deseja controlar<br \/>\nstart &#8211; aplica as propriedades do arquivo de configura\u00e7\u00e3o na interface<br \/>\nstop &#8211; apaga as regras aplicadas a interface espec\u00edfica<br \/>\nstats &#8211; mostra, em tempo real, a estat\u00edstica de tr\u00e1fego para a interface<br \/>\ngenerate &#8211; apenas cria o script para aplicar as regras<br \/>\nhelp &#8211; mostra algumas informa\u00e7\u00f5es \u00fateis<br \/>\nversion &#8211; mostra a vers\u00e3o e informa\u00e7\u00f5es de direitos autorais<\/p>\n<p>AGORA O MELHOR DE TODOS, VOC\u00ca PODE SIMPLIFICAR TUDO ISSO, UTILIZANDO A INTERFACE GR\u00c1FICA DO HTB-TOOLS. V\u00c1 NO DIRET\u00d3RIO DO HTB-TOOLS.<\/p>\n<p>[root@servidor]  cd HTB-TOOLS-0.3.0a<\/p>\n<p>Agora basta digitar: <\/p>\n<p>[root@servidor]  .\/setup<\/p>\n<p>Exemplo server:<br \/>\nclass _teste {<br \/>\n    bandwidth 1000000;<br \/>\n    limit 1000000;<br \/>\n    burst 0;<br \/>\n    priority 1;<\/p>\n<p>  client voip {<br \/>\n        bandwidth 2048;<br \/>\n        limit 2048;<br \/>\n        burst 0;<br \/>\n        priority 1;<br \/>\n        dst {<br \/>\n            192.168.254.0\/24 5060;<br \/>\n        };<br \/>\n    };<\/p>\n<p>    client ssh {<br \/>\n        bandwidth 1000000;<br \/>\n        limit 1000000;<br \/>\n        burst 0;<br \/>\n        priority 2;<br \/>\n        dst {<br \/>\n            192.168.254.0\/24 80 53 22 3128 5060;<br \/>\n        };<br \/>\n    };<\/p>\n<p>#    client ulisses2 {<br \/>\n#        bandwidth 410;<br \/>\n#        limit 410;<br \/>\n#        burst 0;<br \/>\n#        priority 2;<br \/>\n#       upload 150;<br \/>\n#        dst {<br \/>\n#            192.168.254.144\/32;<br \/>\n#       };<br \/>\n#    } ;<br \/>\n   client restante {<br \/>\n        bandwidth 500;<br \/>\n        limit 800;<br \/>\n        burst 0;<br \/>\n        priority 3;<br \/>\n        upload 120;<br \/>\n        dst {<br \/>\n            192.168.254.0\/24;<br \/>\n        };<br \/>\n    } ;<br \/>\n};<\/p>\n<p>class default { bandwidth 150; };<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ATEN\u00c7\u00c3O: O PACOTE DO HTB-TOOLS E O ARQUIVO BITOPS.H ENCONTRAM-SE ANEXADOS. Este artigo tem por objetivo mostrar uma solu\u00e7\u00e3o de gerenciamento e controle de tr\u00e1fego de dados e de banda em uma rede de computadores com acesso a internet utilizando software livre, dando prefer\u00eancia aos&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/101"}],"collection":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=101"}],"version-history":[{"count":0,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/101\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}