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

Re: Controle de Banda Debian Lenny



Ola Junior,

te agradeço pela ajuda com o HTB, realmente o que me passou acrescemtpui muito, pois melhor que conhecer algumas ferramentas é conhecer tudo como funciona na unha.

O problema é que, mesmo usando os comandos que me passou, usando a ferramenta HTBtools e alternativa CBQ, o controle de banda não funciona na mihna rede.

depois de todos os comandos, meu download continuou a 300 kbps.

o resultado do comando foi:

Every 1,0s: tc -s class show dev eth1                                                                       Sat Oct  9 22:06:40 2010

class htb 1:11 parent 1:1 rate 50000bit ceil 50000bit burst 1599b cburst 1599b                  
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
 lended: 0 borrowed: 0 giants: 0
 tokens: 6250 ctokens: 6250

class htb 1:111 parent 1:11 leaf 8027: prio 0 rate 40000bit ceil 50000bit burst 1600b cburst 1599b
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
 lended: 0 borrowed: 0 giants: 0
 tokens: 312500 ctokens: 249999

class htb 1:1 root rate 100000Kbit ceil 100000Kbit burst 1600b cburst 1600b                  
 Sent 3750802 bytes 68827 pkt (dropped 0, overlimits 0 requeues 0)
 rate 79776bit 183pps backlog 0b 0p requeues 0
 lended: 0 borrowed: 0 giants: 0
 tokens: 122 ctokens: 122

class htb 1:112 parent 1:11 leaf 8028: prio 0 rate 10000bit ceil 50000bit burst 1600b cburst 1599b
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 rate 0bit 0pps backlog 0b 0p requeues 0
 lended: 0 borrowed: 0 giants: 0
 tokens: 1250000 ctokens: 249999

class htb 1:12 parent 1:1 leaf 8026: prio 0 rate 98000Kbit ceil 100000Kbit burst 1580b cburst 1600b
 Sent 3750802 bytes 68827 pkt (dropped 0, overlimits 0 requeues 0)
 rate 79776bit 183pps backlog 0b 0p requeues 0
 lended: 68827 borrowed: 0 giants: 0
 tokens: 123 ctokens: 122

no que vc me passou, mudei o eth0 pelo eth1 pois o eth1 é minha interface de rede e pelo que entendi o HTB funciona pela saida da interface.

DE: eth1 para eth0 -> Download
DE eth0 para eth1 -> UPLOAD

Mesmo nõa funiocnando, usei o inverso. troquei eth1 por eth0 e mesmo assim nada.

Se tiver alguma dico onde posso procurar o problema agradeço.

PS Controlar o upload funciona normal.

att
Gustavo

Em 9 de outubro de 2010 10:19, Junior Polegato - Linux <linux@juniorpolegato.com.br> escreveu:
Em 08-10-2010 18:43, gunix escreveu:

Eu tenho a TOPOLOGIA
eth0 : REDE
eth1 : Internet
Fiz exatamento como passou, apenas nos ultimos comando iptables que tive que tirar o -i INTERFACE , pois o POSTROUTING não funciona com o paramentro -i
Ficou assim o comando: Mesmo assim não funcionou as regras de download.
Meu link é 2 Mb. Apos o script coninuou consumindo a mesma banda que antes. 154 k
Ao limpar as regras o download continua na mesma velocidade.

Olá,

       Vamos por parte então...

       Quanto ao "-i" do POSTROUTING, realmente está errado, coisa do copia, colar e adaptar, deveria ser "-o".

       Bom, se a eth0 está conectada na sua rede, então tudo que é enviado para ela é o download da rede, então vamos controlar o que é enviado (sai) via eth0.

       Primeiramente, vamos limpar o controle de tráfego (tc) e criar a classe principal 1:1 e duas classes abaixo, uma classe 1:11 que vai passar tudo o vem da eth1 (internet), marcado com 1, e outra classe 1:12 para o resto (firewall):

# Limpar controle de tráfego e definir htb com fluxo para 1:12

tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1: htb default 12

# Classe principal 1:1
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
tc qdisc add dev eth0 parent 1:1 sfq perturb 10

# Subclasses 1:11 e 1:12
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 2mbit ceil 2mbit
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 98mbit ceil 100mbit
tc qdisc add dev eth0 parent 1:11 sfq perturb 10
tc qdisc add dev eth0 parent 1:12 sfq perturb 10

       Agora podemos monitorar a velocidade com:

watch -n 1 tc -s class show dev eth0

       Deixando o watch acima rodando e fazendo download de dentro rede, como ficam os valores de rate mostrados de segundo a segundo em cada classe? Aqui teoricamente todo o tráfego está passando por 1:12 e então por 1:1.

       Ainda com o watch rodando, vamos passar o tráfego da rede local por 1:11:

# Marcar o tráfego que entra pela  eth1, download, com 1
iptables -t mangle -A PREROUTING -i eth1 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -i eth1 -j RETURN

# Direcionar todo o tráfego marcado com 1, download, para a classe 1:11
tc filter add dev eth0 parent 1: protocol ip handle 1 fw classid 1:11

       E agora, como estão os valores de rate no watch para cada classe?

       Agora vamos diminuir o a banda de download para 50 kbps, conexão discada, rsrsrs:

tc class change dev eth0 parent 1:1 classid 1:11 htb rate 50kbit ceil 50kbit

       E agora, como estão os valores de rate no watch para cada classe? Espera-se que em menos de 10 segundos a banda caia para o valor estipulado, mas no watch vai cair gradativamente devido à janela grande para estatística.

       Legal, agora vamos criar duas sub classes sob a classe reduzida acima, a 1:111 para a máquina (192.168.0.111 no caso) que está sendo fazendo download e outra para o resto da rede, lembrando que temos que marcar o tráfego e refazer o filtro:

tc class add dev eth0 parent 1:11 classid 1:111 htb rate 40kbit ceil 50kbit
tc class add dev eth0 parent 1:11 classid 1:112 htb rate 10kbit ceil 50kbit
tc qdisc add dev eth0 parent 1:111 sfq perturb 10
tc qdisc add dev eth0 parent 1:112 sfq perturb 10

# Download já é marcado com 1 e vai para a classe 1:112
tc filter add dev eth0 parent 1: protocol ip handle 1 fw classid 1:112

# Download para 192.168.0.111 marcado com 2 e vai para a classe 1:111
# O destino local é atribuído depois do roteamento, então usa-se "POSTROUTING"
# A marção de ser antes da outra geral, então usa-se "-I" em vez de "-A"
iptables -t mangle -I POSTROUTING 1 -o eth0 -d 192.168.0.111 -j MARK --set-mark 2
iptables -t mangle -I POSTROUTING 2 -o eth0 -d 192.168.0.111 -j RETURN
tc filter add dev eth0 parent 1: protocol ip handle 2 fw classid 1:111

       E agora, como estão os valores de rate no watch para cada classe? A classe 1:11 deve estar com 50 kbps no talo, a classe 1:111 deve estar com 40 kbps ou mais, sendo esse "mais" o que está ocioso na classe 1:112 para chegar nos 10 kbps. Se colocar outra máquina para fazer download, vai então ter a 1:11 com 50 kbps, 1:111 com 40 kbps e 1:112 com 10 kbps. Se matar o dowload da máquina com 40 kbps, a classe 1:112 vai chegar nos 50 kbps.

       Creio que tenha pego o espírito do coisa. Basta agora seguir a mesma lógica

       Bom isso é o máximo que posso contribuir, boa sorte!


[]'s
          Junior Polegato




Reply to: