cyberwalk
(usa Debian)
Enviado em 03/02/2009 - 04:00h
Pessoal,
estou com um problema para implementar o CBQ em meu servidor.
Possuo o Fedora 9 com o kernel padrão do fedora (2.6.27.12-78.2.8.fc9.i686) que foi atualizado direto pelo yum.
Possuo duas interfaces reais (eth0 e eth1) e uma virtual (eth0:1) e meu link é através de um modem adsl (ppp0).
Possuo também o SQUID rodando e meu iptables faz redirecionamento de portas, ou seja, qq coisa vindo da rede interna (eth0)
com destino a porta 80, redireciona para a porta do SQUID (3128).
O problema real é o seguinte:
O CBQ não está fazendo a limitação que deveria, não importa a RATE ou o WEIGHT q eu altere nas regras, ele nao faz a limitação,
seja para download, quanto para upload.
Abaixo segue minha conf:
=====================================================
Interfaces:
eth0 (Rede Interna - 192.168.0.0/24)
eth0:1 (Rede para administração de AP-Wireless - Sem uso de rede - 192.168.100.0/24)
eth1 (Sem configuração - conectada ao modem ADSL)
ppp0 (Link com a internet ligado a eth1)
=====================================================
CBQ:
cbq-0002.in.redelocal:
DEVICE=eth0,100Mbit,10Mbit
RATE=200Kbps
WEIGHT=20Kbps
PRIO=5
BOUNDED=no
ISOLATED=no
RULE=192.168.0.0/24
cbq-0003.in.192168000002:
DEVICE=eth0,100Mbit,10Mbit
RATE=100Kbps
WEIGHT=10Kbps
PRIO=5
BOUNDED=yes
ISOLATED=yes
RULE=192.168.0.2/32
cbq-1002.out.redelocal:
DEVICE=ppp0,10Mbit,1Mbit
RATE=100Kbps
WEIGHT=10Kbps
PRIO=5
BOUNDED=yes
ISOLATED=yes
RULE=192.168.0.0/24,
cbq-1003.out.192168000002:
DEVICE=ppp0,10Mbit,1Mbit
RATE=300Kbps
WEIGHT=30Kbps
PRIO=5
BOUNDED=yes
ISOLATED=yes
RULE=192.168.0.2/32,
================================================
Isso é o que aparece com o comando 'cat /var/cache/cbq.init':
/sbin/tc qdisc del dev eth0 root
/sbin/tc qdisc add dev eth0 root handle 1 cbq bandwidth 100Mbit avpkt 3000 cell 8
/sbin/tc class change dev eth0 root cbq weight 10Mbit allot 1514
/sbin/tc qdisc del dev ppp0 root
/sbin/tc qdisc add dev ppp0 root handle 1 cbq bandwidth 10Mbit avpkt 3000 cell 8
/sbin/tc class change dev ppp0 root cbq weight 1Mbit allot 1514
/sbin/tc class add dev eth0 parent 1: classid 1:2 cbq bandwidth 100Mbit rate 200Kbps weight 20Kbps prio 5 allot 1514 cell 8 maxburst 20 avpkt 3000 bounded isolated
/sbin/tc qdisc add dev eth0 parent 1:2 handle 2 tbf rate 200Kbps buffer 10Kb/8 limit 15Kb mtu 1500
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 192.168.0.0/24 classid 1:2
/sbin/tc class add dev eth0 parent 1: classid 1:3 cbq bandwidth 100Mbit rate 100Kbps weight 10Kbps prio 5 allot 1514 cell 8 maxburst 20 avpkt 3000 bounded isolated
/sbin/tc qdisc add dev eth0 parent 1:3 handle 3 tbf rate 100Kbps buffer 10Kb/8 limit 15Kb mtu 1500
/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 192.168.0.2/32 classid 1:3
/sbin/tc class add dev ppp0 parent 1: classid 1:1002 cbq bandwidth 10Mbit rate 100Kbps weight 10Kbps prio 5 allot 1514 cell 8 maxburst 20 avpkt 3000 bounded isolated
/sbin/tc qdisc add dev ppp0 parent 1:1002 handle 1002 tbf rate 100Kbps buffer 10Kb/8 limit 15Kb mtu 1500
/sbin/tc filter add dev ppp0 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.0.0/24 classid 1:1002
/sbin/tc class add dev ppp0 parent 1: classid 1:1003 cbq bandwidth 10Mbit rate 300Kbps weight 30Kbps prio 5 allot 1514 cell 8 maxburst 20 avpkt 3000 bounded isolated
/sbin/tc qdisc add dev ppp0 parent 1:1003 handle 1003 tbf rate 300Kbps buffer 10Kb/8 limit 15Kb mtu 1500
/sbin/tc filter add dev ppp0 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.0.2/32 classid 1:1003
========================================================================================================================
Isso, quando executo o comando 'cbq stats' apos teste no velocimetro 'www.speedtest.net':
### eth0: queueing disciplines
qdisc cbq 1: root rate 100000Kbit (bounded,isolated) prio no-transmit
Sent 1585999 bytes 1339 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
borrowed 0 overactions 0 avgidle 234 undertime 0
### eth0: traffic classes
class cbq 1: root rate 100000Kbit (bounded,isolated) prio no-transmit
Sent 1586435 bytes 1341 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
borrowed 0 overactions 0 avgidle 227 undertime 0
### eth0: filtering rules
filter parent 1: protocol ip pref 100 u32
filter parent 1: protocol ip pref 100 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 100 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:2 (rule hit 1342 success 1342)
dst 192.168.0.0/24 (success 1342 )
filter parent 1: protocol ip pref 100 u32 fh 800::801 order 2049 key ht 800 bkt 0 flowid 1:3 (rule hit 0 success 0)
dst 192.168.0.2/32 (success 0 )
### eth1: queueing disciplines
qdisc pfifo_fast 0: root bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 6957726 bytes 21689 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
### ppp0: queueing disciplines
qdisc cbq 1: root rate 10000Kbit (bounded,isolated) prio no-transmit
Sent 392585 bytes 856 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
borrowed 0 overactions 0 avgidle 2343 undertime 0
### ppp0: traffic classes
class cbq 1: root rate 10000Kbit (bounded,isolated) prio no-transmit
Sent 392585 bytes 856 pkt (dropped 0, overlimits 0 requeues 0)
rate 0bit 0pps backlog 0b 0p requeues 0
borrowed 0 overactions 0 avgidle 2343 undertime 0
### ppp0: filtering rules
filter parent 1: protocol ip pref 100 u32
filter parent 1: protocol ip pref 100 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 100 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:1002 (rule hit 856 success 0)
src 192.168.0.0/24 (success 0 )
filter parent 1: protocol ip pref 100 u32 fh 800::801 order 2049 key ht 800 bkt 0 flowid 1:1003 (rule hit 856 success 0)
src 192.168.0.2/32 (success 0 )
Repare nas linhas referente ao filtro para a classe de IP e o filtro para o IP.Parece que ele não acha nenhum trafego para o filtro com IP especifico. Porém, mesmo se eu limitando o filtro da classe de IP para algo como RATE=100Kbps, não ocorre a limitação.
=========================================================================================================================
Não entendo por que não funciona, ao meu ver esta tudo correto. A unica coisa que me falta ver é o kernel. Digo isso porque
minha primeira opção seria o HTB, pore, ele começou a dar erros dizendo que meu Kernel não dava suporte ao HTB ou o HTB já
estava rodando.
Como não queria mecher no Kernel, decidi pelo CBQ, mas com isso, estou preocupado se este meu Kernel realmente está bom.
Por favor me ajudem.
PS.: Alguem pdoeria me dizer quais as opções do Kernel eu preciso compilar para um bom funcionamento do QoS?