Hierarchical Token Bucket :: Admirável Mundo Novo




Muito Bem Vindo

Prezado Leitor, a proposta desse Blog é compartilhar conhecimento com as pessoas que trabalham com Linux, Asterisk, OpenSER, e com tecnologia de voz sobre a rede IP em geral, através de tutoriais, dicas, howto, notícias entre outros assuntos.

Atente para termo de uso do conteúdo do blog no rodapé da página.

segunda-feira, 5 de janeiro de 2009

Hierarchical Token Bucket




9.5.5. Hierarchical Token Bucket

Martin Devera (devik) percebeu corretamente que o CBQ é complexo e não parecia otimizado para muitas situações comuns. Sua abordagem Hierárquica é bem apropriada para instalações onde você tem uma quantidade fixa de largura de banda que você deseja dividir para diferentes propósitos, dando a cada finalidade uma garantia de largura de banda, com a possibilidade de especificar quanto de banda pode ser tomada emprestada.

O algoritmo HTB funciona exatamente igual ao CBQ, mas não utiliza cálculo de tempo ocioso para fazer os ajustes conforme os critérios de prioridade de tráfego. Em vez disso, ele é um Filtro Token Bucket baseado em classe – daí o nome. Ele possui somente alguns parâmetros, que são bem documentados nesse site.

Já que sua configuração HTB começa mais complexa, sua configuração vai escalar bem. Com o CBQ que já é complexo mesmo em casos simples! O HTB3 (verifique a sua página para detalhes sobre versões do HTB) agora faz parte dos fontes oficial do kernel (do 2.4.20-prel e posteriores ao 2.5.31). No entanto, talvez você ainda precise obter uma versão com patch do HTB3 do utilitário ‘tc’: partes do kernel e do espaço de usuário do HTB precisam estar na mesma versão major, se não o utilitário ‘tc’ poderá não funcionar com o HTB.

Se você já tiver um kernel moderno, ou se já estiver a ponto de aplicar um patch em seu kernel, de todas as formas considere também o HTB.


9.5.5.1. Configuração Exemplo

Funcionalmente ele é quase idêntico à configuração exemplo do CBQ acima:

# tc qdisc add dev eth0 root handle 1: htb default 30
# tc class add dev eth0 parent 1: classid 1:1 htb rate 6mbit burst 15k
# tc class add dev eth0 parent 1:1 classid 1:10 htb rate 5mbit burst 15k
# tc class add dev eth0 parent 1:1 classid 1:20 htb rate 3mbit ceil 6mbit burst 15k
# tc class add dev eth0 parent 1:1 classid 1:30 htb rate 1kbit ceil 6mbit burst 15k


O autor então recomenda o SFQ para essas classes como a seguir:

# tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
# tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10
# tc qdisc add dev eth0 parent 1:30 handle 30: sfq perturb 10


Adicione os filtros que direcionam o tráfego para as classes corretas:

# U32="tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32"
# $U32 match ip dport 80 0xffff flowid 1:10
# $U32 match ip sport 25 0xffff flowid 1:20


E é isso aí – nenhum número esquisito não explicado, nenhum parâmetro não documentado.

Certamente, o HTB parece maravilhoso – se as duas classes ‘10:’ e ‘20:’ tiverem suas largura de banda garantida, e, além disso, se for permitido as classes compartilhar, elas tomarão emprestados a uma taxa 5:3, justamente como você desejaria.

Tráfego não classificado é roteado pela classe ‘30:’, a qual possui pouca banda pra seu uso próprio, mas pode tomar emprestado tudo o que não estiver em uso. Como nós escolhemos a disciplina SFQ internamente, fazemos justiça deixando-a livre!












Autores Originais dos textos:

Bert Hubert (Netherlabs BV)
bert.hubert@netherlabs.nl

Thomas Graf (Autor de Seção)
tgraf@suug.ch

Gregory Maxwell (Autor de Seção)
greg@linuxpower.cx

Remco van Mook (Autor de Seção)
remco@virtu.nl

Martijn van Oosterhout (Autor de Seção)
kleptog@cupid.suninternet.com

Paul B Schroeder (Autor de Seção)
paulsch@us.ibm.com

Jasper Spaans (Autor de Seção)
jasper@spaans.ds9a.nl

Pedro Larroy (Autor de Seção)
piotr@member.fsf.org









Nenhum comentário:




Creative Commons License
Admirável Mundo Novo: Tudo Sobre Asterisk, OpenSER, Linux e Tecnologias de Voz sobre IP
by Cléviton Mendes de Araújo is licensed under a Creative Commons Atribuição 2.5 Brasil License.