Oi gente! Alguém perguntou sobre HTB, porém como eu não estou encontrando o email dele para responder, copio o texto abaixo e minhas respostas vão no final, ok?
Texto Original. Eu tenho o seguinte controle de upload por htb: tc qdisc add dev eth0 root handle 1: htb default 15 tc class add dev eth0 parent 1: classid 1:1 htb rate 100kbit ceil 100kbit tc class add dev eth0 parent 1:1 classid 1:10 htb rate 60kbit ceil 100kbit prio 0 tc class add dev eth0 parent 1:1 classid 1:11 htb rate 20kbit ceil 100kbit prio 1 tc class add dev eth0 parent 1:1 classid 1:12 htb rate 10kbit ceil 100kbit prio 3 tc class add dev eth0 parent 1:1 classid 1:13 htb rate 10kbit ceil 100kbit prio 2 tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 14 fw classid 1:10 tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 15 fw classid 1:11 tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 13 fw classid 1:12 tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 16 fw classid 1:13 Com isso, os pacotes que eu marco com 13, 14, 15 e 16 vão ficar limitados O que eu quero eh colocar o tbf para funcionar e controlar a latencia. Eu tentei o seguinte comando: tc qdisc add dev eth0 root tbf rate 100kbit latency 50ms burst 1540 ai eu tenho a seguinte mensagem de erro: RTNETLINK answers: File exists Entao eu cheguei a seguinte conclusao: como já criei um root com o HTB (tc qdisc add dev eth0 root handle 1: htb default 15) não vou conseguir criar outro com o TBF. Entao como eu faco para inserir o TBF (latency 50ms burst 1540) nas regras que já tenho com o HTB? Valeu! Fabrício Respostas: 1) Creio que haja um erro em seu script: a linha "tc qdisc add dev eth0 root handle 1: htb default 15" refere-se a uma classe que não existe. O "default 15" faz com que todo o tráfego não classificado caia em uma classe 15, portanto você deveria ter declarado uma classe "classid 1:15" (tc class add dev eth0 parent 1:1 classid 1:15 htb .....) em seu script OU direcionar o trafego default para uma das classes existentes (1:10, 1:11 ou 1:12). 2) Para incluir um qdisc em uma classe do HTB, basta fazer "tc qdisc add dev eth0 parent 1:10 handle 20: tbf ......" onde "parent X:XX" é a identificação da classe onde você quer colocar o qdisc (sua classe pai) e "handle XX: " é a identificação do próprio qdisc. O parametro "root" em "tc qdisc add dev eth0 root ......" indica que o qdisc está diretamente conectado no dispositivo de rede, e tal como nos HighLanders, "só pode haver um", daí o erro. Obs: Se me lembro bem, o htb é um tipo de implementação do tbf, mas com suporte a classes, então colocar um tbf dentro de um htb é meio que chover no molhado ... Tipo se você quer limitar a classe a digamos 100 kbits, acho que basta fazer "rate 100kbits ceil 100kbits" com o próprio htb ... Em caso de dúvidas, escreva ! -- Abraços, Fabiano