GERENCIAMENTO NO CONTROLE DE BANDA – HTB-Tools

ATENÇÃO: O PACOTE DO HTB-TOOLS E O ARQUIVO BITOPS.H ENCONTRAM-SE ANEXADOS.

Este artigo tem por objetivo mostrar uma solução de gerenciamento e controle de tráfego de dados e de banda em uma rede de computadores com acesso a internet utilizando software livre, dando preferência aos recursos de maior prioridade para utilização de sua banda (link). O conhecido QoS (Qualidade de Serviço). Foi realizado um estudo de caso com as ferramentas utilizadas, a avaliação da
rede, do servidor e do link físico de acesso a Internet após a implantação da solução baseada no sistema operacional GNU/Linux. A distribuição GNU/Linux Fedora 9 foi cogitada para ser usada como sistema operacional – no servidor – devido a sua facilidade de instalação, gerenciamento e compatibilidade com a tecnologia HTB. A metodologia empregada contemplará o estudo de técnicas para viabilizar o controle do tráfego de dados de upload e download. O principal resultado esperado será a implementação de um controle de banda de acesso à Internet, garantindo uma taxa de conexão mínima e suficiente aos usuários que necessitam desenvolver seus trabalhos, pesquisas e estudos, como também diminuir as taxas de conexão das pessoas que abusam na utilização da Internet para ter acesso a conteúdos e serviços altamente proibidos na instituição em que participam.

1. INTRODUÇÃO
A economia de recursos, equipamentos, serviços, compartilhamento de Internet entre outras vantagens tornam indispensável o uso de redes de computadores em diversas instituições. Porém é preciso dividir o uso dos recursos entre os usuários de forma que todos possam usufruir sem prejudicar os demais. É o que acontece quando alguém usa muita banda de acesso à Internet, deixando os outros usuários com acesso restrito e lento. Este problema pode ser resolvido com o HTB, que impõe o controle na banda e, então, garante uma taxa de conexão de acordo com as necessidades e as prioridades de cada usuário 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 tráfego de um link físico de acesso a Internet em uma rede de computadores.

4. O HTB-TOOLS
Há várias formas de limitar o uso de uma conexão de Internet em uma rede de computadores usando o HTB. No GNU/Linux existe o comando tc (Traffic Control) que é responsável pelo controle de tráfego. Mas neste trabalho utilizaremos o HTB-TOOLS que é uma ferramenta de auxílio na configuração do HTB para limitação 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 são separados de forma a terem tratamentos diferentes, possivelmente colocando-os em diferentes filas de saída. Logo depois, acontece o Policing, mecanismo pelo qual o tráfego pode ser limitado. Logo após, todos os pacotes são 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 tráfego seja retido para então 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 FEDORA 9
Para usar o HTB é necessário ter um servidor com uma conexão de Internet e, ao mesmo tempo, conectado as estações de trabalho. Além disso, são necessárias pelo menos duas placas de rede. A distribuição FEDORA 9 com o kernel Linux versão 2.6.18 ou superior deve estar corretamente instalada porque os módulos do HTB já estarão inclusos no kernel. Finalmente, o administrador da rede deve ser capaz de utilizar o modprobe e permitir o carregamento de módulos quando inicia o sistema operacional. Para usar o HTB-TOOLS é preciso que: o HTB esteja funcionando com seus respectivos módulos carregados em memória, um editor de texto e os seguintes pacotes: Make Flex, GCC e o Dialog juntamente com seus cabeçalhos.

7. A INSTALAÇÃO DO HTB E DO HTB-TOOLS NO FEDORA 9

Confirmado que o seu kernel é pertencente a versão 2.6.18 ou superior, iremos agora começar todo o procedimento para a instalação e configuração do HTB-Tools.

1º passo
Realizar a instalação dos pacotes os quais o HTB Tools possui dependência. Os pacotes são: Make, Flex, Gcc e o Dialog. Em seu terminal, digite o seguinte comando, sendo usuário root:

[root@servidor] yum install make flex gcc dialog

2º passo
Agora iremos levantar o seguintes módulos necessários. Em seu terminal, digite o seguinte comando, sendo usuário root:

[root@servidor] modprobe sch_htb
[root@servidor] modprobe sch_sfq
[root@servidor] modprobe cls_u32

3º passo
Crie o diretório man8 (na instalação será copiado um arquivo de manual para esta
pasta). E caso não seja criado, apresentará erro na instalação do pacote HTB-Tools.

[root@servidor] mkdir /usr/local/man/man8

4º passo
Agora, realize o download do arquivo htb_tools-0.3.0a.tar.gz. Feito o download, descompactamos o pacote:

[root@servidor] tar –zxvf htb_tools-0.3.0a.tar.gz

Entre no diretório HTB-TOOLS-0.3.0a.

[root@servidor] cd HTB-TOOLS-0.3.0a

Dentro do diretório HTB-TOOLS-0.3.0a, crie um diretório dentro do subdiretório /include. O diretório criado terá o nome de asm (/include/asm):

[root@servidor] mkdir /include/asm

Após criar o diretório /include/asm, copie o arquivo bitops.h (o arquivo está disponibilizado junto com o artigo) para dentro dele.

Feito isto, o HTB-Tools já se encontra todo configurado e pronto para a sua instalação.
Volte para a raiz do diretório HTB-TOOLS-0.3.a e execute os seguintes comandos:

[root@servidor /HTB-TOOLS-0.3.0a] make && make full

Isto irá instalar os binários q_parser, q_show, q_checkcfg, htb, htbgen no diretório
/sbin , o script rc.htb irá para o diretório de scripts que for indicado, os dois arquivos de
configuração padrão eth0-qos.cfg para upload and eth1-qos.cfg para download irão
para a pasta /etc/htb e também instalará o q_show.php e o gerador de configurações
wHTB-tools.

Pronto, o HTB-TOOLS está funcionando em conjunto com o HTB.

8. CONFIGURANDO O HTB-TOOLS NO FEDORA 9

É bastante trivial a configuração do HTB-Tools. Imaginando que o tráfego da rede interna tenha que passar da interface de rede eth0 (placa onde está sua rede interna, isto é, conectada no swicth) para sair pela eth1 (placa rede conectada com o roteador), então, basta alterar o eth0-qos.cfg padrão (isto para o eth0, é claro) conforme a necessidade da rede. Digamos que se deseja que o tráfego da rede de uma empresa 192.168.1.0/24 (rede_1) tenha exclusividade de 512Kbps no máximo e 480Kbps garantidos nos dias de pico. Sabendo que a banda máxima que a rede pode atingir é de 5Mbps, então, 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 relação as demais ferramentas de controle de tráfego é que você pode determinar qual a banda mínima garantida que o usuário irá ter e qual o limite máximo que ele usará caso haja disponibilidade no link. Feito esta configuração, basta executar o seguinte comando para que as regras de controle de banda entrem em vigor:

[root@servidor] htb eth0 start

Está feito o controle de banda desta empresa, dando exclusividade de 512Kbps para a rede 1, assim também, limitando a banda da rede para 4520Kbps. Entende-se que, tudo o que não estiver declarado como a rede_1, faz parte da classe default e não da classe Rede_Empresa. Há outras variantes para a configuração 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áscara. (Ex.: 192.168.1.35/24;)

Se quiser controlar uma porta específica, basta incluir o número da porta logo após o IP da rede/host. (Ex.:para a porta 80 ==> 192.168.1.0/24 80). Outros controles que podem ser usado na administração usando o HTB com HTBTOOLS é:

parâmetro = 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 configuração da eth escolhida para redes classe C.

Outra alternativa ao script é usar o comando htb. Modo de uso:

# htb { 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 configuração na interface
stop – apaga as regras aplicadas a interface específica
stats – mostra, em tempo real, a estatística de tráfego para a interface
generate – apenas cria o script para aplicar as regras
help – mostra algumas informações úteis
version – mostra a versão e informações de direitos autorais

AGORA O MELHOR DE TODOS, VOCÊ PODE SIMPLIFICAR TUDO ISSO, UTILIZANDO A INTERFACE GRÁFICA DO HTB-TOOLS. VÁ NO DIRETÓRIO DO HTB-TOOLS.

[root@servidor] cd HTB-TOOLS-0.3.0a

Agora basta digitar:

[root@servidor] ./setup

Exemplo server:
class _teste {
bandwidth 1000000;
limit 1000000;
burst 0;
priority 1;

client voip {
bandwidth 2048;
limit 2048;
burst 0;
priority 1;
dst {
192.168.254.0/24 5060;
};
};

client ssh {
bandwidth 1000000;
limit 1000000;
burst 0;
priority 2;
dst {
192.168.254.0/24 80 53 22 3128 5060;
};
};

# client ulisses2 {
# bandwidth 410;
# limit 410;
# burst 0;
# priority 2;
# upload 150;
# dst {
# 192.168.254.144/32;
# };
# } ;
client restante {
bandwidth 500;
limit 800;
burst 0;
priority 3;
upload 120;
dst {
192.168.254.0/24;
};
} ;
};

class default { bandwidth 150; };

Deixe um comentário