Postado originalmente por
aheringer
Grande Sergio!
E aí cara, tudo blz ? Feliz ano novo para vc e sua família ! Sim, estou de volta ao fórum depois de um longo tempo sem postar. Gostei muito da sua palestra sobre QoS no MUM e pessoas como vc é que enobrecem o underlinux. Quanto ao MPLs eu não tentei implementar pois acabei desenvolvendo uma solução própria para priorizar o voip e afins. Minha briga com o QoS é antiga e testei de todas as maneiras uma forma de priorizar o tráfego que entra pois são muitas as dificuldades:
- Priorizar por TOS/DSCP não é uma boa idéia pq o tráfego que retorna sempre vem com DSCP/TOS zerado. Além disso alguns vírus fazem uso deste campo ao gerar seus pacotes.
- Priorizar por porta tmbm não funciona pq as portas SIP são somente para sinalização sendo que a mídia de voz usa portas aleatórias.
- Priorizar por destino tmbm não é uma boa idéia pois as maioria das operadoras voip faz o reinvite do tráfego RTP e nunca sabemos para qual servidor será encaminhado.
- Priorizar por origem funciona porém é necessário manter as regras para cada ATA que esteja em uso . Além disso o uso do softphone fica comprometido.
Uma solução seria priorizar por L7 mas a última vez que testei ele reconhecia somente o RTP gerado pelo netmeeting, sendo que o filtro para o SIP/CRTP/RTP não está completamente maduro (
QoS and Layer7 RTP doesn't work? - LinksysInfo - Community Forums for Linksys Devices). Outro porém é o uso do RTP para aplicações não críticas como jogos, por exemplo. o que acaba inviabilizar o uso do QoS sobre o RTP. Tmbm o fato do pacote RTP ser pequeno, mas de bom fluxo, torna o consumo de processamento um pouco maior.
A soluçao que adotei foi escrever um programa em C para reconhecer o que é UDP -> RTP->G729 gerador pelo SIPv2 e alterar o buffer das interfaces (fifo) para colocar os pacotes prioritários na frente dos demais pacotes não prioritários. A vantagem disso é que o priorizador reconhece qualquer mídia de voz gerado por qualquer dispositivo (ata, softphones, etc) de forma automática sem fazer reserva de banda. O sistema roda no rtl8186 como bridge e não há necessidade de configurar nada, bastando colocar na porta WAN do equipamento o cabo que vem do roteador e na porta LAN colocar o cabo que sai para a rede local. Com isso, independente do tráfego passante a voz será priorizada sem alterar a estrutura de rede atual.
Grande abraço,
André Heringer