O documento descreve o software de telefonia VoIP Asterisk, incluindo sua arquitetura modular baseada em canais, codecs, protocolos e aplicações. Também discute a instalação do Asterisk em Linux, requisitos de hardware, e integração com placas de hardware de telefonia.
2. 2 VoIP - Asterisk Luiz Arthur
Asterisk é um software VoIP (Voz sobre Internet Protocol) opensource de
licença GPL que pode transformar um simples computador em um poderoso
e completo PBX (Private Branch eXchange) criado pela Digium Inc.
O Asterisk pode ser executado em plataformas UNIX-Like tal como Linux e
sistemas BSD, o Asterisk também foi projetado para facilitar a adição de
qualquer componente de telefonia, seja hardware ou software,
permitindo que os usuários da rede modele seus sistemas telefônicos da
forma que preferir.
O Asterisk está no meio de uma grande revolução, pois ele esta tratando de
uma área da tecnologia que esteve parada no tempo que é a industria de
Sistemas de Ramais Privados (PBX).
Os principais fabricantes de telecomunicação ainda montam sistemas
de PBX caros e incompatíveis entre si, com operações complicadas,
códigos obsoletos sobre hardware e engenharia ultrapassados.
Como exemplo, o Gerenciador de Telecomunicação Empresarial da Nortel
mistura um servidor Windows NT 4.0, um Telefone Chaveado de teclas
baseado em VXWorks de 15 anos atrás e um PC de 700 Mhz e tudo isto pode
ser adquirido por algo em torno de 5 a 15 mil dólares, não incluindo
telefones.
3. 3 VoIP - Asterisk Luiz Arthur
Todos os principais fabricantes de telecomunicações oferecem produtos
similares e eles geralmente não querem que você tenha flexibilidade ou
opção; eles querem que você fique restrito a seus ciclos de produtos.
Mas o Asterisk tenta mudar tudo isto, o Asterisk tenta proporcionar
liberdade ao sistema telefônico, permitindo que você configure o
sistemas ao seu gosto. Naturalmente que esta flexibilidade tem um preço:
o Asterisk pode tornar-se difícil de configurar devido as tantas possibilidades
de configuração, é claro que isto pode ser visto como um ponto negativo ou
positivo.
Mas uma coisa é certa o Asterisk coloca em cheque os altos custos das
centrais telefônicas convencionais, além de proporcionar conectividade
com das redes VoIP com as tradicionais PSTN (Public Switched Telephone
Network).
As principais vantagens do Asterisk são a redução de custos, já que
possibilita o uso de VoIP que normalmente se mostra mais em conta do que
chamadas DDD e DDI das redes PSTN. Deve ser considerada também a
economia indireta quando falamos do agregado de funções que o
Asterisk proporciona, tais funções se fossem incorporadas a um PBX
tradicionais representariam custos exorbitantes.
4. 4 VoIP - Asterisk Luiz Arthur
A autonomia para controle do sistema de telefonia também deve ter grande
destaque como vantagem pois agora não existe mais a dependência de
um técnico de uma central telefônica proprietária, e as novas
funcionalidades, mudanças e novos desenvolvimentos podem ser
implementados por qualquer conhecedor da arquitetura VoIP.
O plano de discagem flexível poderoso também é um destaque pois
possibilitam por exemplo controle de rota das chamadas.
Por fim, o Asterisk pode ser utilizado em diversas aplicações, citando
apenas algumas funcionalidades, podemos ver:
● Conectar empregados trabalhando em casa ao PABX da empresa
(HomeOffice);
● Conectar escritórios em localidades, até mesmos estados diferentes via
Internet;
● Correio de voz integrado ao e-mail/webmail;
● Construir aplicações de resposta automática por voz, que podem
conectar o usuário a um sistema de pedidos por exemplo, ou outras
aplicações internas;
● Das acesso ao PABX da empresa para usuários em viagem, conectando
por exemplo, a partir de um hotel ou aeroporto;
● Registro de chamadas para integração com sistema de tarifação;
● Integração com reconhecimento de voz;
● Música em espera para clientes aguardando na fila com suporte a MP3;
5. 5 VoIP - Asterisk Luiz Arthur
Arquitetura do Asterisk
O Asterisk foi desenvolvido para ter o máximo de flexibilidade, assim o
Asterisk fica transparente a protocolos, CODECs e hardwares, podendo ser
compatível com qualquer tecnologia existente ou que venha a ser lançada,
sem que sejam necessárias mudança no núcleo do Asterisk.
Desta forma o Asterisk trabalha de forma modular, e carregar os
módulos separadamente permite maior flexibilidade ao administrador,
permitindo que ele escolha a melhor e mais enxuta configuração que o
atenda.
A arquitetura do Asterisk é baseada em 4 pontos principais:
● Canais – Um canal pode ser interpretado como uma conexão que “traz”
uma chamada ao Asterisk PABX. Um canal pode ser uma conexão a um
telefone analógico tradicional, ou a uma linha PSTN, ou uma chamada
lógica, como uma chamada via Internet. Toda chamada é originada ou
recebida em um canal distinto. Alguns tipos de canais suportados pelo
Asterisk são SIP, H.323, IAX, PSTN, ISDN, etc. Então um canal é
equivalente à linha telefônica do sistema telefônico tradicional;
6. 6 VoIP - Asterisk Luiz Arthur
● Codecs – São responsáveis por converter a voz em sinais digitais por
exemplo. Os codecs influenciam na quantidade de chamadas que
podem ser colocadas em um mesmo link, isso pode ser feito codificando-
se a voz em uma forma que ocupe menor banda. O tráfego de voz em
redes PSTN ocupa uma banda de 64 Kbps. Aplicando-se codecs como o
G.711 para o tráfego da voz em redes IP alcançamos a mesma banda
(64Kbps). Porém, codecs como o GSM conseguem reduzir essa banda
para aproximadamente 13 Kbps e o G.729 consegue compressão de
8Kbps, então o Asterisk suporta vários tipos de codificação de voz.
● Protocolos – São responsáveis por definir a forma/linguagem como os
pontos de comunicação (terminais, gateways, etc) vão negociar entre si.
São responsáveis por tarefas como sinalização para estabelecer
conexão, determinar ponto de destino, roteamento entre pontos, e
também questões de sinalização de telefonia como campainha,
identificados de chamada, desconexão, etc. Os protocolos mais utilizados
são o H.323 e o SIP, mas no âmbito do Asterisk seu protocolo IAX
também tem tido grande difusão.
● Aplicações – São as funcionalidades encontradas no Asterisk, como
voicemail, distribuidor automático de chamadas e fila de atendimento
(Call-Centers), servidor de música de espera, discador automático
(telemarketing), sala de conferência, Media Gateway (VoIP/PSTN),
unidade de resposta automática, etc.
7. 7 VoIP - Asterisk Luiz Arthur
Plano de Discagem
Outro ponto importante do Asterisk é o Plano de discagem, este é
considerado o coração ou melhor o cérebro que define como o
Asterisk irá gerenciar as chamadas. Consiste de uma lista de instruções
ou passos que o Asterisk deve seguir. Essas instruções são disparadas a
partir dos dígitos recebidos de um canal ou aplicação. É fundamental para
configurar o Asterisk, que se entenda o plano de discagem. Nós iremos no
aprofundar neste assunto mais para frente no texto.
Hardware de Telefonia
Bem o Asterisk só exige hardware específico se você quiser interligar
sua rede VoIP com outro tipo de rede (PSTN, ISDN, etc). O Asterisk
suporta inúmeros tipos de hardware de telefonia, de inúmeros fabricantes,
mas principalmente o hardware fabricado pela Digium.
Alguns hardwares suportados são: Wildcard TE411P, Wildcard TE410P,
Wildcard TE406P, Wildcard TE405P, Wildcard TDM400P S100I (IAXy),
,
Generic X100P, OpenLine4, OpenSwitch6/12, etc.
8. 8 VoIP - Asterisk Luiz Arthur
Vamos ver agora apenas dois exemplos de hardware Asterisk:
● Placa XP100P - Esta placa é uma das mais simples com uma porta FXO
– Foreign eXchange Office, que pode ser ligada à rede pública ou a uma
interface de ramal de PBX. Uma placa faz/modem com chipset Intel 537
ou MD3200 pode ser usada como uma XP100P .
9. 9 VoIP - Asterisk Luiz Arthur
● Placa TDM400P – Esta placa analógica pode conter até quatro canais.
Os canais podem ser FXO (pode ser ligado à rede pública ou ramal de um
PBX) ou FXS – Foreign eXchange Station (pode ser ligado a um
assinante, como um telefone analógico) dependendo da configuração
escolhida. Então nós utilizamos linhas FXS para ligar os terminais
(aparelhos telefônicos comuns) e os FXO para ligar as linhas telefônicas
que possibilitará o acesso a redes PSTN.
10. 10 VoIP - Asterisk Luiz Arthur
Instalação do Asterisk
O Asterisk faz uso intensivo de CPU, tal como qualquer aplicação em
tempo real, isso se deve em grande parte, à sua necessidade de acesso
prioritário aos barramentos do processador e do sistema.
Em sistemas menores o hardware normalmente não é um problema,
entretanto em sistemas de grande capacidade, o hardware deve ser muito
bem estudado para não causar falhas de desempenho, manifestadas por
problemas na qualidade de áudio para os usuários, muitas vezes na forma
de ecos e coisas do tipo.
A seguir é mostrado uma lista com orientações básicas que devem ser
observadas na construção do PBX Asterisk quanto ao hardware:
● Sistemas com não mais do que 5 canais é recomendado no mínimo um
computador de 400Mhz x86 com 256 MB de memória RAM;
● Para sistemas com até 10 canais é recomendado no mínimo um computador de
1GHz x86 com 512 MB de memória RAM;
● Ambientes com até 15 canais, neste tipo de ambiente o mínimo recomendável é
um computador com 3GHz x86 e 1 GB de memória RAM;
● Já para ambientes grandes com mais de 15 canais é altamente recomendável o
uso de CPUs duplas e possivelmente múltiplos servidores em arquitetura
distribuída.
11. 11 VoIP - Asterisk Luiz Arthur
Quando ao uso de disco rígido o Asterisk não utiliza muito espaço em
memórias secundárias, requerendo em média 100 MB para o programa
compilado, mas a inserção de código fonte, voicemail, etc, requer mais
espaço de acordo com a quantidade de usuários.
Quanto ao uso de placas específicas, estas só são necessárias caso haja
necessidade de intercomunicação com outros tipos de redes que não
as redes IP.
O processo de instalação do software Asterisk, esta se dá em qualquer
sistema Linux, mas pode ser feita também em sistemas BSD e MAC OS X.
O Asterisk utiliza três pacotes principais: o programa principal Asterisk
(asterisk), os drivers de telefonia Zapata (zaptel) e as bibliotecas PRI
(libpri).
Se você planeja uma rede VoIP pura, o único requisito real é o pacote
asterik.
Os drivers zaptel são necessários se você estiver utilizando hardware
digital ou analógico, ou se você estiver usando o driver ztdummy como
interface de temporização.
12. 12 VoIP - Asterisk Luiz Arthur
A biblioteca libpri é tecnicamente opcional, a não ser que você esteja
utilizando interfaces ISDN PRI. Você poderá economizar uma pequena
quantidade de RAM se não a carregar, mas é recomendado que a libpri
seja instalada juntamente com o pacote zaptel para completá-la.
Outro pacote que você pode querer instalar é o asterik-sounds. Embora o
Asterisk venha com muitos sons gravados na distribuição fonte principal, o
pacote asterisk-sounds irá dar a você um pouco mais.
O código fonte do Asterisk pode ser obtido no servidor Digium FTP,
localizado em ftp://ftp.digium.com.
Entre no FTP e baixe as ultimas versões do asterisk, zaptel e libpri. Exemplo:
asterisk-1.4.9.tar.gz
libpri-1.4.1.tar.gz
zaptel-1.4.4.tar.gz
Nós iremos fazer uso do diretório /usr/src para extrair e compilar o fonte
do Asterisk.
13. 13 VoIP - Asterisk Luiz Arthur
Os comandos a seguir irão extrair os pacotes Asterisk no
diretório /usr/src:
# tar vzxf asterisk-1.4.9.tar.gz -C /usr/src/
# tar vzxf libpri-1.4.1.tar.gz -C /usr/src/
# tar vzxf zaptel-1.4.4.tar.gz -C /usr/src/
Compilação da libpri
A libpri é utilizada por vários fabricantes do hardware Multiplexação por
Divisão de Tempo (TDM), mas mesmo que você não tenha esse hardware
instalado, é seguro compilar e instalar esta biblioteca. Você deve compilar e
instalar a libpri antes do Asterisk, já que ela vai ser detectada e usada
quando o Asterisk for compilado. Segue os passos para compilar o libpri:
# cd /usr/src/libpri-1.4.1/
# make
# make install
14. 14 VoIP - Asterisk Luiz Arthur
Compilação do zaptel
A interface zaptel é um módulo de núcleo carregável que apresenta uma
camada de abstração enter os drivers de hardware e o módulo Zapata no
Asterisk. É esse conceito que permite que os drivers do dispositivo sejam
modificados sem que sejam feitas alterações à própria fonte do Asterisk.
Os drivers de dispositivo são utilizados para comunicar com o
hardware diretamente e para passar informações entre o Zaptel e o
hardware.
Várias opções podem ser passadas na compilação do zaptel, mas aqui iremos
fazer uma compilação simples, como segue:
# cd /usr/src/zaptel-1.4.4/
# ./configure
# make
# make install
15. 15 VoIP - Asterisk Luiz Arthur
Compilação do Asterisk
Assim que você tiver compilado os pacotes zaptel e libpri (se você precisar
deles) e alguns pacotes adicionais (caso você queira), pode se voltar para o
Asterisk.
Existem também no pacotes Asterisk inúmeras alterações que podem ser
feitas já na compilação, mas aqui ficaremos apenas com a instalação padrão
que se da como a seguir:
# cd /usr/src/asterisk-1.4.9/
# ./configure
# make
# make install
# make sample
O comando make sample é executado para instalar os arquivos de
configuração originais. Instalar esses arquivos (em vez de configurar cada
arquivo manualmente) permitirá a você ter seu sistema Asterik pronto e
rodando muito mais rápido. Mas tome cuidado se você estiver apenas
atualizando o seu sistema Asterisk, pois este comando pode substituir os
seus arquivos.
16. 16 VoIP - Asterisk Luiz Arthur
Se você quiser que o Asterisk inicie automaticamente com boot do
sistema, você deve criar um script no Slackware em /etc/rc.d/. Existe um
script pronto e pode ser copiado para o diretório /etc/rc.d da seguinte
forma:
# cp /usr/src/asterisk-1.4.9/contrib/init.d/rc.slackware.asterisk
/etc/rc.d/rc.asterisk
Após isto dê permissão de execução ao script com o comand chmod a
+x /etc/rc.d/rc.asterik e coloque a linha /etc/rc.d/rc.asterisk start
no arquivo /etc/rc.d/rc.local.
Para sistemas onde os scripts de inicialização ficam em /etc/rc.d/init.d
ou /etc/init.d/ o comando make config pode ser utilizado para fazer o
script de forma automática.
Carregando módulo Zaptel
O módulo zaptel não necessita de nenhuma configuração, então basta
apenas carregar o seguinte comando:
# modprobe zaptel
Lembre-se isto só vai ser necessário caso o sistema tenha hardware Zapata.
Em alguns casos também é necessário carregar o módulo ztdummy.
17. 17 VoIP - Asterisk Luiz Arthur
As bibliotecas libpri não precisam ser carregadas como os módulos. O
Asterisk olha para as libpri na hora de compilar e se configura para utilizar
as bibliotecas se elas forem encontradas.
Carregando o Asterisk
O Asterisk pode ser carregado de várias formas. A mais fácil delas é iniciar o
Asterik executando o arquivo diretamente da interface de linha de comando
do Linux.
Se você criou os script você pode iniciar no Slackware o Asterik com o
comando:
# /etc/rc.d/rc.asterisk start
Entretanto, a maneira preferida de iniciar o Asterisk é por meio do script:
# safe_asterisk
Uma configuração básica para testar o Asterisk
A configuração do Asterisk é feita através de arquivos de configuração
localizados no diretório /etc/asterisk. O formato dos arquivos é ASCII
dividido em seções com o nome da seção entre colchetes ([]). Os caracteres
de comentário são: o ponto-e-virgula e sustenido.
18. 18 VoIP - Asterisk Luiz Arthur
Iremos primeiramente criar um ramal, então é necessário decidir qual tipo de
protocolo que será utilizado: H.323, SIP IAX, etc. Bem iremos tomar como protocolos
,
de configuração o SIP e o IAX. Pois o SIP é bem simples e exige poucos recursos
sendo então altamente recomendado em redes locais. Já o IAX apresenta grandes
vantagens quando o ambiente VoIP é implementado dentro ambientes que utilizam
NAT, ou seja, ele é altamente recomendável quando é necessário passar por várias
redes, mas o IAX foi criado por uma empresa e não por uma entidade o que pode geral
problemas futuros, além de não apresentar tantas funcionalidades quanto o H.323 e o
SIP.
Vamos então neste primeiro exemplo criar apenas ramais SIP, e depois criar alguns
ramais AIX. Bem para criar ramais SIP devemos editar o
arquivo /etc/asterisk/sip.conf, vá até a última linha e inclua a seguinte
configuração:
[200]
callerid=usuario1
secret=123mudar
host=dynamic
type=friend
context=interno
[201]
callerid=usuario2
secret=123mudar
host=dynamic
type=friend
context=interno
19. 19 VoIP - Asterisk Luiz Arthur
Bem as configurações que fizemos no arquivo sip.conf se iniciam com o
número do ramal entre colchetes ([200]) neste caso primeiro ramal é o
duzentos e o segundo é o duzentos e um.
A opção callrid faz referencia ao nome do usuário, no ramal 200 o
usuário chama-se usuario1 e para o ramal 201 o nome do usuário é
usuario2.
A opção secret diz respeito a senha para os respectivos usuários.
O parâmetro host referencia onde o IP de determinado ramal se encontra, a
opção dynamic diz que este ramal pode assumir qualquer IP de forma
dinâmica.
Já a opção type diz que tipo de ligações o ramal esta autorizado a fazer,
sendo que a friend permite ao ramal efetuar e receber ligações.
Por fim, a opção context identifica a qual classe de ramal este ramal
pertence, em nosso caso usamos o contexto “interno” que será criado
posteriormente no plano de discagem.
20. 20 VoIP - Asterisk Luiz Arthur
Então agora iremos criar um plano de discagem para poder chamar os
ramais, isto é necessário para podermos efetuar ligações através do
Asterisk.
Para criarmos o plano de discagem que chamamos anteriormente de
“interno”, vamos editar o arquivo /etc/asterisk/extensions.conf, indo
até a última linha e adicionando o seguinte plano:
[interno]
exten => _2XX,1,Dial(SIP/${EXTEN})
exten => _2XX,2,Hangup()
Assim como no sip.conf entre parenteses criamos um contexto chamado
interno. Na linha exten => _2XX,1,Dial(SIP/${EXTEN}), estamos passando
ao Asterisk para aceitar chamadas iniciadas pelo dígito 2 e que contenham
mais dois dígitos (200, 201, 202, etc), e executar através da função “Dial”
uma chamada para o protocolo SIP com o ramal digitado no telefone VoIP
que vem contido na variável “${EXTEN}”. Após o termino da chamada, o
Asterisk termina a ligação, e isto é feito através da linha exten => _2XX,
2,Hangup().
Realizados estes passos basta reiniciar o servidor Asterisk para que as novas
configurações passem a valer. Isto pode ser feito através do comando:
# asterisk -rx reload
21. 21 VoIP - Asterisk Luiz Arthur
Configurando um telefone VoIP
Vamos agora configurar um ponto final que se comunique com o Asterisk.
Bem como é impossível mostrar como configurar todos os tipos de pontos
finais, nós utilizaremos um que sirva de exemplo sobre qual é a configuração
básica de um ponto final.
Nós utilizaremos o cliente da X-ten, o X-lite, que pode ser encontrado em
www.xten.com e tem versões para Linux e Windows.
A instalação no Windows é bem fácil e não será abordada aqui, já a
instalação no Linux segue basicamente os seguintes passos:
# tar vzxf X-Lite_Install.tar.gz -C /tmp
# mv /tmp/xten-xlite/xtensoftphone /bin/
Para usar o software VoIP tenha certeza que a placa de som esteja ativa e
configurada corretamente, no caso do Linux para configurar a placa de som
você pode usar os comandos alsaconf e alsamixer.
A configuração do cliente é geralmente direta. As partes mais importantes
são o nome do usuário e senha para registro, além do endereço do servidor
Asterisk com o qual você com o qual você quer se registrar.
22. 22 VoIP - Asterisk Luiz Arthur
Para iniciar o XLite execute com o usuário da interface gráfica o comando:
#xtensoftphone
Para inciar a configuração clique em 1 e depois em System Settings:
1
23. 23 VoIP - Asterisk Luiz Arthur
Clique em Netwok e tão logo seja apresentada a próxima tela clique em 2 para
configurar o servidor Asterisk:
1
2
24. 24 VoIP - Asterisk Luiz Arthur
A figura a seguir mostra a tela de configuração do X-Lite:
O nome no mostrador (Display Name) é a seqüência que será utilizada como
Caller ID.
O nome do usuário (Username) é a autorização do usuário são utilizados para
autenticação, juntamente com a senha.
O domínio/reinado (Domain/Realm) deve ser o endereço IP de FQDN do seu
servidor Asterisk.
25. 25 VoIP - Asterisk Luiz Arthur
O proxy do SIP é o mesmo que aquele inserido para o domínio/reinado, mas
com o acréscimo de :5060 (isso especifica o número de portas a se usar para
sinalização SIP).
Depois de inserir toda essa informação, verifique se Enabled está definido
como Yes, e então feche o menu de configuração. A X-Lite irá então se
registrar no Asterisk. Se a X-Lite não aparecer para registrar, simplesmente
reinicie o cliente. Já que a X-Lite é minimizada para a bandeja de tarefas
quando você fecha a aplicação usando o botão X, você irá precisar sair do
programa clicando diretamente no ícone na bandeja e então clicando em
“Exit” no menu pop-up de reiniciar.
Uma configuração um pouco mais elaborada
Nesta configuração iremos adicionar quatro canais: um canal Escritório de
Trocas Externas (FXO), um canal Estação de Trocas Externas (FXS), um
canal Protocolo de Início de Sessão (SIP) e um canal protocolo de Troca
Inter-Asterisk (IAX).
Nós começamos explorando as configurações básicas de interfaces
analógicas tais como as portas FXS e FXO com o uso de um kit Dev-Lite da
Digium. Iremos então configurar duas interfaces VoIP: um canal SIP local
conectado a um telefone por software e uma conexão para Free Wold Dialup
via IAX.
26. 26 VoIP - Asterisk Luiz Arthur
O Asterisk não precisa de nenhum hardware especializado – nem
mesmo cartão de som. Cartões de canais quem conectam o Asterisk a
telefones analógicos ou linhas telefônicas estão disponíveis, mas não são
essenciais. Por outro lado, se você não se conectar diretamente a uma linha
de telefone analógico do seu escritório central, você poderá rotear suas
chamadas pela Internet para um provedor de serviços de telefonia.
Bom iremos supor que temos uma interface com dois canais FXO e FXS, o
que permite que você se conecte a uma linha de telefone analógico (FXO) e a
um telefone analógico (FXS).
Canais FXO e FXS
A diferença entre um canal FXO e um canal FXS é simplesmente qual ponta
da conexão fornece o tom de discagem. Uma porta FXO não gera um tom
de discagem; ela aceita um. Uma porta FXS fornece tanto o tom de
discagem como a tensão de campainha para alertar o usuário da estão
sobre a chegada de uma ligação.
Se o servidor Asterisk tem uma porta compatível com FXO, você poderá
conectar uma linha telefônica de sua companhia de telefonia a essa porta. O
Asterisk poderá então, utilizar a linha para fazer e receber chamadas
telefônicas.
27. 27 VoIP - Asterisk Luiz Arthur
As portas são definidas na configuração pelas sinalizações que
utilizam em oposição aos tipos físicos de portas que elas são.
Por exemplo, uma porta FXO física será definida na configuração com
sinalização FXS, e uma porta FXS será definida com sinalização FXO.
Isso pode se tornar confuso até que se entenda as razões para isso. Os
cartões FX_ são nomeados não de acordo com o que são, mas em vez disso
de acordo com o que está conectado a eles.
Como exemplo, um cartão FXO se conecta a um escritório central, o que
significa que precisará se comportar como uma estação e utilizar sinalização
FXS. O modem em seu computador é um exemplo clássico de um dispositivo
FXO.
Atenção!!! conectar uma porta FXS à PSTN pode destruir o módulo e o
cartão.
Configuração de um canal FXO
Vamos começar configurando um canal FXO. Primeiro configuramos o
hardware Zaptel, depois o hardware Zapata. Nós vamos configurar um
dialplan básico e iremos mostrar a como testar o canal.
28. 28 VoIP - Asterisk Luiz Arthur
Configurando o hardware Zaptel
O arquivo /etc/zaptel.conf é usado para configurar seu hardware. A
seguinte configuração mínima define uma porta FXO com sinalização FXS:
fxks=2
loadzone=US
defaultzone=US
Na primeira linha (fxks=2), além de indicar se estamos utilizando
sinalização FXO ou FXS, nós especificamos um dos seguintes protocolos para
o canal 2:
● Loop start (ls);
● Ground start (gs);
● Kewlstart (ks).
A diferença entre loop start e ground start tem a ver com a maneira pela
qual o equipamento requer um tom de discagem:
● Um circuito ground start sinaliza para o outro terminal que ele quer um
tom de discagem pelo aterramento momentâneo de um dos fios;
● Um circuito loop start utiliza um curto-circuito para requer um tom de
discagem. Todas as linhas domésticas na América do Norte utilizam
sinalização loop start.
29. 29 VoIP - Asterisk Luiz Arthur
● Kewlstart é, de fato, o mesmo que loop start, exceto que tem maior
inteligência e é, por isso, mais capaz de detectar desconexões de outro
terminal. Kewlstart é o protocolo de sinalização preferido para circuitos
analógicos em Asterisk.
O conjunto de indicações é configurado por loadzone para uso pelo canal. O
arquivo zonedata.c contém informações sobre todos os vários sons que
um sistema telefônico emite cada país em particular, ciclos de
campainha, tom de ocupado e assim por diante. Quando aplica-se um tone
zone carregado a um canal Zap, esse canal vai copiar as indicações para o
país especificado.
O defaultzone é utilizado se nenhuma zona for especificada por um canal.
Depois de configurar o zaptel.conf, pode-se carregar os drivers para o
cartão. Por exemplo, para carregar o driver wctdm, você deve executar:
# modprobe wctdm
Se não for apresentado nenhuma saída o driver foi carregado com sucesso. É
possível verificar se o hardware e as portas foram carregados e configurados
corretamente usando o programa ztcfg:
# ztcfg -vv
30. 30 VoIP - Asterisk Luiz Arthur
O programa zttool é uma ferramenta de diagnóstico utilizada para
determinar o estado do seu hardware. Um estado “OK” significa que o
carregamento do hardware foi bem sucedido.
Configurando o hardware Zapata
O Asterisk utiliza o arquivo /etc/asterisk/zapata.conf para determinar os
ajustes e configuração para o hardware de telefonia instalado no sistema.
Tal arquivo também controla as várias funções e funcionalidades associadas
com os canais de hardware, tal como o Caller ID, espera de chamada,
eliminação de eco e uma variedade de outras opções.
No passo anterior foi ativado apenas o hardware, mas é neste passo que
apresenta-se o hardware ao Asterisk controlando as funções associadas a
este hardware por meio do arquivo zapata.conf:
[trunkgroups]
; define grupos de troncos
[channels]
;canais de hardware
;defaults
usecallerid=yes
31. 31 VoIP - Asterisk Luiz Arthur
hidecallerid=no
callwaiting=no
threewaycalling=yes
transfer=yes
echocancel=yes
echotraining=yes
;define canais
context=incoming ; Chamadas que chegarem serão passadas para
; extensions.conf na seção chamada incoming
signalling=fxs_ks ; Usa sinalização FXS para um canal FXO
channel=>2 ; A PSTN esta ligada na porta 2
A seção [trunkgroups] é para conexões NFAS e GR-303 e não será discutida
aqui.
A seção [channels] determina o método de sinalização para os canais
de hardware e suas opções. Assim que uma opção for definida, ela é herdada
para o restante do arquivo. Um canal é definido usando-se a definição
channel =>.
Neste exemplo nós habilitamos Caller ID com usecallerid=yes e
especificamos que isso não será escondido para as chamadas para fora com
hidecallerid=no.
32. 32 VoIP - Asterisk Luiz Arthur
A habilitação de chamadas em três vias com threewaycalling=yes permite
que uma chamada ativa seja colocada em espera, será possível inclusive
colocar uma terceira parte na conversa e isto é permitido via transfer=yes,
mas isto requer que chamadas de três vias esteja habilitado.
O eliminador de eco Asterisk é utilizado para remover o eco que pode ser
criado em linhas analógicas com a opção echocancel=yes. O eliminador de
eco do Asterisk requer algum tempo para aprender o que é eco na linha, mas
é possível acelerar isso habilitando o treinamento de eco com a opção
echotraining=yes. Isso vai dizer ao Asterik para enviar um tom de linha no
início de uma conversa para medir o eco e então aprender mais
rapidamente.
Quando uma chamada chega por meio de uma interface FXO, alguma ação
deve ser tomada, tal ação é configurada dentro de um bloco de instruções,
chamada contexto, neste caso com a opção context=incoming, ou seja, as
instruções estarão dentro do arquivo /etc/asterisk/extensions.conf em
um contexto chamado incoming.
Finalmente, já que um canal FXO utiliza sinalização FXS, nós o definimos
como signalling=fxs_fs.
33. 33 VoIP - Asterisk Luiz Arthur
Configuração do Dialplan
O seguinte dialpan mínimo faz uso da aplicação Echo() para verificar se as
configurações bidirecionais para o canal estão funcionando, para tanto
editaremos o arquivo /etc/asterisk/extensions.conf, incluindo as
seguintes linhas:
[incoming]
;chamadas entrando pela FXO são direcionada para este contexto
;pelo zapata.conf
exten => s,1,Answer()
exten => s,2,Echo()
Depois de configurar este arquivo é possível testar a linha do FXO, para
tanto é só discar para o número da linha e a linha Echo() irá permitir que
escute-se no telefone sua própria voz, caso isto ocorra a configuração esta
Okay.
34. 34 VoIP - Asterisk Luiz Arthur
Configuração de um canal FXS
A configuração de um canal FXS é similar a FXO
Primeiro configura-se o hardware com o arquivo /etc/zaptel.conf:
fxoks=1
fxsks=2
loadzone=us
defaultzone=us
Bem nesta configuração apenas adicionamos a linha fxoks=1, de forma que
estamos sinalizando FXO para nosso FXS no canal 1 com o protocolo de
sinalização kewlstart.
Para testar podemos fazer uso do comando ztcfg -vv.
35. 35 VoIP - Asterisk Luiz Arthur
Configuração do hardware Zapata
Iremos apenas acrescentar algumas alterações ao
arquivo /etc/asterisk/zapata.conf alterado anteriormente:
[trunkgroups]
; define grupos de troncos
[channels]
;canais de hardware
;defaults
usecallerid=yes
hidecallerid=no
callwaiting=no
threewaycalling=yes
transfer=yes
echocancel=yes
echotraining=yes
immediate=no
;define canais
context=internal ;Utiliza o contexto [internal] em extensions.conf
signalling=fxo_ks ;Usa a sinalização FXO para um canal FXS
channel => 1 ;Telefone conectado à porta 1
context=incoming ; Chamadas que chegarem serão passadas para extensions.conf
; na seção chamada [incoming]
signalling=fxs_ks; Usa sinalização FXS para um canal FXO
channel=>2 ;
A PSTN esta ligada na porta 2
36. 36 VoIP - Asterisk Luiz Arthur
A seguinte configuração é idêntica à do FXO, com acréscimo de uma
seção para a porta FXS e da linha immediate=no, esta opção permite que o
quando o telefone for tirado do gancho o Asterisk produza um tom de
discagem e aguarde pela entrada do usuário. Uma ação alternativa é que o
Asterisk automaticamente execute um conjunto de instruções
configuradas no dialplan, isto é possível configurando immediate=yes.
As instruções a serem executadas para FXS deverão estar no contexto
[internal] em /etc/asterisk/extensions.conf. Desta forma se
acrescenta ao final do arquivo as seguintes linhas:
[internal]
exten => 611,1,Answer()
exten => 611,2,Echo()
Neste contexto criado chamado internal, nós dizemos ao Asterisk onde
procurar pelas instruções quando alguém pressionar dígitos em seu
telefone.
Nesse caso, o único número de ramal que irá funcionar é o 611. Ao discar
611 no telefone, o Asterisk irá executar a aplicação Echo(), de forma que
qualquer coisa que alguém disser no telefone será reproduzida para ela
mesma (um eco), dessa forma verificamos a voz bidirecional.
37. 37 VoIP - Asterisk Luiz Arthur
Configuração do SIP
O protocolo de incialização de Sessão (SIP), cuida da configuração e
decomposição das chamadas ao longo das renegociações durante a
chamada. O SIP utiliza o protocolo de Transporte em Tempo Real (RTP) para
transferir a mídia entre os pontos finais.
O SIP é um protocolo de sinalização da camada de aplicação que utilizam a
porta 5060 normalmente UDP O RTP utiliza número de portas altas no
.
Asterisk (originalmente, de 10.000 a 20.000).
Para configurar o SIP iremos configurar o aquivo /etc/asterisk/sip.conf:
[general]
context=default
srvlookup=yes
[john]
type=friend
secret=welcome
qualify=yes ; Qualificar um par a não menos que 2000ms de distância
nat=no ; Esse telefone não está na NAT
host=dynamic ; Esse dispositivo se registra com IP dinâmico
canreinvite=no ; O Asterisk originalmente tenta redirecionar
context=internal ; O contexto [internal] controla o que podemos fazer
38. 38 VoIP - Asterisk Luiz Arthur
O arquivo sip.conf começa com uma seção [general], que contém os
ajustes do canal e as opções originais para todos os usuários.
A opção srvlookup=yes habilita os registros de sistemas de nome DNS,
permitindo fazer ligações SIP por nome de domínio, por padrão esta opção
vem desativada, mas é altamente recomendável ativa-lá.
Bem iniciamos com uma ramal chamado john, que é do tipo friend (pode
realizar e receber ligações), e acrescentamos a senha “welcome” para ele.
A opção qualify=yes monitora a latência entre o servidor Asterik e o
telefone , isto pode ser usado inclusive para monitorar outros servidores
Asterisk, originalmente o Asterisk irá determinar o terminal encontrável a
cada 2 segundos (2.000ms), mas podemos mudar isto alterando o yes pelo
número de milisegundos.
Se um ramal esta por tráz de um NAT, tal como um roteador ou um Firewall,
configure nat=yes para forçar o Asterisk a ignorar a informação de
contato para o ramal e utilizar o endereço de onde os pacotes estão sendo
recebidos.
Definir host=dynamic vai fazer o ramal se registrar para que o Asterisk saiba
onde ele está. Substitua dynamic pelo endereço IP ou nome de domínio
para limitar um terminal. Se definir host=static, o terminal não terá que se
registrar.
39. 39 VoIP - Asterisk Luiz Arthur
Também foi definido canreinvite=no desta forma o Asterisk fica apto a
tocar musica ou passar um anúncio para o cliente em espera, já que os
convites são usados para estabelecer ligações, e re-convites para
redireciona-las.
Por fim, context=internal especifica as localização das instruções usadas
para controlar o que o telefone tem permissão de fazer e o que fazer com
ligações que chagam para este ramal.
Configuração do Dialplan SIP
Muitos telefones SIP, tanto por software como por hardware, são telefones
de múltiplas linhas. Assim é possível testar o telefone ligando para você
mesmo. Para isto, disca-se o ramal 100. Se o telefone não suportar ligar para
ele mesmo ligue para o ramal 611 que tem a aplicação Echo()
Ao arquivo de dialplan deve ser acrescentado as seguintes linhas:
[internal]
exten => 100,1,Dial(SIP/john)
exten => 611,1,Echo()
40. 40 VoIP - Asterisk Luiz Arthur
Configuração de conexões IAX de entrada
O protocolo de Troca Inter-Asterisk (IAX) é normalmente usado para
comunicações entre servidores, mas existem atualmente telefones que
também utilizam o IAX como protocolo de comunicação. A diferença
primária entre os protocolos IAX e SIP é a maneira pela qual a mídia
(sua voz) é passada entre terminais.
Com, o SIP ou com H.323 o tráfego RTP (mídia) é passado utilizando portas
diferentes daquelas utilizadas pelos métodos de sinalização. Já o protocolo
IAX difere em que tanto na sinalização como o tráfego de, mídia são
passados por meio de uma única porta (4569).
Uma vantagem desse sistema é que o protocolo IAX tende a se ligar melhor
a topologias envolvendo NAT. Um usuário IAX normalmente é utilizado para
autenticar e manipular ligações vindo para o sistema PBX. Para ligações indo
para fora do PBX, o Asterisk usa uma entrada par do IAX no arquivo
iax.conf para autenticar com a ponta remota.
Nesta implementação com o IAX conectaremos o nosso sistema com o Free
Wold Dialup (FWD) via IAX. O FWD é um provedor de serviço VoIP gratuito
que permite que se conecte a qualquer outro membro da rede, independente
da localização física, gratuitamente. O FWD também é conectado a mais de
100 outras redes, às quais pode-se conectar gratuitamente.
41. 41 VoIP - Asterisk Luiz Arthur
Mas para tanto deve-se registrar no www.fwdnet.net e habilitar sua conta
para dar suporta ai IAX.
Então configuraremos o /etc/asterisk/iax.conf
e /etc/asterisk/extensions.conf para permitir que se receba chamadas
de outro usuário FWD e fazer chamadas para usuários FWD.
Configuração do iax.conf
Nosso arquivo iax.conf deve ficar da seguinte forma:
[general]
bandwidth=low
disallow=lpc10
jitterbuffer=no
forcejitterbuffer=no
tos=lowdelay
autokill=yes
registrer => fwd_number:password@iax2.fwdnet.net
[iaxfwd]
type=user
context=incoming
auth=rsa
inkeys=freewolddialup
42. 42 VoIP - Asterisk Luiz Arthur
Dentro da seção [general], foi adicionado uma declaração de registro. O
propósito da declaração de registro é dizer ao servidor FWD IAX o cliente
esta na Internet, ou seja, registar-se no FWD é passar o seu IP.
Na seção [iaxfwd], foi definido o usuário para ligações que chegam com o
type=user, depois foi definido onde a ligação será manipulada dentro do
dialplan, com context=incoming. A opção auth=rsa diz que a autenticação
será feita via chave RSA. A chave pública é definida com
inkeys=freewolddialup que vem como padrão com o Asterisk.
Configuração do Dialplan
O manuseio de uma ligação que chega ao arquivo extensions.conf é
simples. Primeiro crie um contexto chamado incoming. O contexto é seguido
por uma definição de Dial() que irá discar o ramal SIP criado ,
anteriormente. Substitua o número 10001 por aquele da dua conta FWD:
[incoming]
exten => 10001,1,Dial(SIP/john)
43. 43 VoIP - Asterisk Luiz Arthur
Para fazer as ligações externas configure o arquivo iax.conf da seguinte
forma:
[iaxfwd]
type=peer
host=iax2.fwdnet.net
username=<número da conta FWD>
secret=<senha-conta-fwd>
qualify=yes
disallow=all
allow=ulaw
allow=gsm
allow=ilbc
allow=g726
O tipo agora indica que a conexão é ponto-a-ponto, e é utilizado a opção host
para informar qual é o servidor.
O disallow é usado para rearmar quaisquer ajustes de codec definidos
previamente, então são usados as opções allow para indicar os codecs de
preferencia de cima para baixo.
Para saber se o registro foi bem sucedido é possível usar o comando iax2
show registry no CLI Asterisk.
44. 44 VoIP - Asterisk Luiz Arthur
Já a configuração do dialplan no arquivo extensions.conf fica da seguinte
forma:
[internal]
exten => 613,Dial(IAX2/iaxfwd/613)
Aqui configuramos para que possamos fazer uma ligação para aplicação
FWD, é possível usar o mesmo teste do Eco para testar se tudo esta Okay.