Escolar Documentos
Profissional Documentos
Cultura Documentos
marcus.apb@gmail.com
Controle de Banda
CBQ x HTB
Nível: - Intermediário.
Controle de Banda
Controle de Tráfego
O que é?
Estabilidade do link.
Algumas Desvantagens
Complexidade.
Filas
Incialmente usada apenas a fila do tipo FIFO.
Fluxos
Endereço de origem e endereço de destino.
Porta de origem e porta de destino.
Tokens
Buckets (Baldes)
Tokens e Buckets (Baldes)
Elementos Básicos
Shaping
Causa delay no tráfego, por exemplo, priorizando pacotes.
Scheduling (Arranjo)
Programar e reprogramar filas.
Classifying (Classificação)
Categorizar fluxos e marcar pacotes (iptables).
Estrutura de QoS Linux
Classless
Não permitem nenhuma classe adicional e nenhum filtro.
Ex.: FIFO, PFIFO_FAST, TBF, SFQ.
Classful
Podemos criar várias classes, subclasses e filtros.
Ex.: HTB, CBQ, PRIO.
Onde aplicar?
Class (Classes)
Aplicadas apenas em qdisc classful (htb e cqb).
Podem ter várias ramificações.
Podem conter outros qdiscs diferentes em cada subclasse.
O qdisc default para uma classe sem filhas é PFIFO_FAST.
Filter (Filtro)
Serve para direcionar tráfego para as classes.
Precisa de um classificador como o u32 ou semelhante.
Identifica campos de um pacote de rede.
Handle
Handle (Manipulador)
É o responsável pela relação entre qdisc, classes e filtros.
Formado por um major e um minor. Ex.: 1:10
Um minor 0 obrigatóriamente identifica um qdisc.
Ex.: 1:0 ou simplesmente 1:
Funções
Podemos direcionar tráfego diretamente para uma classe.
Podemos criar uma hierarquia entre as classes e qdiscs.
Requisitos
Kernel
Praticamente todos as distribuições vêm com kernel pronto
para QoS.
Pacotes Necessários
Iproute2 – Possui a ferramenta tc (nosso foco).
Pacotes Opcionais
tcng
Ferramenta TC
marcus@krusty:~$ tc
Usage: tc [ OPTIONS ] OBJECT { COMMAND | help }
tc [-force] -batch file
where OBJECT := { qdisc | class | filter | action | monitor }
OPTIONS := { -s[tatistics] | -d[etails] | -r[aw] | -p[retty] | -b[atch] [file] }
Exemplo de regra
Representação gráfica:
1:0 __ - Criada qdisc raíz.
|
1:1 - Classe adicionada abaixo da qdisc raíz.
Mas só podemos fazer isso?
NÃO!
Vamos ver alguns qdiscs que podemos usar para dar mais poder
ao nosso controle de banda.
FIFO - Classless
First-In First-Out
Possui como parâmetro a tag ”limit”.
Pode-se limitar o tamanho da fila para evitar overflow quando
os pacotes entram na fila mais rápido do que podem sair dela.
Esse limite pode ser feito em pacotes (pfifo) ou bytes (bfifo).
Ex:
tc qdisc add dev eth0 handle 1:0 root htb
tc qdisc add dev eth0 handle 2:0 parent 1:0 pfifo limit 30
Mais Parâmetros:
Bandwidth: Banda da interface também usada para cálculo
da média de tamanho da fila.
Ecn: Marca os pacotes ao invés de dropar. Isso informa os
outros dispositivos que o tráfego está aumentando.
Parâmetros
Limit ou latency: Tamanho ou tempo que pacotes ficam na
fila esperando por um token.
Burst: Tamanho do balde. Rajada de tokens.
Mpu: Unidade mínima de pacote.
Rate: Banda mínima.
TBF - Classless
Priority Scheduler
Seria uma extensão do pfifo_fast.
Funciona da mesma forma que o pfifo_fast, ou seja, priorizando
pacotes de acordo com o ToS, porém podem ser adicionados
qdiscs para gerenciar essas filas de prioridades.
Parâmetros
Avpkt: Média de tamanho dos pacotes. Necessário para
calcular o maxidle.
Bandwidth: Banda fisica do device.
Cell: Celulas de pacotes.
Maxburst: Rajada máxima antes causar latência.
Minburst: Rajada mínima em caso de sobrecarga.
Minidle: Em sobrecarga evita rajadas repentinas.
Mpu: Menor tamanho de pacote a ser considerado.
Rate: Velocidade desejada para saída de tráfego.
CBQ - Classful
Mais Parâmetros
Allot: Quando usa prioridades permite apenas uma
quantidade de pacotes por vez.
Prio: Define prioridades para as classes.
Weight: Define pesos para classes durante o rateio.
isolated/sharing: Compartilha banda ou não.
Bounded/borrow: Empresta banda ou não.
Parâmetros
Default: Onde se encaixam os fluxos não definidos.
Rate: Mínima banda, ou seja, banda garantida.
Ceil: Banda máxima, porém não garantida.
Burst: Tamanho do balde para rate.
Cburst: Tamanho do balde para ceil.
HTB - Classful
Mais Parâmetros
Quantum: Usado para controlar o emprestimo de banda.
Normalmente calculado pelo próprio HTB.
R2q: Trabalha junto com o quantum para divisões. Também
é bem pouco necessário usá-lo.
Mtu: Normalmente MTU da placa de rede.
Prio: Quanto menor o número, maior a prioridade.
/ | \
/ | \
/ | \
/ | \
| | |
| |
/ \ / \
$ man tc
http://lartc.org/
http://www.linux.com/learn/docs/ldp/783-Traffic-Control-HOWTO
http://luxik.cdi.cz/~devik/qos/htb/htb3perf/cbqhtb3perf.htm
http://www.numaboa.com/informatica/linux/configuracoes/709-
banda2?start=2
Obrigado!
DÚVIDAS??
marcus.apb@gmail.com