A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Linux

Administração de Largura de Banda no Linux II

Dom

22

Abr

2007


18:09

(7 votos, média 4.14 de 5) 


Balde de Token Hierárquico

Martin Devera () percebeu que a CBQ é complexa e não parece otimizada para muitas situações típicas. Seu enfoque hierárquico é muito apropriado para setups onde há uma largura de banda fixa que deve ser dividida para propósitos diferentes, garantindo uma determinada largura para cada um deles, com a possibilidade de especificar quanto de largura de banda pode ser emprestado.

A HTB (Hierarchical Token Bucket - Balde de Token Hierárquico) funciona como a CBQ, mas não recorre a cálculos de tempo de ociosidade para modelar. Ao invés disto, é um Token Bucket Filter com classe - daí o nome. Possui apenas alguns parâmetros bem documentados no site do autor.

A configuração da HTB pode ir se tornando mais complexa sem maiores problemas. Contrariamente, a da CBQ é complexa por natureza, mesmo nos casos mais simples! HTB3 (cheque na página do autor para maiores detalhes sobre versões) agora faz parte do código fonte oficial do kernel (desde 2.4.20-pre1 e 2.5.31). Entretanto, pode ser possível que você precise de uma versão com patch para HTB3 do 'tc': o kernel HTB kernel partes do espaço do usuário precisam ser da mesma versão maior (major version) ou o 'tc' não funcionará com a HTB.

Se você já tem um kernel moderno ou se puder fazer um patch no seu kernel, não deixe de experimentar a HTB.

Exemplo de configuração

Funcionalmente, esta configuração é praticamente a mesma do exemplo dado na CBQ:

# 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 recomenda SFQ para as seguintes classes:

# 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 dirigem o tráfego para as classes certas:

# 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 isto é tudo. Nada e números misteriosos não explicados, nem de parâmetros não documentados.

A HTB, com certeza, parece maravilhosa - se 10: e 20: tiverem suas larguras de banda garantidas e ainda sobrar banda para dividir, elas fazem um empréstimo na razão 5:3, exatamente como você espera que seja feito.

O tráfego não classificado é roteado para 30:, com pouca largura de banda própria, mas que pode emprestar toda banda que estiver sobrando. Como foi escolhida a SFQ internamente, ganhamos a imparcialidade das divisões de graça... ou 'de grátis', como se ouve por aí smile

Informações adicionais