Script QoS simples e eficaz para conexões DSL

Acompanhando o C.T.U vi maravilloso script para oferecer qualidade no tráfego IAX utilizando DSL.QoS

Hoje as conexões DSL estão dominando o mercado brasileiro e mundial devido ao seus baixos custos, claro que não podemos traduzir isso em qualidade.
É cada vez maior a quantidade de clientes conectados a internet através desses links com diferentes velocidades. O que realmente acontece é que as operadoras tem uma estratégia voltada totalmente para área comercial não se preocupando com o dimensionamento da rede para suportar essa grande quantidade de conexões.
Assim temos conexões de alta velocidade e baixa qualidade!

Outro grande problema que enfrentamos no dia a dia  é quando clientes que possuem conexões DSL não conseguem enxergar a necessidade de um link exclusivo para o trafégo de voz sobre ip, a cultura voip na cabeça deles ainda não está digerida de forma clara. Com isso, nos deparamos com uma enorme competição de pacotes de voz e dados na rede interna, onde não se priorizam nem um nem outro pacote. Utilizando esse ambiente podemos notar cortes nas chamadas, eco, delay e falhas de completamento quando um ou mais usuarios baixam seus email’s no outlook e ou fazem download de videos e músicas.

Se utilizar este script ira notar grande diferença nas conexões DSL, ainda que não solucione todos os problemas com perfeição. Este script foi desenvolvido para ser utilizado com IAX na comunicação de servidor para servidor, caso possua entrocamentos de servidores Asterisk utilize o mesmo nas duas pontas.

Criando o Script

No Debian estable instale o iproute através do comando:

apt-get install iproute

Agora iremos criar o script. Para isso basta executar o comando:

nano qos.sh

e adicionar essas linhas e salvar o arquivo em um diretorio de sua preferencia.

—————————————————————————————————————————————————————
#remove as regras antigas antes de continuar.
tc qdisc del dev eth0 root

tc qdisc add dev eth0 root handle 1: prio priomap 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 0
tc qdisc add dev eth0 parent 1:1 handle 10: sfq limit 3000
tc qdisc add dev eth0 parent 1:2 handle 20: sfq

#descomente essa linha caso queira limitar sua conexão.
#tc qdisc add dev eth0 parent 1:3 handle 30: tbf rate 0.20mbit burst 5kb latency 250ms peakrate 0.22mbit minburst 1540

#se você descomentar essa linha não esqueça de comentar a linha acima.
tc qdisc add dev eth0 parent 1:3 handle 30: sfq #no limit on traffic (could still bomb your pipe if you try)

#filtra os pacotes para as direções corretas.
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 4569 0xffff flowid 1:1
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip sport 4569 0xffff flowid 1:1
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip tos 0×10 0xff flowid 1:1
tc filter add dev eth0 parent 1:0 protocol ip u32 match ip dport 4569 0xffff match ip dst a.b.c.d/32 classid 1:10

—————————————————————————————————————————————————————

Se estamos no mesmo diretorio do nosso programa, então:

# transforma o script em executavel
chmod +x qos.sh

# executando o script
./qos.sh

Entende que a ETH0 é a interface externa
Entende que a.b.c.d é o IP do servidor para onde vamos encaminhar o trafego

Este script cria 3 pipes difrentes. Permite sempre que o pipe 1:10 va antes do 1:20. Permite sempre que o pipe 1:20 va antes do 1:30. Então classifica todo o trafego que esta na porta 4569(IAX) no grupo 1:10, qualquer coisa que tenha a FLAG 0×10 QoS (minimizar latência) se coloca no grupo 1:20 (muitos telefones voip tem esta opção, só que precisamos ativa-la em sua interface de configuração). Finalmente tudo que não for igual a FLAG citada acima ficará no ultimo grupo(isto basicamente é tudo que não é voip)

O teste é simples. Durante uma chamada IAX executaremos uma das provas de velocidade: Visite o Google Earth que utiliza uma grande quantidade de banda antes de executar o script, teremos um corte de mais ou menos 30 segundos na conversação. Agora execute o script e veja a diferença.

Deixe um comentário aqui se o teste funcionou.

Para ver o script em ação:
watch tc -s qdisc ls dev eth0

Para parar o script e voltar aos ajustes padrões:
tc qdisc del dev eth0 root

“Faça também o teste com o protocolo SIP na porta 5060, basta alterar os parametros do script”

Related Posts with Thumbnails

Deixe um comentario