[AsteriskBrasil] QoS

Junior Polegato - Asterisk asterisk em juniorpolegato.com.br
Quinta Novembro 4 16:34:48 BRST 2010


Em 04-11-2010 15:24, Thiago Bruni Tawil escreveu:
> Cara!! Muito obrigado, mas acho que vou construír meu´próprio script, 
> uma vez que seu script é para controlar a internet da empresa, e o meu 
> é pra configurar o próprio servidor, só preciso colocar SIP e UDP com 
> > prioridade de banda...
> Se você tiver um script assim... ahuahuah vlw kra!!
> Agora vou ter prova na faculdade, voltando pra casa eu testo e posto 
> aqui!!!
> Abraços!!

Olá,

         O próprio Asterisk marca os pacotes SIP e RTP (ambos UDP) 
devidamente e estes são priorizados por padrão nas interfaces do seu 
firewall, mas supondo que o Asterisk está direto na internet, não 
funciona a parte de download, visto que somente pode ser controlado o 
que é enviado para um interface e não o que é recebido.

         Segue uma sugestão:


# Rede Local
LAN=192.168.0.0/24

# Limpar marcas
iptables -t mangle -F

# Marcar SIP - porta 5060 UDP - marca 1
iptables -t mangle -A PREROUTING -p udp --dport 5060 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p udp --dport 5060 -j RETURN
iptables -t mangle -A PREROUTING -p udp --sport 5060 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p udp --sport 5060 -j RETURN

# Marcar RTP - portas de 10.000 a 20.000 (/etc/asterisk/rtp.conf) - marca 2
iptables -t mangle -A PREROUTING -p udp --dport 10000:20000 -j MARK 
--set-mark 2
iptables -t mangle -A PREROUTING -p udp --dport 10000:20000 -j RETURN
iptables -t mangle -A PREROUTING -p udp --sport 10000:20000 -j MARK 
--set-mark 2
iptables -t mangle -A PREROUTING -p udp --sport 10000:20000 -j RETURN

# Marcar o tráfego para fora da rede local com 3
iptables -t mangle -A POSTROUTING ! -d $LAN -j MARK --set-mark 3
iptables -t mangle -A POSTROUTING ! -d $LAN -j RETURN

# Divisão de banda em kilobits
PLACA_UP=eth0
BANDA_PLACA_UP=100000

PLACA_DOWN=eth1
BANDA_PLACA_DOWN=100000

BANDA_MAX_UP=300
BANDA_MAX_DOWN=1024

BANDA_RTP=270
BANDA_SIP=20

BANDA_ALL_UP=$((BANDA_MAX_UP-BANDA_SIP-BANDA_RTP))
BANDA_ALL_DOWN=$((BANDA_MAX_DOWN-BANDA_SIP-BANDA_RTP))

BANDA_PLACA_ALL_UP=$((BANDA_PLACA_UP-BANDA_MAX_UP))
BANDA_PLACA_ALL_DOWN=$((BANDA_PLACA_DOWN-BANDA_MAX_DOWN))

# Controle de tráfego de Upload
tc qdisc del dev $PLACA_UP root
tc qdisc add dev $PLACA_UP root handle 1: htb default 3
     tc class add dev $PLACA_UP parent 1: classid 1:1 htb rate 
${BANDA_PLACA_UP}kbit ceil ${BANDA_PLACA_UP}kbit
         tc qdisc add dev $PLACA_UP parent 1:1 sfq perturb 10
         tc class add dev $PLACA_UP parent 1:1 classid 1:2 htb rate 
${BANDA_MAX_UP}kbit ceil ${BANDA_MAX_UP}kbit prio 0
             tc qdisc add dev $PLACA_UP parent 1:2 sfq perturb 10
             tc class add dev $PLACA_UP parent 1:2 classid 1:10 htb rate 
${BANDA_RTP}kbit ceil ${BANDA_MAX_UP}kbit prio 1
             tc qdisc add dev $PLACA_UP parent 1:10 sfq perturb 10
             tc class add dev $PLACA_UP parent 1:2 classid 1:20 htb rate 
${BANDA_SIP}kbit ceil ${BANDA_MAX_UP}kbit prio 2
             tc qdisc add dev $PLACA_UP parent 1:20 sfq perturb 10
             tc class add dev $PLACA_UP parent 1:2 classid 1:30 htb rate 
${BANDA_ALL_UP}kbit ceil ${BANDA_MAX_UP}kbit prio 3
             tc qdisc add dev $PLACA_UP parent 1:30 sfq perturb 10
         tc class add dev $PLACA_UP parent 1:1 classid 1:3 htb rate 
${BANDA_PLACA_ALL_UP}kbit ceil ${BANDA_PLACA_UP}kbit prio 10
         tc qdisc add dev $PLACA_UP parent 1:3 sfq perturb 10
tc filter add dev $PLACA_UP parent 1: protocol ip handle 1 fw classid 1:10
tc filter add dev $PLACA_UP parent 1: protocol ip handle 2 fw classid 1:20
tc filter add dev $PLACA_UP parent 1: protocol ip handle 3 fw classid 1:30

# Controle de tráfego de Download
tc qdisc del dev $PLACA_DOWN root
tc qdisc add dev $PLACA_DOWN root handle 1: htb default 3
     tc class add dev $PLACA_DOWN parent 1: classid 1:1 htb rate 
${BANDA_PLACA_DOWN}kbit ceil ${BANDA_PLACA_DOWN}kbit
         tc qdisc add dev $PLACA_DOWN parent 1:1 sfq perturb 10
         tc class add dev $PLACA_DOWN parent 1:1 classid 1:2 htb rate 
${BANDA_MAX_DOWN}kbit ceil ${BANDA_MAX_DOWN}kbit prio 0
             tc qdisc add dev $PLACA_DOWN parent 1:2 sfq perturb 10
             tc class add dev $PLACA_DOWN parent 1:2 classid 1:10 htb 
rate ${BANDA_RTP}kbit ceil ${BANDA_MAX_DOWN}kbit prio 1
             tc qdisc add dev $PLACA_DOWN parent 1:10 sfq perturb 10
             tc class add dev $PLACA_DOWN parent 1:2 classid 1:20 htb 
rate ${BANDA_SIP}kbit ceil ${BANDA_MAX_DOWN}kbit prio 2
             tc qdisc add dev $PLACA_DOWN parent 1:20 sfq perturb 10
             tc class add dev $PLACA_DOWN parent 1:2 classid 1:30 htb 
rate ${BANDA_ALL_DOWN}kbit ceil ${BANDA_MAX_DOWN}kbit prio 3
             tc qdisc add dev $PLACA_DOWN parent 1:30 sfq perturb 10
         tc class add dev $PLACA_DOWN parent 1:1 classid 1:3 htb rate 
${BANDA_PLACA_ALL_DOWN}kbit ceil ${BANDA_PLACA_DOWN}kbit prio 10
         tc qdisc add dev $PLACA_DOWN parent 1:3 sfq perturb 10
tc filter add dev $PLACA_DOWN parent 1: protocol ip handle 1 fw classid 1:10
tc filter add dev $PLACA_DOWN parent 1: protocol ip handle 2 fw classid 1:20
tc filter add dev $PLACA_DOWN parent 1: protocol ip handle 3 fw classid 1:30


[]'s
            Junior Polegato



Mais detalhes sobre a lista de discussão AsteriskBrasil