SlideShare ist ein Scribd-Unternehmen logo
1 von 5
Downloaden Sie, um offline zu lesen
Asterisk: Uma Análise Arquitetural
Marco A. P. Santos e Viviane de A. S. Ribeiro
Resumo—Este artigo apresenta uma análise arquitetural do
software Asterisk, uma solução open source utilizada na telefonia
que permite tratar as chamadas telefônicas de forma persona-
lizada. Possui características semelhantes a um PABX, como
correio de voz, respostas interativas, distribuição automática
de chamadas e conferência em chamadas. Sua arquitetura em
forma modular é composta por canais, CODECs, aplicações e
protocolos. O cérebro do Asterisk é o plano de discagem, é através
dele que são configuradas todas as ações tomadas quando uma
chamada é recebida. O Asterisk se consolidou no mercado como
um dos maiores softwares de companhia telefônica, devido ao fato
da grande flexibilidade oferecida na criação de novos serviços de
acordo com a necessidade do cliente.
I. INTRODUÇÃO
Este artigo descreve uma análise arquitetural do Asterisk
[1], considerado uma central telefônica híbrida, por imple-
mentar tanto funções de uma central telefônica quanto de
protocolos VoIP (Voice over Internet Protocol). Em suma, o
Asterisk é um framework que implementa as funcionalidades
de uma PABX (Private Automatic Branch Exchange), capaz
de fazer, realizar e tratar chamadas telefônicas de forma
personalizada.
O artigo está estruturado da seguinte forma: na primeira
seção é abordado o Asterisk, suas funcionalidades, vantagens,
limitações, requisitos funcionais e não funcionais que guiaram
as principais decisões arquiteturais do projeto. Na segunda se-
ção será apresentada a arquitetura geral do software, onde serão
mostrados os modelos das duas visões mais características do
projeto: visão estrutural e visão de implantação. A terceira
seção trata do plano de discagem (Dialplan) considerado o
cérebro do Asterisk.
II. ASTERISK
Asterisk é um framework de código aberto que implementa
as características de uma central telefônica e disponibiliza uma
imensa quantidade de recursos e funcionalidades, conforme as
necessidades da empresa. Seu nome vem do símbolo, *, que
nos sistemas Unix e DOS representa um “coringa” significando
qualquer caractere, qualquer arquivo.
Criado por Mark Spencer da empresa Digium, ao longo
dos anos o Asterisk recebe novas funções e características
desenvolvidas por outros programadores contribuindo assim
para sua evolução contínua. Foi desenvolvido para o Linux
e atualmente o Asterisk pode ser executado também no
FreeBSD, OpenBSD, Mac OS X, Sun Solaris e Microsoft
Windows.
O software básico do Asterisk inclui muitas características
encontradas em sistemas telefônicos caros e proprietários. Ele
aceita conexão em tempo real entre as redes PSTN (Public
Service Telephony Network) e redes VoIP, permitindo a cons-
trução eficaz de novos sistemas de telefonia ou a mudança dos
sistemas de telefonia convencional para as novas tecnologia de
VoIP.
Dentre as várias funcionalidades existentes, vale ressaltar
algumas [3]: Voice Mail, URA (Unidade de Resposta Auto-
mática), Distribuição Automática de Chamadas, Conferências,
Ramais Virtuais, Música em Espera, Estacionamento de Cha-
madas, Gravação de Chamadas e Programação de Interativi-
dade.
As principais vantagens em optar pelo uso do Asterisk são
[2]: Redução do custo de ligação (DDD e DDI); Funcionalida-
des flexíveis; Plano de numeração unificado para toda empresa,
Aumento da produtividade, Redução do custo de operação de
rede (convergência Telecom & TI), Integração da empresa,
Escalabilidade, Expansão das aplicações de voz e Baixo custo
de implementação.
Segundo [4], uma das limitações do Asterisk é o uso da
CPU (Central Processing Unit – Unidade Central de Proces-
samento) do servidor para processar sinais de voz, ao invés de
ter um DSP (Processador de Sinais Digitais) dedicado a cada
canal. Isso permitiu que o custo fosse reduzido para as placas
E1/T1, porém o sistema fica muito dependente da CPU.
A. Requisitos Funcionais e Não-Funcionais
O Asterisk possui vários requisitos funcionais semelhantes
aos encontradas nas PABX convencionais [7]:
• Correio de voz: quando um usuário não atende uma
ligação, existe a opção para o usuário que fez a
chamada deixar uma mensagem;
• Distribuidor Automático de Chamadas (DAC): caso
não haja nenhum operador disponível o usuário é
encaminhado para um sistema de filas e permanece
em espera;
• URA: atendimento eletrônico das ligações.
• Sala de Conferência: possibilita vários usuários con-
versar simultaneamente;
• Discador automático: faz chamadas automáticas a par-
tir de uma base de dados de telefones;
• Servidor de música de espera: arquivos podem ser
reproduzidos, de forma síncrona ou assíncrona, isso
ocorre geralmente quando chamada esta na fila de
espera.
• Registro detalhado das ligações: relatórios sobre as
ligações com duração, origem, destino e custo das
chamadas.
Dentre os requisitos Não-Funcionais do Asterisk, podemos
citar:
• Flexibilidade: criar novos recursos e novos serviços
de acordo com a necessidade da empresa, além disso,
é possível integrar com outros sistemas existentes:
Skype, Sistemas de Monitoramento e Controle de
Callcenters, etc.
• Escalabilidade: para aumentar sua capacidade
basta adicionar outro servidor e configurá-lo para
comunicar-se com o já existente.
• Redução de Custos das Ligações: é possível manter
ramais local (matriz) e remotamente (filiais), para isso
basta que todas as filiais possuam um computador com
o Asterisk instalado e um link de internet para cada
Asterisk, com isso toda a comunicação será realizada
através da internet sem a necessidade de operadoras
de telefonia [2].
• Interoperabilidade: o Asterisk suporta diferentes pro-
tocolos de VoIP existentes hoje na telefonia, tornando
a ligação e migração com sistemas híbridos altamente
facilitada.
III. ARQUITETURA DO ASTERISK
O Asterisk foi criado para ter o máximo de flexibilidade.
Ele é construído em módulos, permitindo ao administrador
escolher a configuração mais adequada à atender suas necessi-
dades. Esta configuração pode ser simples e utilizar apenas os
recursos básicos do Asterisk, como também pode ser complexa
e fazer uso de recursos avançados de conversação e plano de
discagem (Dialplan).
Um módulo no Asterisk é um componente com uma
funcionalidade específica, tal como um controlador de canal
(chan_sip.so) ou um recurso que aceita conexões externas
(func_odbc.so). O núcleo de um sistema Asterisk está na
configuração de seu plano de discagem, que define como
ele irá gerenciar todas as suas ligações. A configuração de
um plano de discagem, deve ser feita diretamente no arquivo
(extensions.conf), devendo se ter muito cuidado ao modificá-
lo.
A figura 1 mostra as APIs (Application Programming
Interface) específicas que foram definidas em torno de um
núcleo PABX, bem como seus principais módulos. Este nú-
cleo gerencia todas as conexões do PABX, independente de
protocolos, CODECs (codificador-decodificador) e hardwares
utilizados.
As APIS estão divididas em quatro grupos [4]:
• APIs de canais – Controla o tipo de conexão que está
sendo usada, seja ela VoIP, ISDN(Integrated Services
Digital Network) ou outra tecnologia;
• APIs de Aplicações – Permitem carregar vários mó-
dulos desempenhando funções específicas que podem
ser usados pelo sistema PABX;
• APIs de Traduções de CODECs – Carrega os módulos
para suportar os diversos formatos de compressão de
áudio, por exemplo: GSM (Groupe Special Mobile)
utilizado na comunicação de telefonia móvel, MP3
(MPEG 1 Layer-3) e G.711(A-Law padrão utilizado
no resto do mundo) & U-Law(padrão americano) que
é um codec de alta qualidade e alta compactação.
• APIs de Formato de Arquivos Asterisk – Gerencia
leitura e escrita dos diversos formatos de arquivos para
armazenamento, por exemplo: GSM e MP3.
Os principais módulos (componentes) do Asterisk são [4]:
• Núcleo de Comutação PABX – é a essência do Aste-
risk, pois é responsável por todas as conexões e tarefas
automáticas;
• Lançador de Aplicações – Carrega aplicações que
prestarão serviços para usuários, como correios de
voz, conferência e listagem de diretórios;
• CODEC Translator – Módulo responsável por codi-
ficar e decodificar os vários formatos de compressão
de áudio usados na telefonia;
• Agendamento e Gerenciador E/S – Responsável pelo
agendamento de tarefas de baixo nível do programa e
gerenciamento do sistema para otimização de desem-
penho.
Figura 1. Visão Estrutural Interna do Asterisk
A. Visão Estrutural
Os componentes do Asterisk podem ser divididos em
interfaces de hardware e software.
[6] As interfaces de hardware que podem ser utilizadas
são:
• Interfaces Analógicas: linha de telefone e telefone
analógico;
• Circuitos Digitais: T1 - usado nos Estados Unidos,
Canadá e Japão e, E1 - usado na Europa e no Brasil;
• Protocolos VoIP: SIP, H.323, etc.
[6] As interfaces de software são:
• Interface Pseudo TDM Zaptel: permite a integração
com o sistema digital e analógico e a realização de
vídeo conferência.
• Interface Não Zaptel: permite a integração com o
sistema digital e analógico, porém, não permite a
realização de vídeo conferência.
• Protocolos de pacotes de voz: protocolos para comu-
nicação VoIP.
Os componentes e conectores utilizados em uma configuração
básica de um PABX são mostrados na figura 2.
Figura 2. Visão Estrutural
A interface FXO/conector (Foreign eXchange Office) per-
mite a conexão a uma linha de telefone analógico e aceita um
tom de discagem. Conectam o PABX a outro comutador.
A interface FXS/conector (Foreign eXchange Station) for-
nece a linha analógica, em outras palavras, fornece o tom de
discagem além da sinalização indicando a chegada de uma
ligação.
A Internet Conecction/conector roteia as chamadas para
um provedor de serviços de telefonia.
O SIP (Session Initiation Protocol) Phone é um protocolo
padrão da VoIP baseado em texto, que utiliza o modelo
"requisição-resposta"e é utilizado para iniciar, modificar ou
terminar sessões de chamadas entre usuários. O SIP leva os
controles da aplicação para o terminal, eliminando a necessi-
dade de uma central de comutação, ele é usuário e servidor de
rede ao mesmo tempo.
B. Visão de Implantação
Nesta visão serão apresentados os componentes e conecto-
res da visão estrutural, focando na estrutura física sobre o qual
o software foi implantado e implementado. Esta visão ajuda
a explorar a configuração proposta para o sistema, mostrando
como alguns componentes foram distribuídos [8].
Os itens de hardware necessários para implantação do
Asterisk são: HD (hard disk), por não ser muito utilizado ele
requer em média 100Mb; sistemas operacionáis compatíveis
com a instalação, podem ser FreeBSD, OpenBSD, Mac OS X,
Sun Solaris e Microsoft Windows; memória e CPU. O Asterisk
faz uso intensivo de CPU e memória por sua necessidade de
acesso prioritário aos barramentos do processador e do sistema
[5]:
• Até 5 canais é recomendado no mínimo um computa-
dor com 400Mhz x86 e 256 MB de memória RAM;
• Para sistemas com até 10 canais é recomendado no
mínimo um computador com 1 GHz x86 e 512 MB
de RAM;
• Para sistemas com até 15 canais é recomendado no
mínimo um computador com 3 GHz x86 e 1 GB de
RAM;
• Para ambientes grandes com mais de 15 canais o
hardware deve ser muito bem projetado (a depender
com CPUs duplas e possivelmente múltiplos servido-
res em arquitetura distribuída) para não haver falhas
na comunicação.
Os itens de software necessários para instalação do Asterisk
são os pacotes. O principal que é o asterisk; os drivers da
telefonia zaptel - caso esteja utilizando hardware digital ou
analógico, ou o driver ztdummy como interface de temporiza-
ção; a biblioteca libpri - para o uso de interfaces ISDN PRI
(carrega voz e serviços de redes digitais [4]) ou o pacote zaptel.
A figura 3 mostra a visão de implantação do Asterisk. O
node do Asterisk representa sua estrutura interna com seus
componentes e conectores. Já o node de Device encontramos
os diversos dispositivos que se conectam com o Asterisk atra-
vés dos conectores (FXS, Adaptador de telefonia Analógica,
Ethernet e FXO).
Através desta visão de implantação percebemos que a API
de Canais do Asterisk é a interface núcleo da arquitetura do
Asterisk, pois é a partir dela que as chamadas são recebidas
ou enviadas, já que toda chamada é originada ou finalizada de
um canal.
IV. PLANO DE DISCAGEM DO ASTERISK
O coração do Asterisk é o plano de discagem, configurado
através do arquivo extension.conf onde os objetos são decla-
rados e configurados com as ações que serão tomadas quando
uma ligação for recebida. O plano de discagem é dividido em
quatro partes: contextos, extensões, prioridades e aplicações
[7].
A. Contextos
O plano de discagem é divido em seções chamadas de
contextos. Os contextos definem o escopo e permitem separar
diferentes partes do plano de discagem. Eles são diretamente
ligados aos canais e cada canal existe dentro de um contexto.
Quando uma ligação chega no Asterisk por um canal ela é
processada dentro de um contexto.
As extensões definidas dentro de um contexto são iden-
tificadas colocando o nome do contexto entre colchetes ([]),
por exemplo: [entradas]. Todas as instruções colocadas depois
da definição do contexto farão parte deste contexto até o
próximo contexto ser declarado. Existem dois tipos de contexto
principais: [globals] e [general].
No contexto [globals], definimos as variáveis globais e seus
valores iniciais, que serão utilizados por outros contextos, já
no [general] podemos ter informações de como o plano de
discagem irá funcionar, quais as prioridades e o que fazer
quando ocorrer uma falha.
Figura 3. Visão de Implantação
B. Extensões
Dentro de cada contexto estão definidas uma ou mais
extensões. Uma extensão é uma instrução executada pelo
Asterisk, disparada por alguma ligação recebida ou número
sendo discado no canal. As extensões especificam o que
acontece com cada ligação, sendo responsável por determinar
o fluxo de chamadas.
Uma extensão pode ser configurada usando a palavra exten
seguido do sinal de igual ou maior =>. Uma extensão é com-
posta por três componentes: o nome a extensão, a prioridade,
e uma aplicação (exten => 101,3,voicemail(SIP/101,20)).
C. Prioridade
A prioridade é definida por vários passos dentro de cada
extensão. Cada prioridade é numerada de forma sequencial,
começando em 1. Cada prioridade chama uma aplicação espe-
cífica, como no exemplo a seguir:
exten => 100,1,Answer( ) – atende a chamada
exten => 100,2,Hangup( ) – desliga a chamada
D. Aplicações
Partes fundamentais do Asterisk, cada aplicação executa
uma determinada ação sobre o canal atual, como tocar um
som, receber tom de discagem, ou desligar a chamada. Nos
exemplos de extensões e prioridades foram apresentadas duas
aplicações: Answer() e Hangup().
V. CONCLUSÃO
Com base nos estudos efetuados sobre o Asterisk perce-
bemos que o mesmo é uma boa solução para montar PABXs
com baixo custo, isso se deve ao fato de ser bastante flexível
na criação de novas funcionalidades. Seus recursos avançados,
facilidade de uso e menores custos são grandes atrativos tanto
para consumidores quanto para empresas de telefonia.
A arquitetura desenvolvida no Asterisk nos permitiu ana-
lisar conceitos importantes, tais como: canais, CODECS,
aplicações e protocolos. Composto por diversas tecnologias,
sua arquitetura modularizada permite a inclusão de novos
componentes sem a necessidade de modificar seu núcleo de
processamento. Todo o funcionamento do Asterisk é baseado
em seu plano de discagem que define como ele irá gerenciar
todas as ligações.
Há mais de 10 anos no mercado, o Asterisk é bem projetado
para o que ele faz e no decorrer desses anos ele alcançou
um notável equilíbrio entre flexibilidade e complexidade. Esse
equilíbrio foi obtido devido ao fato do Asterisk ser em código
aberto e você ter a liberdade de poder customizá-lo conforme
você desejar. Você pode fazer que ele distribua chamadas au-
tomaticamente, configure músicas, promoções para chamadas
na fila de espera, conferências, etc, podendo se tornar a base
para um sistema completo de telefonia.
Com as informações expostas concluímos que a arquitetura
do Asterisk foi desenvolvida de forma a atender os requisitos
funcionais já que as principais funções de chamadas são muito
bem elaboradas. Devido a sua estrutura modularizada, com
baixo acoplamento e alta coesão os requisitos não-funcionais
estão sendo atendidos, garantindo assim um software de qua-
lidade e com uma arquitetura robusta mas ao mesmo tempo
permissível a novas funcionalidades.
REFERÊNCIAS
[1] KELLER, Alexandre. Asterisk na prática. 2a Ed. Editor: Rubens Prates.
Novatec Editora Ltda. 2011.
[2] PEREIRA, Alberto Rodrigo. Asterisk - O sistema de telefo-
nia open source. Disponível em: http://www.vivaolinux.com.br/artigo/
Asterisk-O-sistema-de-telefonia-open-source. Acesso em: 25 mai. 2013.
[3] BERALDI, Roger. Asterisk - O Futuro da Telefonia. Disponí-
vel em: http://rogerberaldi.com/wp-content/uploads/2008/01/setac2006.
pdf. Acesso em: 25 mai. 2013.
[4] GONÇALVES, Flávio Eduardo de Andrade. Asterisk PBX Guia de
Configuração. Disponível em: http://www.taioque.com.br/linux/Livro%
20Asterisk%20Curso%20Completo.pdf. Acesso em: 25 de mai. 2013.
[5] SANTOS, Luiz Arthur F. VoIP Asterisk. Disponível em: http://www.
slideshare.net/luiz_arthur/redes-voip-asterisk. Acesso em 25 mai. 2013.
[6] HARFF, Simone. Requisitos e Proposta para Implantação de um
Servidor VoIP. Trabalho de Conclusão de Curso (Especialista em
Tecnologias, Gerência e Segurança de Redes de Computadores)
– Universidade Federal do Rio Grande do Sul, 2008. Disponível
em: http://www.lume.ufrgs.br/bitstream/handle/10183/15984/000695302.
pdf?sequence=1. Acesso em: 26 mai. 2013.
[7] ROSA, Richard Hobold. Ferramenta para desenvolvimento de Planos
de Discagem no Asterisk. Trabalho final apresentado à disciplina de
Projeto em Ciência da Computação II no curso de Ciências da Com-
putação - Universidade Federal de Santa Catarina, 2007. Disponível
em: https://projetos.inf.ufsc.br/arquivos_projetos/projeto_753/Projetos%
20II%20-20Richard%20Hobold.pdf. Acesso em: 27 mai. 2013.
[8] AMBLER, SCOTT W. Modelagem Agil: Práticas eficazes para a
programação eXtrema e o processo unificado, 2004. Disponível em:
http://books.google.com.br/books?id=O9AZpUYGOGMC&printsec=
frontcover&hl=pt-BR&source=gbs_ge_summary_r&cad=0#v=
onepage&q&f=false. Acesso em: 31 mai. 2013.

Weitere ähnliche Inhalte

Was ist angesagt?

Aula 10 meios de comunicação de dados
Aula 10 meios de comunicação de dadosAula 10 meios de comunicação de dados
Aula 10 meios de comunicação de dados
Jorge Ávila Miranda
 
Solisc 2010 centrais de telefonia IP
Solisc 2010   centrais de telefonia IPSolisc 2010   centrais de telefonia IP
Solisc 2010 centrais de telefonia IP
marleigrolli
 
Aula 11 meios de comunicação de dados
Aula 11 meios de comunicação de dadosAula 11 meios de comunicação de dados
Aula 11 meios de comunicação de dados
Jorge Ávila Miranda
 
Trabalho1 voip voz sobre ip
Trabalho1 voip voz sobre ipTrabalho1 voip voz sobre ip
Trabalho1 voip voz sobre ip
Rafael Pimenta
 
Elastix um excelente_pbx_ip_de_codigo_livre
Elastix um excelente_pbx_ip_de_codigo_livreElastix um excelente_pbx_ip_de_codigo_livre
Elastix um excelente_pbx_ip_de_codigo_livre
Fabiano Givigi
 

Was ist angesagt? (19)

Aula 10 meios de comunicação de dados
Aula 10 meios de comunicação de dadosAula 10 meios de comunicação de dados
Aula 10 meios de comunicação de dados
 
Solisc 2010 centrais de telefonia IP
Solisc 2010   centrais de telefonia IPSolisc 2010   centrais de telefonia IP
Solisc 2010 centrais de telefonia IP
 
Redes sem FIO
Redes sem FIORedes sem FIO
Redes sem FIO
 
PABX IP utilizando Asterisk
PABX IP utilizando AsteriskPABX IP utilizando Asterisk
PABX IP utilizando Asterisk
 
Instalação do Asterisk
Instalação do AsteriskInstalação do Asterisk
Instalação do Asterisk
 
Asterisk O Pabx Livre Para Voip
Asterisk   O Pabx Livre Para VoipAsterisk   O Pabx Livre Para Voip
Asterisk O Pabx Livre Para Voip
 
Aula 04 meios de comunicação de dados
Aula 04 meios de comunicação de dadosAula 04 meios de comunicação de dados
Aula 04 meios de comunicação de dados
 
Aula 11 meios de comunicação de dados
Aula 11 meios de comunicação de dadosAula 11 meios de comunicação de dados
Aula 11 meios de comunicação de dados
 
03 Vo Ip2009 Cenarios
03 Vo Ip2009 Cenarios03 Vo Ip2009 Cenarios
03 Vo Ip2009 Cenarios
 
Redes de Computadores
Redes de Computadores Redes de Computadores
Redes de Computadores
 
Trabalho1 voip voz sobre ip
Trabalho1 voip voz sobre ipTrabalho1 voip voz sobre ip
Trabalho1 voip voz sobre ip
 
Ccna final 4_atualizado
Ccna final 4_atualizadoCcna final 4_atualizado
Ccna final 4_atualizado
 
Modelo osi
Modelo osiModelo osi
Modelo osi
 
Apostila do treinamento profibus instalação
Apostila do treinamento profibus   instalaçãoApostila do treinamento profibus   instalação
Apostila do treinamento profibus instalação
 
Redes De Computadores Internet
Redes De Computadores   InternetRedes De Computadores   Internet
Redes De Computadores Internet
 
Elastix um excelente_pbx_ip_de_codigo_livre
Elastix um excelente_pbx_ip_de_codigo_livreElastix um excelente_pbx_ip_de_codigo_livre
Elastix um excelente_pbx_ip_de_codigo_livre
 
03 VoIp2009 Cenarios
03 VoIp2009 Cenarios03 VoIp2009 Cenarios
03 VoIp2009 Cenarios
 
Redes de computadores
Redes de computadoresRedes de computadores
Redes de computadores
 
Cisco ccna modulo 04
Cisco ccna modulo 04Cisco ccna modulo 04
Cisco ccna modulo 04
 

Ähnlich wie Asterisk

Asterisk central ipbx debian [artigo]
Asterisk central ipbx   debian [artigo]Asterisk central ipbx   debian [artigo]
Asterisk central ipbx debian [artigo]
Carlos Melo
 
Solisc 2010 centrais de telefonia ip - jeremias neves da silva
Solisc 2010   centrais de telefonia ip - jeremias neves da silvaSolisc 2010   centrais de telefonia ip - jeremias neves da silva
Solisc 2010 centrais de telefonia ip - jeremias neves da silva
marleigrolli
 
RedesIndustriais-unlocked.pdf
RedesIndustriais-unlocked.pdfRedesIndustriais-unlocked.pdf
RedesIndustriais-unlocked.pdf
filipeisep
 
Voz sobre ip uma abordagem funcional
Voz sobre ip   uma abordagem funcionalVoz sobre ip   uma abordagem funcional
Voz sobre ip uma abordagem funcional
Marcelo Dieder
 

Ähnlich wie Asterisk (20)

Asterisk central ipbx debian [artigo]
Asterisk central ipbx   debian [artigo]Asterisk central ipbx   debian [artigo]
Asterisk central ipbx debian [artigo]
 
Uma Análise dos Sistemas de Comunicação IP
Uma Análise dos Sistemas de Comunicação IPUma Análise dos Sistemas de Comunicação IP
Uma Análise dos Sistemas de Comunicação IP
 
Soluções voip com asterisk - Henrique Petry Rauber
Soluções voip com asterisk - Henrique Petry RauberSoluções voip com asterisk - Henrique Petry Rauber
Soluções voip com asterisk - Henrique Petry Rauber
 
IMS - IP Multimedia Subsystem
IMS - IP Multimedia SubsystemIMS - IP Multimedia Subsystem
IMS - IP Multimedia Subsystem
 
20 81-1-pb
20 81-1-pb20 81-1-pb
20 81-1-pb
 
Vo ip
Vo ipVo ip
Vo ip
 
Apresentação sobre Redes Industriais na UNIP Jundiaí/SP
Apresentação sobre Redes Industriais na UNIP Jundiaí/SPApresentação sobre Redes Industriais na UNIP Jundiaí/SP
Apresentação sobre Redes Industriais na UNIP Jundiaí/SP
 
Protocolos
ProtocolosProtocolos
Protocolos
 
Solisc 2010 centrais de telefonia ip - jeremias neves da silva
Solisc 2010   centrais de telefonia ip - jeremias neves da silvaSolisc 2010   centrais de telefonia ip - jeremias neves da silva
Solisc 2010 centrais de telefonia ip - jeremias neves da silva
 
Asterisk casosdesucesso
Asterisk casosdesucessoAsterisk casosdesucesso
Asterisk casosdesucesso
 
Cisco Call Manager - Ambiente e Topologias
Cisco Call Manager - Ambiente e TopologiasCisco Call Manager - Ambiente e Topologias
Cisco Call Manager - Ambiente e Topologias
 
Trixbox
TrixboxTrixbox
Trixbox
 
Trixbox
TrixboxTrixbox
Trixbox
 
RedesIndustriais-unlocked.pdf
RedesIndustriais-unlocked.pdfRedesIndustriais-unlocked.pdf
RedesIndustriais-unlocked.pdf
 
Introdução a redes sem fio
Introdução a redes sem fioIntrodução a redes sem fio
Introdução a redes sem fio
 
Projeto asteris para controle remoto
Projeto   asteris para controle remotoProjeto   asteris para controle remoto
Projeto asteris para controle remoto
 
Curso de redes_cisco
Curso de redes_ciscoCurso de redes_cisco
Curso de redes_cisco
 
Voz sobre ip uma abordagem funcional
Voz sobre ip   uma abordagem funcionalVoz sobre ip   uma abordagem funcional
Voz sobre ip uma abordagem funcional
 
Aplicações de Sistemas Móveis
Aplicações de Sistemas MóveisAplicações de Sistemas Móveis
Aplicações de Sistemas Móveis
 
Cabeamento Estruturado - final.pptx
Cabeamento Estruturado - final.pptxCabeamento Estruturado - final.pptx
Cabeamento Estruturado - final.pptx
 

Asterisk

  • 1. Asterisk: Uma Análise Arquitetural Marco A. P. Santos e Viviane de A. S. Ribeiro Resumo—Este artigo apresenta uma análise arquitetural do software Asterisk, uma solução open source utilizada na telefonia que permite tratar as chamadas telefônicas de forma persona- lizada. Possui características semelhantes a um PABX, como correio de voz, respostas interativas, distribuição automática de chamadas e conferência em chamadas. Sua arquitetura em forma modular é composta por canais, CODECs, aplicações e protocolos. O cérebro do Asterisk é o plano de discagem, é através dele que são configuradas todas as ações tomadas quando uma chamada é recebida. O Asterisk se consolidou no mercado como um dos maiores softwares de companhia telefônica, devido ao fato da grande flexibilidade oferecida na criação de novos serviços de acordo com a necessidade do cliente. I. INTRODUÇÃO Este artigo descreve uma análise arquitetural do Asterisk [1], considerado uma central telefônica híbrida, por imple- mentar tanto funções de uma central telefônica quanto de protocolos VoIP (Voice over Internet Protocol). Em suma, o Asterisk é um framework que implementa as funcionalidades de uma PABX (Private Automatic Branch Exchange), capaz de fazer, realizar e tratar chamadas telefônicas de forma personalizada. O artigo está estruturado da seguinte forma: na primeira seção é abordado o Asterisk, suas funcionalidades, vantagens, limitações, requisitos funcionais e não funcionais que guiaram as principais decisões arquiteturais do projeto. Na segunda se- ção será apresentada a arquitetura geral do software, onde serão mostrados os modelos das duas visões mais características do projeto: visão estrutural e visão de implantação. A terceira seção trata do plano de discagem (Dialplan) considerado o cérebro do Asterisk. II. ASTERISK Asterisk é um framework de código aberto que implementa as características de uma central telefônica e disponibiliza uma imensa quantidade de recursos e funcionalidades, conforme as necessidades da empresa. Seu nome vem do símbolo, *, que nos sistemas Unix e DOS representa um “coringa” significando qualquer caractere, qualquer arquivo. Criado por Mark Spencer da empresa Digium, ao longo dos anos o Asterisk recebe novas funções e características desenvolvidas por outros programadores contribuindo assim para sua evolução contínua. Foi desenvolvido para o Linux e atualmente o Asterisk pode ser executado também no FreeBSD, OpenBSD, Mac OS X, Sun Solaris e Microsoft Windows. O software básico do Asterisk inclui muitas características encontradas em sistemas telefônicos caros e proprietários. Ele aceita conexão em tempo real entre as redes PSTN (Public Service Telephony Network) e redes VoIP, permitindo a cons- trução eficaz de novos sistemas de telefonia ou a mudança dos sistemas de telefonia convencional para as novas tecnologia de VoIP. Dentre as várias funcionalidades existentes, vale ressaltar algumas [3]: Voice Mail, URA (Unidade de Resposta Auto- mática), Distribuição Automática de Chamadas, Conferências, Ramais Virtuais, Música em Espera, Estacionamento de Cha- madas, Gravação de Chamadas e Programação de Interativi- dade. As principais vantagens em optar pelo uso do Asterisk são [2]: Redução do custo de ligação (DDD e DDI); Funcionalida- des flexíveis; Plano de numeração unificado para toda empresa, Aumento da produtividade, Redução do custo de operação de rede (convergência Telecom & TI), Integração da empresa, Escalabilidade, Expansão das aplicações de voz e Baixo custo de implementação. Segundo [4], uma das limitações do Asterisk é o uso da CPU (Central Processing Unit – Unidade Central de Proces- samento) do servidor para processar sinais de voz, ao invés de ter um DSP (Processador de Sinais Digitais) dedicado a cada canal. Isso permitiu que o custo fosse reduzido para as placas E1/T1, porém o sistema fica muito dependente da CPU. A. Requisitos Funcionais e Não-Funcionais O Asterisk possui vários requisitos funcionais semelhantes aos encontradas nas PABX convencionais [7]: • Correio de voz: quando um usuário não atende uma ligação, existe a opção para o usuário que fez a chamada deixar uma mensagem; • Distribuidor Automático de Chamadas (DAC): caso não haja nenhum operador disponível o usuário é encaminhado para um sistema de filas e permanece em espera; • URA: atendimento eletrônico das ligações. • Sala de Conferência: possibilita vários usuários con- versar simultaneamente; • Discador automático: faz chamadas automáticas a par- tir de uma base de dados de telefones; • Servidor de música de espera: arquivos podem ser reproduzidos, de forma síncrona ou assíncrona, isso ocorre geralmente quando chamada esta na fila de espera. • Registro detalhado das ligações: relatórios sobre as ligações com duração, origem, destino e custo das chamadas. Dentre os requisitos Não-Funcionais do Asterisk, podemos citar:
  • 2. • Flexibilidade: criar novos recursos e novos serviços de acordo com a necessidade da empresa, além disso, é possível integrar com outros sistemas existentes: Skype, Sistemas de Monitoramento e Controle de Callcenters, etc. • Escalabilidade: para aumentar sua capacidade basta adicionar outro servidor e configurá-lo para comunicar-se com o já existente. • Redução de Custos das Ligações: é possível manter ramais local (matriz) e remotamente (filiais), para isso basta que todas as filiais possuam um computador com o Asterisk instalado e um link de internet para cada Asterisk, com isso toda a comunicação será realizada através da internet sem a necessidade de operadoras de telefonia [2]. • Interoperabilidade: o Asterisk suporta diferentes pro- tocolos de VoIP existentes hoje na telefonia, tornando a ligação e migração com sistemas híbridos altamente facilitada. III. ARQUITETURA DO ASTERISK O Asterisk foi criado para ter o máximo de flexibilidade. Ele é construído em módulos, permitindo ao administrador escolher a configuração mais adequada à atender suas necessi- dades. Esta configuração pode ser simples e utilizar apenas os recursos básicos do Asterisk, como também pode ser complexa e fazer uso de recursos avançados de conversação e plano de discagem (Dialplan). Um módulo no Asterisk é um componente com uma funcionalidade específica, tal como um controlador de canal (chan_sip.so) ou um recurso que aceita conexões externas (func_odbc.so). O núcleo de um sistema Asterisk está na configuração de seu plano de discagem, que define como ele irá gerenciar todas as suas ligações. A configuração de um plano de discagem, deve ser feita diretamente no arquivo (extensions.conf), devendo se ter muito cuidado ao modificá- lo. A figura 1 mostra as APIs (Application Programming Interface) específicas que foram definidas em torno de um núcleo PABX, bem como seus principais módulos. Este nú- cleo gerencia todas as conexões do PABX, independente de protocolos, CODECs (codificador-decodificador) e hardwares utilizados. As APIS estão divididas em quatro grupos [4]: • APIs de canais – Controla o tipo de conexão que está sendo usada, seja ela VoIP, ISDN(Integrated Services Digital Network) ou outra tecnologia; • APIs de Aplicações – Permitem carregar vários mó- dulos desempenhando funções específicas que podem ser usados pelo sistema PABX; • APIs de Traduções de CODECs – Carrega os módulos para suportar os diversos formatos de compressão de áudio, por exemplo: GSM (Groupe Special Mobile) utilizado na comunicação de telefonia móvel, MP3 (MPEG 1 Layer-3) e G.711(A-Law padrão utilizado no resto do mundo) & U-Law(padrão americano) que é um codec de alta qualidade e alta compactação. • APIs de Formato de Arquivos Asterisk – Gerencia leitura e escrita dos diversos formatos de arquivos para armazenamento, por exemplo: GSM e MP3. Os principais módulos (componentes) do Asterisk são [4]: • Núcleo de Comutação PABX – é a essência do Aste- risk, pois é responsável por todas as conexões e tarefas automáticas; • Lançador de Aplicações – Carrega aplicações que prestarão serviços para usuários, como correios de voz, conferência e listagem de diretórios; • CODEC Translator – Módulo responsável por codi- ficar e decodificar os vários formatos de compressão de áudio usados na telefonia; • Agendamento e Gerenciador E/S – Responsável pelo agendamento de tarefas de baixo nível do programa e gerenciamento do sistema para otimização de desem- penho. Figura 1. Visão Estrutural Interna do Asterisk A. Visão Estrutural Os componentes do Asterisk podem ser divididos em interfaces de hardware e software. [6] As interfaces de hardware que podem ser utilizadas são: • Interfaces Analógicas: linha de telefone e telefone analógico; • Circuitos Digitais: T1 - usado nos Estados Unidos, Canadá e Japão e, E1 - usado na Europa e no Brasil; • Protocolos VoIP: SIP, H.323, etc. [6] As interfaces de software são: • Interface Pseudo TDM Zaptel: permite a integração com o sistema digital e analógico e a realização de vídeo conferência. • Interface Não Zaptel: permite a integração com o sistema digital e analógico, porém, não permite a realização de vídeo conferência.
  • 3. • Protocolos de pacotes de voz: protocolos para comu- nicação VoIP. Os componentes e conectores utilizados em uma configuração básica de um PABX são mostrados na figura 2. Figura 2. Visão Estrutural A interface FXO/conector (Foreign eXchange Office) per- mite a conexão a uma linha de telefone analógico e aceita um tom de discagem. Conectam o PABX a outro comutador. A interface FXS/conector (Foreign eXchange Station) for- nece a linha analógica, em outras palavras, fornece o tom de discagem além da sinalização indicando a chegada de uma ligação. A Internet Conecction/conector roteia as chamadas para um provedor de serviços de telefonia. O SIP (Session Initiation Protocol) Phone é um protocolo padrão da VoIP baseado em texto, que utiliza o modelo "requisição-resposta"e é utilizado para iniciar, modificar ou terminar sessões de chamadas entre usuários. O SIP leva os controles da aplicação para o terminal, eliminando a necessi- dade de uma central de comutação, ele é usuário e servidor de rede ao mesmo tempo. B. Visão de Implantação Nesta visão serão apresentados os componentes e conecto- res da visão estrutural, focando na estrutura física sobre o qual o software foi implantado e implementado. Esta visão ajuda a explorar a configuração proposta para o sistema, mostrando como alguns componentes foram distribuídos [8]. Os itens de hardware necessários para implantação do Asterisk são: HD (hard disk), por não ser muito utilizado ele requer em média 100Mb; sistemas operacionáis compatíveis com a instalação, podem ser FreeBSD, OpenBSD, Mac OS X, Sun Solaris e Microsoft Windows; memória e CPU. O Asterisk faz uso intensivo de CPU e memória por sua necessidade de acesso prioritário aos barramentos do processador e do sistema [5]: • Até 5 canais é recomendado no mínimo um computa- dor com 400Mhz x86 e 256 MB de memória RAM; • Para sistemas com até 10 canais é recomendado no mínimo um computador com 1 GHz x86 e 512 MB de RAM; • Para sistemas com até 15 canais é recomendado no mínimo um computador com 3 GHz x86 e 1 GB de RAM; • Para ambientes grandes com mais de 15 canais o hardware deve ser muito bem projetado (a depender com CPUs duplas e possivelmente múltiplos servido- res em arquitetura distribuída) para não haver falhas na comunicação. Os itens de software necessários para instalação do Asterisk são os pacotes. O principal que é o asterisk; os drivers da telefonia zaptel - caso esteja utilizando hardware digital ou analógico, ou o driver ztdummy como interface de temporiza- ção; a biblioteca libpri - para o uso de interfaces ISDN PRI (carrega voz e serviços de redes digitais [4]) ou o pacote zaptel. A figura 3 mostra a visão de implantação do Asterisk. O node do Asterisk representa sua estrutura interna com seus componentes e conectores. Já o node de Device encontramos os diversos dispositivos que se conectam com o Asterisk atra- vés dos conectores (FXS, Adaptador de telefonia Analógica, Ethernet e FXO). Através desta visão de implantação percebemos que a API de Canais do Asterisk é a interface núcleo da arquitetura do Asterisk, pois é a partir dela que as chamadas são recebidas ou enviadas, já que toda chamada é originada ou finalizada de um canal. IV. PLANO DE DISCAGEM DO ASTERISK O coração do Asterisk é o plano de discagem, configurado através do arquivo extension.conf onde os objetos são decla- rados e configurados com as ações que serão tomadas quando uma ligação for recebida. O plano de discagem é dividido em quatro partes: contextos, extensões, prioridades e aplicações [7]. A. Contextos O plano de discagem é divido em seções chamadas de contextos. Os contextos definem o escopo e permitem separar diferentes partes do plano de discagem. Eles são diretamente ligados aos canais e cada canal existe dentro de um contexto. Quando uma ligação chega no Asterisk por um canal ela é processada dentro de um contexto. As extensões definidas dentro de um contexto são iden- tificadas colocando o nome do contexto entre colchetes ([]), por exemplo: [entradas]. Todas as instruções colocadas depois da definição do contexto farão parte deste contexto até o próximo contexto ser declarado. Existem dois tipos de contexto principais: [globals] e [general]. No contexto [globals], definimos as variáveis globais e seus valores iniciais, que serão utilizados por outros contextos, já no [general] podemos ter informações de como o plano de discagem irá funcionar, quais as prioridades e o que fazer quando ocorrer uma falha.
  • 4. Figura 3. Visão de Implantação B. Extensões Dentro de cada contexto estão definidas uma ou mais extensões. Uma extensão é uma instrução executada pelo Asterisk, disparada por alguma ligação recebida ou número sendo discado no canal. As extensões especificam o que acontece com cada ligação, sendo responsável por determinar o fluxo de chamadas. Uma extensão pode ser configurada usando a palavra exten seguido do sinal de igual ou maior =>. Uma extensão é com- posta por três componentes: o nome a extensão, a prioridade, e uma aplicação (exten => 101,3,voicemail(SIP/101,20)). C. Prioridade A prioridade é definida por vários passos dentro de cada extensão. Cada prioridade é numerada de forma sequencial, começando em 1. Cada prioridade chama uma aplicação espe- cífica, como no exemplo a seguir: exten => 100,1,Answer( ) – atende a chamada exten => 100,2,Hangup( ) – desliga a chamada D. Aplicações Partes fundamentais do Asterisk, cada aplicação executa uma determinada ação sobre o canal atual, como tocar um som, receber tom de discagem, ou desligar a chamada. Nos exemplos de extensões e prioridades foram apresentadas duas aplicações: Answer() e Hangup(). V. CONCLUSÃO Com base nos estudos efetuados sobre o Asterisk perce- bemos que o mesmo é uma boa solução para montar PABXs com baixo custo, isso se deve ao fato de ser bastante flexível na criação de novas funcionalidades. Seus recursos avançados, facilidade de uso e menores custos são grandes atrativos tanto para consumidores quanto para empresas de telefonia. A arquitetura desenvolvida no Asterisk nos permitiu ana- lisar conceitos importantes, tais como: canais, CODECS, aplicações e protocolos. Composto por diversas tecnologias, sua arquitetura modularizada permite a inclusão de novos componentes sem a necessidade de modificar seu núcleo de processamento. Todo o funcionamento do Asterisk é baseado
  • 5. em seu plano de discagem que define como ele irá gerenciar todas as ligações. Há mais de 10 anos no mercado, o Asterisk é bem projetado para o que ele faz e no decorrer desses anos ele alcançou um notável equilíbrio entre flexibilidade e complexidade. Esse equilíbrio foi obtido devido ao fato do Asterisk ser em código aberto e você ter a liberdade de poder customizá-lo conforme você desejar. Você pode fazer que ele distribua chamadas au- tomaticamente, configure músicas, promoções para chamadas na fila de espera, conferências, etc, podendo se tornar a base para um sistema completo de telefonia. Com as informações expostas concluímos que a arquitetura do Asterisk foi desenvolvida de forma a atender os requisitos funcionais já que as principais funções de chamadas são muito bem elaboradas. Devido a sua estrutura modularizada, com baixo acoplamento e alta coesão os requisitos não-funcionais estão sendo atendidos, garantindo assim um software de qua- lidade e com uma arquitetura robusta mas ao mesmo tempo permissível a novas funcionalidades. REFERÊNCIAS [1] KELLER, Alexandre. Asterisk na prática. 2a Ed. Editor: Rubens Prates. Novatec Editora Ltda. 2011. [2] PEREIRA, Alberto Rodrigo. Asterisk - O sistema de telefo- nia open source. Disponível em: http://www.vivaolinux.com.br/artigo/ Asterisk-O-sistema-de-telefonia-open-source. Acesso em: 25 mai. 2013. [3] BERALDI, Roger. Asterisk - O Futuro da Telefonia. Disponí- vel em: http://rogerberaldi.com/wp-content/uploads/2008/01/setac2006. pdf. Acesso em: 25 mai. 2013. [4] GONÇALVES, Flávio Eduardo de Andrade. Asterisk PBX Guia de Configuração. Disponível em: http://www.taioque.com.br/linux/Livro% 20Asterisk%20Curso%20Completo.pdf. Acesso em: 25 de mai. 2013. [5] SANTOS, Luiz Arthur F. VoIP Asterisk. Disponível em: http://www. slideshare.net/luiz_arthur/redes-voip-asterisk. Acesso em 25 mai. 2013. [6] HARFF, Simone. Requisitos e Proposta para Implantação de um Servidor VoIP. Trabalho de Conclusão de Curso (Especialista em Tecnologias, Gerência e Segurança de Redes de Computadores) – Universidade Federal do Rio Grande do Sul, 2008. Disponível em: http://www.lume.ufrgs.br/bitstream/handle/10183/15984/000695302. pdf?sequence=1. Acesso em: 26 mai. 2013. [7] ROSA, Richard Hobold. Ferramenta para desenvolvimento de Planos de Discagem no Asterisk. Trabalho final apresentado à disciplina de Projeto em Ciência da Computação II no curso de Ciências da Com- putação - Universidade Federal de Santa Catarina, 2007. Disponível em: https://projetos.inf.ufsc.br/arquivos_projetos/projeto_753/Projetos% 20II%20-20Richard%20Hobold.pdf. Acesso em: 27 mai. 2013. [8] AMBLER, SCOTT W. Modelagem Agil: Práticas eficazes para a programação eXtrema e o processo unificado, 2004. Disponível em: http://books.google.com.br/books?id=O9AZpUYGOGMC&printsec= frontcover&hl=pt-BR&source=gbs_ge_summary_r&cad=0#v= onepage&q&f=false. Acesso em: 31 mai. 2013.