Além de trabalhar com o protocolo SIP, o Asterisk tem um protocolo próprio chamada IAX que
encontra-se na versão 2 sendo então IAX2. O IAX significa “Inter Asterisk eXchange” e foi desenvolvido pela Digium devido aos problemas do asterisk principalmente com NAT e porque o protocolo SIP tráfega o áudio no intervalo das portas 10000 a 20000.
O IAX diferente do protocolo SIP utiliza a porta 4569 (UDP) para o tráfego de aúdio sendo então a forma mais segura de conectarmos um Asterisk a outro.
Além disso ele tem uma função chamada “trunking” onde ele utiliza o mesmo cabeçalho para enviar
o áudio e quando se atinge um número alto de chamadas temos assim uma redução no uso da banda.
Agora irei postar uma explicação conceitual do IAX tirada da wikipedia.
IAX
IAX2- IAX (acrónimo para “ Inter Asterisk eXchange”) é um protocolo desenvolvido pela Digium com o objectivo de estabelecer comunicação entre servidores Asterisk. IAX é um protocol transporte, tal como o SIP, no entanto faz uso apenas de um único porto UDP (4569) tanto para sinalização como para streams RTP. O facto de utilizar apenas um porto é uma vantagem em cenários de Firewall e ou NAT. IAX2 é versão 2 do IAX.
Actualmente este protocolo já é utilizado, para além de comunicação entre servidores Asterisk, em telefones VoIP. Assim como existem telefones SIP existem também telefones IAX2.
IAX é usado pelo Asterisk VoIP PBX alternativo ao SIP, H.323, para conectar a outros dispositivos que suportam IAX (uma lista limitada no momento, mas com rápido crescimento).
Atualmente está na versão 2. O Asterisk suporta tanto o IAX quanto o IAX 2.
Propriedades Básicas
O IAX2 é um protocolo VoIP que usualmente carrega tanto a sinalização quanto os dados no mesmo caminho. Os comandos e parâmetros são enviados e qualquer extensão tem que ter um código numérico alocado. Historicamente isso foi modelado após os dados internos passar por módulos do Asterisk.
O IAX2 utiliza um único fluxo de dados UDP (usualmente na porta 4569) para comunicar entre pontos finais, tanto para sinalização quanto para dados. O tráfico de voz é trasmitido in-band, fazendo o IAX mais fácil de ser trabalhado sobre firewalls e também atrás de NAT's. É o principal contraste com o protocolo SIP, H323 e o "Media Gateway Control Protocol" que são utilizados RTP's out-bands para entregar as informações do fluxo.
O IAX2 suporta entroncamento, e canais de multiplexação em um único link. Quando entroncado, dados de múltiplas chamadas são unidas em um único 'set' de pacotes, o que significa que um datagrama IP pode entregar informações para mais de uma chamada, reduzindo o gasto efetivo IP sem criar latência adicional. Essa é uma grande vantagem para usuários VoIP.
Dando continuidade ao assunto, irei postar um exemplo de configuração de IAX2, para brincarmos de ligar de um asterisk a outro. Vamos imaginar que temos uma matriz em São Paulo utilizando os ramais 200 a 299 e uma filial em Araraquara utilizando os ramais 300 a 399.
Em ambas as maquinas com o asterisk já instalado, necessitaremos apagar o iax.conf atual e criar um novo para editarmos com mais facilidade e controle os comandos que utilizaremos.
Para apagarmos o conf atual: > iax.conf
Para criarmos o conf novo: vim /etc/asterisk/iax.conf
No iax.conf da matriz iremos escrever o seguinte código:
[general]
bindport=4569
bindaddr=0.0.0.0
srvlookup=no
;language=pt_BR
disallow=all
allow=ilbc
allow=gsm
allow=ulaw
allow=alaw
register => filial:123456@192.168.0.201
[filial]
username=filial
type=peer
secret=123456
qualify=yes
trunk=no
requirecalltoken=no
host=192.168.0.201
[matriz]
username=matriz
type=friend
secret=123456
qualify=yes
host=dynamic
trunk=no
requirecalltoken=no
context=ramais
No iax.conf da filial iremos utilizar o seguinte código:
[general]
bindport=4569
bindaddr=0.0.0.0
srvlookup=no
;language=pt_BR
disallow=all
allow=ilbc
allow=gsm
allow=alaw
allow=ulaw
register => matriz:123456@192.168.0.200
[matriz]
username=matriz
type=peer
secret=123456
qualify=yes
trunk=no
requirecalltoken=no
host=192.168.0.200
[filial]
username=filial
type=friend
secret=123456
qualify=yes
host=dynamic
trunk=no
context=ramais
Para darmos continuidade a nossa brincadeira iremos ter de realizar os mesmo procedimentos do iax.conf no extensions.conf, utilizando os seguintes comandos tanto na matriz como na filial:
> extensions.conf
vim extensions.conf
No extensions.conf da matriz iremos digitar o seguinte código:
exten => _3XX,1,Noop(LIGANDO PARA FILIAL)
same => n,Dial(IAX2/filial/${EXTEN})
same => n,Hangup()
E no extensions.conf da filiar iremos digitar o seguinte:
exten => _2XX,1,Noop(LIGANDO PARA MATRIZ)
same => n,Dial(IAX2/matriz/${EXTEN})
same => n,Hangup()
Pronto! Esta é configuração necessária para podermos ligar de um asterisk a outro, ou seja, da matriz da empresa para filial. Porém nestes códigos acima não está inclusa a configuração inicial do extensions.conf, caso necessitem de ajuda para fazerem funcionar, comentem ou entrem em contato por email. Terei o prazer de ajudá-los. Até a próxima pessoal. email para contato psyccokyra@gmail.com
Nenhum comentário:
Postar um comentário