[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

HTB



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



Reply to: