Você está na página 1de 16

HTB

Controle de Trafego
Nesta aula veremos como controlar o trafego , atravs de
algoritmo HTB, filtrando pacotes com iptables.



Contedo
Conhecendo HTB
Elementos do Controle de Trfego
Como ocorre o QOS
Elementos do HTB
Usando o HTB
Traffic Control
Vinculando o Trfego







HTB



HTB (Hierarchy Token Bucket), um algoritmo para controlar
o uso da largura de banda no Linux. Ele veio como substituto
mas rpido, compreensvel e intuitivo ao CBQ.
Com o HTB possvel dividir o link fsico em links simulados
e decidir qual link ser usado para determinado pacote.
O HTB implementado atravs da ferramenta tc (traffic
control), atravs de classes, e classes filhos.

Elementos do Controle de Trfego
O QOS implementado atravs do tc utilizando
componentes diferentes :

Queuing Disciplines : qdisc algoritmos que controlam o
enfileiramento e envio de pacotes.
Classes: representam entidades de classificao de
pacotes, cada classe pode estar associada a uma qdisc.
Filters: utilizados para classificar os pacotes e atribu-los as
classes.
Policers: utilizados para evitar que o trfego associado a
cada filtro ultrapasse limites pr-definidos.
Exemplo
A Qdisc principal obrigatria. Ela controla como os pacotes
so recebidos e enviados pela interface.
As Qdisc associadas as classes controlam apenas os pacotes
da classe
Como ocorre o QOS



Elementos do HTB
root: utilizado para criar regra inicial do qual informa qual o
algoritmo principal, onde informamos que ser utilizado o HTB.
Recebe a numerao 1: ou 1:0.
class: so os locais onde distribuiremos a largura de banda, a
primeira classe recebe o valor 1:1 herdando ou na realidade
sendo um fork do root.
parent: cada classe dever ser filha de alguma outra.
Parent indica quem o pai da classe em questo. Somente o
root no possui pai, pois est no nvel mais alto.
classid: onde informado o nome da classe como dito
anteriormente a primeira ser 1:1, herdando ou sendo filha
de 1:0.
Sintaxe
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1:0 classid 1:1 htb rate rate ceil rate
burst bytes [ cburst bytes ] [ prio priority ]
Unidades de Medida
Valores que podem confundir um pouco veremos agora.
B : Byte e b = bit
1 B = 8 b
Em virtude disso uma velocidade de 250 Kb/s equivalente a
250/8=> 21,25 KB/s. Veja a tabela abaixo:

O TC segue as seguintes convenes:
mbps = MB/s. H tambm kbps e bps;
mbit = Mb/s. H tambm kbit.

Iremos em nosso exemplo usar bit tendo em vista que o
iptraf nos mostra esses valores em bit, enquanto wget mostra
em Bytes.

Exemplo de Aplicao
Usaremos como exemplo um link de 10mbit ( 1MB/s) para
download, e separaremos o trafego da seguinte forma:












Criando as filas via tc
Criando a fila pai :

tc qdisc add dev eth1 root handle 1:0 htb default 30


Criando a classe principal:

tc class add dev eth1 parente 1:0 classid 1:1 htb rate 100mbit




Controlando uso de banda
Agora iremos criar as classes que iro controlar as larguras de banda.

tc class add dev eth0 parent 1:1 classid 1:10 htb rate 4mbit
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 8mbit ceil
10mbit
tc class add dev eth0 parent 1:1 classid 1:30 htb rate 2mbit ceil 3mbit





Vinculando o trafego s filas
Para vincular os trfegos especficos s filas, usaremos o iptables, marcando
o pacote usando o alvo CLASSIFY , onde informaremos qual classe ser
usado por determinado pacote. Em nosso caso temos :

http, http: classe 1:10
smtp,pop: classe 1:20
restante : classe 1:30



iptables t mangle A FORWARD p tcp --sport 80 i eth0 j CLASSIFY --set-
class 1:10
iptables t mangle A FORWARD p tcp --sport 443 i eth0 j CLASSIFY --set-
class 1:10
Iptables t mangle A FORWARD p tcp --sport 25 i eth0 j CLASSIFY --set-
class 1:20
Iptables t mangle A FORWARD p tcp --sport 110 i eth0 j CLASSIFY --set-
class 1:20



Visualizando
tc qdisc show dev eth1
tc class show dev eth1
tc s class show eth1
Iptraf


Criar a fila principal (qdisc), informando o algoritmo
Criar a classe principal, informo o valor link
Criar as classes auxiliares, onde separo as bandas
Vinculo os pacotes s classes auxiliares ( filas) atravs do iptables
Prtica
Firewall:
eth0 -> Internet
eth1 -> 10.0.0.1

iptables t nat A POSTROUTING s 10.0.0.0/24 j MASQUERADE
echo 1 >/proc/sys/net/ipv4/ip_forward


Cliente:
eth1 : 10.0.0.2/24
Gateway : 10.0.0.1

Velocidades aplicadas:
Link download : 11,5mbits
Fila 10: 100kbits/300kbits
Fila 20: 600kbits/1mbits
Fila30: 2mbits/4mbits
Fila 40: 5mbits/10mbits