Asterisk: Uma Análise ArquiteturalMarco A. P. Santos e Viviane de A. S. RibeiroResumo—Este artigo apresenta uma análise ar...
• Flexibilidade: criar novos recursos e novos serviçosde acordo com a necessidade da empresa, além disso,é possível integr...
• Protocolos de pacotes de voz: protocolos para comu-nicação VoIP.Os componentes e conectores utilizados em uma configuraçã...
Figura 3. Visão de ImplantaçãoB. ExtensõesDentro de cada contexto estão definidas uma ou maisextensões. Uma extensão é uma ...
em seu plano de discagem que define como ele irá gerenciartodas as ligações.Há mais de 10 anos no mercado, o Asterisk é bem...
Próximos SlideShares
Carregando em…5
×

Asterisk

1.159 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.159
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
32
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Asterisk

  1. 1. Asterisk: Uma Análise ArquiteturalMarco A. P. Santos e Viviane de A. S. RibeiroResumo—Este artigo apresenta uma análise arquitetural dosoftware Asterisk, uma solução open source utilizada na telefoniaque permite tratar as chamadas telefônicas de forma persona-lizada. Possui características semelhantes a um PABX, comocorreio de voz, respostas interativas, distribuição automáticade chamadas e conferência em chamadas. Sua arquitetura emforma modular é composta por canais, CODECs, aplicações eprotocolos. O cérebro do Asterisk é o plano de discagem, é atravésdele que são configuradas todas as ações tomadas quando umachamada é recebida. O Asterisk se consolidou no mercado comoum dos maiores softwares de companhia telefônica, devido ao fatoda grande flexibilidade oferecida na criação de novos serviços deacordo com a necessidade do cliente.I. INTRODUÇÃOEste 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 deprotocolos VoIP (Voice over Internet Protocol). Em suma, oAsterisk é um framework que implementa as funcionalidadesde uma PABX (Private Automatic Branch Exchange), capazde fazer, realizar e tratar chamadas telefônicas de formapersonalizada.O artigo está estruturado da seguinte forma: na primeiraseção é abordado o Asterisk, suas funcionalidades, vantagens,limitações, requisitos funcionais e não funcionais que guiaramas principais decisões arquiteturais do projeto. Na segunda se-ção será apresentada a arquitetura geral do software, onde serãomostrados os modelos das duas visões mais características doprojeto: visão estrutural e visão de implantação. A terceiraseção trata do plano de discagem (Dialplan) considerado océrebro do Asterisk.II. ASTERISKAsterisk é um framework de código aberto que implementaas características de uma central telefônica e disponibiliza umaimensa quantidade de recursos e funcionalidades, conforme asnecessidades da empresa. Seu nome vem do símbolo, *, quenos sistemas Unix e DOS representa um “coringa” significandoqualquer caractere, qualquer arquivo.Criado por Mark Spencer da empresa Digium, ao longodos anos o Asterisk recebe novas funções e característicasdesenvolvidas por outros programadores contribuindo assimpara sua evolução contínua. Foi desenvolvido para o Linuxe atualmente o Asterisk pode ser executado também noFreeBSD, OpenBSD, Mac OS X, Sun Solaris e MicrosoftWindows.O software básico do Asterisk inclui muitas característicasencontradas em sistemas telefônicos caros e proprietários. Eleaceita conexão em tempo real entre as redes PSTN (PublicService Telephony Network) e redes VoIP, permitindo a cons-trução eficaz de novos sistemas de telefonia ou a mudança dossistemas de telefonia convencional para as novas tecnologia deVoIP.Dentre as várias funcionalidades existentes, vale ressaltaralgumas [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 derede (convergência Telecom & TI), Integração da empresa,Escalabilidade, Expansão das aplicações de voz e Baixo custode implementação.Segundo [4], uma das limitações do Asterisk é o uso daCPU (Central Processing Unit – Unidade Central de Proces-samento) do servidor para processar sinais de voz, ao invés deter um DSP (Processador de Sinais Digitais) dedicado a cadacanal. Isso permitiu que o custo fosse reduzido para as placasE1/T1, porém o sistema fica muito dependente da CPU.A. Requisitos Funcionais e Não-FuncionaisO Asterisk possui vários requisitos funcionais semelhantesaos encontradas nas PABX convencionais [7]:• Correio de voz: quando um usuário não atende umaligação, existe a opção para o usuário que fez achamada deixar uma mensagem;• Distribuidor Automático de Chamadas (DAC): casonão haja nenhum operador disponível o usuário éencaminhado para um sistema de filas e permaneceem 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 serreproduzidos, de forma síncrona ou assíncrona, issoocorre geralmente quando chamada esta na fila deespera.• Registro detalhado das ligações: relatórios sobre asligações com duração, origem, destino e custo daschamadas.Dentre os requisitos Não-Funcionais do Asterisk, podemoscitar:
  2. 2. • Flexibilidade: criar novos recursos e novos serviçosde acordo com a necessidade da empresa, além disso,é possível integrar com outros sistemas existentes:Skype, Sistemas de Monitoramento e Controle deCallcenters, etc.• Escalabilidade: para aumentar sua capacidadebasta adicionar outro servidor e configurá-lo paracomunicar-se com o já existente.• Redução de Custos das Ligações: é possível manterramais local (matriz) e remotamente (filiais), para issobasta que todas as filiais possuam um computador como Asterisk instalado e um link de internet para cadaAsterisk, com isso toda a comunicação será realizadaatravés da internet sem a necessidade de operadorasde telefonia [2].• Interoperabilidade: o Asterisk suporta diferentes pro-tocolos de VoIP existentes hoje na telefonia, tornandoa ligação e migração com sistemas híbridos altamentefacilitada.III. ARQUITETURA DO ASTERISKO Asterisk foi criado para ter o máximo de flexibilidade.Ele é construído em módulos, permitindo ao administradorescolher a configuração mais adequada à atender suas necessi-dades. Esta configuração pode ser simples e utilizar apenas osrecursos básicos do Asterisk, como também pode ser complexae fazer uso de recursos avançados de conversação e plano dediscagem (Dialplan).Um módulo no Asterisk é um componente com umafuncionalidade 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á naconfiguração de seu plano de discagem, que define comoele irá gerenciar todas as suas ligações. A configuração deum 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 ProgrammingInterface) específicas que foram definidas em torno de umnúcleo PABX, bem como seus principais módulos. Este nú-cleo gerencia todas as conexões do PABX, independente deprotocolos, CODECs (codificador-decodificador) e hardwaresutilizados.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 ServicesDigital Network) ou outra tecnologia;• APIs de Aplicações – Permitem carregar vários mó-dulos desempenhando funções específicas que podemser usados pelo sistema PABX;• APIs de Traduções de CODECs – Carrega os módulospara 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 utilizadono resto do mundo) & U-Law(padrão americano) queé um codec de alta qualidade e alta compactação.• APIs de Formato de Arquivos Asterisk – Gerencialeitura e escrita dos diversos formatos de arquivos paraarmazenamento, 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 tarefasautomáticas;• Lançador de Aplicações – Carrega aplicações queprestarão serviços para usuários, como correios devoz, conferência e listagem de diretórios;• CODEC Translator – Módulo responsável por codi-ficar e decodificar os vários formatos de compressãode áudio usados na telefonia;• Agendamento e Gerenciador E/S – Responsável peloagendamento de tarefas de baixo nível do programa egerenciamento do sistema para otimização de desem-penho.Figura 1. Visão Estrutural Interna do AsteriskA. Visão EstruturalOs componentes do Asterisk podem ser divididos eminterfaces de hardware e software.[6] As interfaces de hardware que podem ser utilizadassão:• Interfaces Analógicas: linha de telefone e telefoneanaló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çãocom o sistema digital e analógico e a realização devídeo conferência.• Interface Não Zaptel: permite a integração com osistema digital e analógico, porém, não permite arealização de vídeo conferência.
  3. 3. • Protocolos de pacotes de voz: protocolos para comu-nicação VoIP.Os componentes e conectores utilizados em uma configuraçãobásica de um PABX são mostrados na figura 2.Figura 2. Visão EstruturalA interface FXO/conector (Foreign eXchange Office) per-mite a conexão a uma linha de telefone analógico e aceita umtom 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 dediscagem além da sinalização indicando a chegada de umaligação.A Internet Conecction/conector roteia as chamadas paraum provedor de serviços de telefonia.O SIP (Session Initiation Protocol) Phone é um protocolopadrão da VoIP baseado em texto, que utiliza o modelo"requisição-resposta"e é utilizado para iniciar, modificar outerminar sessões de chamadas entre usuários. O SIP leva oscontroles da aplicação para o terminal, eliminando a necessi-dade de uma central de comutação, ele é usuário e servidor derede ao mesmo tempo.B. Visão de ImplantaçãoNesta visão serão apresentados os componentes e conecto-res da visão estrutural, focando na estrutura física sobre o qualo software foi implantado e implementado. Esta visão ajudaa explorar a configuração proposta para o sistema, mostrandocomo alguns componentes foram distribuídos [8].Os itens de hardware necessários para implantação doAsterisk são: HD (hard disk), por não ser muito utilizado elerequer em média 100Mb; sistemas operacionáis compatíveiscom a instalação, podem ser FreeBSD, OpenBSD, Mac OS X,Sun Solaris e Microsoft Windows; memória e CPU. O Asteriskfaz uso intensivo de CPU e memória por sua necessidade deacesso 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 nomínimo um computador com 1 GHz x86 e 512 MBde RAM;• Para sistemas com até 15 canais é recomendado nomínimo um computador com 3 GHz x86 e 1 GB deRAM;• Para ambientes grandes com mais de 15 canais ohardware deve ser muito bem projetado (a dependercom CPUs duplas e possivelmente múltiplos servido-res em arquitetura distribuída) para não haver falhasna comunicação.Os itens de software necessários para instalação do Asterisksão os pacotes. O principal que é o asterisk; os drivers datelefonia zaptel - caso esteja utilizando hardware digital ouanaló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. Onode do Asterisk representa sua estrutura interna com seuscomponentes e conectores. Já o node de Device encontramosos 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 APIde Canais do Asterisk é a interface núcleo da arquitetura doAsterisk, pois é a partir dela que as chamadas são recebidasou enviadas, já que toda chamada é originada ou finalizada deum canal.IV. PLANO DE DISCAGEM DO ASTERISKO coração do Asterisk é o plano de discagem, configuradoatravés do arquivo extension.conf onde os objetos são decla-rados e configurados com as ações que serão tomadas quandouma ligação for recebida. O plano de discagem é dividido emquatro partes: contextos, extensões, prioridades e aplicações[7].A. ContextosO plano de discagem é divido em seções chamadas decontextos. Os contextos definem o escopo e permitem separardiferentes partes do plano de discagem. Eles são diretamenteligados 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 depoisda definição do contexto farão parte deste contexto até opróximo contexto ser declarado. Existem dois tipos de contextoprincipais: [globals] e [general].No contexto [globals], definimos as variáveis globais e seusvalores iniciais, que serão utilizados por outros contextos, jáno [general] podemos ter informações de como o plano dediscagem irá funcionar, quais as prioridades e o que fazerquando ocorrer uma falha.
  4. 4. Figura 3. Visão de ImplantaçãoB. ExtensõesDentro de cada contexto estão definidas uma ou maisextensões. Uma extensão é uma instrução executada peloAsterisk, disparada por alguma ligação recebida ou númerosendo discado no canal. As extensões especificam o queacontece com cada ligação, sendo responsável por determinaro fluxo de chamadas.Uma extensão pode ser configurada usando a palavra extenseguido 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. PrioridadeA prioridade é definida por vários passos dentro de cadaextensã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 chamadaexten => 100,2,Hangup( ) – desliga a chamadaD. AplicaçõesPartes fundamentais do Asterisk, cada aplicação executauma determinada ação sobre o canal atual, como tocar umsom, receber tom de discagem, ou desligar a chamada. Nosexemplos de extensões e prioridades foram apresentadas duasaplicações: Answer() e Hangup().V. CONCLUSÃOCom base nos estudos efetuados sobre o Asterisk perce-bemos que o mesmo é uma boa solução para montar PABXscom baixo custo, isso se deve ao fato de ser bastante flexívelna criação de novas funcionalidades. Seus recursos avançados,facilidade de uso e menores custos são grandes atrativos tantopara 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 novoscomponentes sem a necessidade de modificar seu núcleo deprocessamento. Todo o funcionamento do Asterisk é baseado
  5. 5. em seu plano de discagem que define como ele irá gerenciartodas as ligações.Há mais de 10 anos no mercado, o Asterisk é bem projetadopara o que ele faz e no decorrer desses anos ele alcançouum notável equilíbrio entre flexibilidade e complexidade. Esseequilíbrio foi obtido devido ao fato do Asterisk ser em códigoaberto e você ter a liberdade de poder customizá-lo conformevocê desejar. Você pode fazer que ele distribua chamadas au-tomaticamente, configure músicas, promoções para chamadasna fila de espera, conferências, etc, podendo se tornar a basepara um sistema completo de telefonia.Com as informações expostas concluímos que a arquiteturado Asterisk foi desenvolvida de forma a atender os requisitosfuncionais já que as principais funções de chamadas são muitobem elaboradas. Devido a sua estrutura modularizada, combaixo acoplamento e alta coesão os requisitos não-funcionaisestão sendo atendidos, garantindo assim um software de qua-lidade e com uma arquitetura robusta mas ao mesmo tempopermissí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 deConfiguraçã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 umServidor VoIP. Trabalho de Conclusão de Curso (Especialista emTecnologias, Gerência e Segurança de Redes de Computadores)– Universidade Federal do Rio Grande do Sul, 2008. Disponívelem: 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 Planosde Discagem no Asterisk. Trabalho final apresentado à disciplina deProjeto em Ciência da Computação II no curso de Ciências da Com-putação - Universidade Federal de Santa Catarina, 2007. Disponívelem: 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 aprogramaçã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.

×