FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD - (Artigo 1) - Asterisk e FreeBSD o Futuro da Telefonia IP.
 
17.03  
Inicio arrow Resumo do Site arrow (Artigo 1) - Asterisk e FreeBSD o Futuro da Telefonia IP.
Principal
Inicio
Noticias
Artigos
Regras da Lista
Assinar a Lista
Histrico da Lista
Forum
Keyserver
PC-BSD: Artigos
PC-BSD: Notcias
Galeria de Imagens
Contador Usurios FUG
FUGs Estaduais
Downloads
Enquetes
FAQ
Resumo do Site
Links
Pesquisar
Contato
Sobre a FUG-BR
RSS / Twitter
-
DOC-BR (FUG BR)
Introduo
Projeto DOC-BR
Handbook
FAQ Oficial
-
+ Noticias
Alertas de Seguranca
Alertas em Ports
BSD em Geral
DaemonNews (Ingles)
MyFreeBSD
Todas Categorias
-
Login
Nome de Usurio

Senha

Lembrar login
Esqueceu sua senha?
Sem conta? Crie uma


(Artigo 1) - Asterisk e FreeBSD o Futuro da Telefonia IP. PDF Imprimir E-mail
Por Marcelo Araujo   
09/07/2006
ndice de Artigos
(Artigo 1) - Asterisk e FreeBSD o Futuro da Telefonia IP.
Parte 2

Asterisk FreeBSD Project - O Diabo da TelefoniaObservando o mercado, é fácil prever até onde a telefonia IP (VoIP) vai modificar nossas vidas em um  breve futuro, estou desenvolvendo uma série de 3 artigos, estou publicando o primeiro, uma introdução sobre o relacionamento do FreeBSD com o projeto Asterisk, e um modelo básico para entender as aplicações que podem ser desenvolvidas como uma introdução ao aprendizado na telefonia IP. Asterisk hoje é uma realidade no mercado de telefonia, e a visão de Telefonia e Telecom esta sendo redirecionada para o mercado de TI.

1 - O Asterisk.

O Asterisk é um software PBX que usa o conceito de software livre, criado inicialmente por Mark Spencer, fundador da empresa Digium .

Com o Asterisk você pode criar diversas aplicações a um baixo custo, com a mesma, se não superioridade de muitos PABX encontrados hoje no mercado de telecomunicações.
Entenda que o Asterisk é muito mais que um PABX padrão. Com o Asterisk em sua rede, você cria novas aplicações em telefonia.

    Algumas como:

  • URA (Unidade de Resposta Audível);
  • Filas de chamadas para Call Centers e outras atividades;
  • VoiceMail;
  • Atendimento Programado;
  • Servidor de Fax;
  • Conferência;
  • VideoConferência;
  • Bilhetagem detalhada;
  • Planos de chamadas (DialPlain);
  • CRM
  • e muitos outros...


2 - História dos Projetos Zapata/Asterisk.

Não podemos falar de Asterisk sem antes pincelar um pouco da história do projeto ZAPATA.

O projeto ZAPATA foi conduzido por Jim Dixon, Ele é o responsável pelo desenvolvimento do hardware da Digium. É interessante ressaltar que todo o projeto inicial de placas produzidos pela Digium é aberto e qualquer empresa pode produzir um hardware igual ou com a mesma tecnologia.

Ele desenvolveu inicialmente para o sistema FreeBSD um driver para a placa Mitel89000C "ISDN Express Development Card", e no sistema operacional rodava uma API desenvolvida inicialmente pela AT&T com algumas funcionalidades de correio de voz e auto-atendimento, esta API foi chamada de Audix. O Audix rodava em plataforma UNIX e custava como tudo em telefonia, milhares de dólares por porta e com as funcionalidades bastante limitadas.

Jim então notou que existia uma grande limitação de I/O na placa Mitel89000C e resolveu desenvolver a sua própria placa disponibilizando todos os arquivos do projeto, incluindo fotos e arquivos de plotagem na Internet batizando o projeto de Zapata.

Como o conceito era revolucionário, Jim inspirado no mexicano (Emiliano Zapata), batizou a primeira placa com o nome de tormenta, o mesmo nome da organização de Emiliano Zapata.

Após a públicação de toda a parafernalha na Internet, a resposta que Jim recebia constantemente era se existia o driver para Linux, ele nunca havia tido contato com o Linux antes, e as dificuldades para entender os conceitos de módulos carregáveis fez com que Jim disponibilizasse um pequeno hack do código portado para Linux.

Em 48 horas Jim recebeu a resposta de um desenvolvedor no Alabama (Mark Spencer), que se ofereceu para dar continuidade no desenvolvimento do driver para Linux.

Mark Spencer inicialmente para suprir as dificuldades financeiras na aquisição de um PABX para a sua empresa de Help Desk, desenvolveu o Asterisk para controlar as ligações que seu Help Desk recebia. O conceito Asterisk até então era funcional mas não tinha um hardware útil e prático. O casamento do sistema de telefonia criado por Jim Dixon e o desenho da biblioteca de hardware/driver e interface, permitiu à Mark desenvolver novas funcionalidade e criar um sistema que poderia falar com telefones reais, linhas analógicas e digitais.

A história completa você pode ver em:  AsteriskDocs

Asterisk Logo3 - Instalando o Asterisk.

Iremos utilizar a Coleção de Ports para instalar o Asterisk.

O ports do Asterisk atualmente é mantido por Maxim Sobolev <sobomax (A) portaone (DOT) com > e vários outros desenvolvedores ao redor do mundo. O suporte à Asterisk no FreeBSD é pleno, não há qualquer funcionalidade que não esteja totalmente funcional. As pequenas exceções são módulos de terceiros, não oficialmente suportados pelo Asterisk, mas ainda assim estes módulos podem ser usados no FreeBSD com pequenas adaptações no código.

    nagazaki# cd /usr/ports/net/asterisk
    nagazaki# make install clean

Opcionalmente você pode evitar que o Ports compile o Asterisk com suporte a H.323. Sem H.323 a compilação será bem mais rápida. Esse protocolo é pouco funcional e vem sendo amplamento substituído por SIP/RTP, sendo praticamente um protocolo descontinuado no que tange à VoIP (mas ainda usado em Vídeo sobre IP). Se não quiser compilar com H.323, use a opção WITHOUT_H323=yes para instalar o asterisk:

    nagazaki# cd /usr/ports/net/asterisk
    nagazaki# make WITHOUT_H323=yes install clean

 4 - Criando um ambiente de testes.

O ambiente que criei para testes, consiste em um ATA (Adaptador para telefone analogico), com duas portas FXS.

Entendendo os modelos de portas FXO e FXS.

            FXS = Foreign EXchange Subscriber
                    É a interface que fornece a linha analógica, em outras palavras, é o "plug na parede".

            FXO = Foreign eXchange Office
                    É a interface do telefone.

Entendendo melhor o funcionamento das portas FXO e FXS.

            Ao realizar uma chamada: (FXO)

                    Tire o telefone do gancho(dispositivo FXO). A porta FXS detecta que o telefone está fora do gancho.
                    Digite um número de telefone, que é transmitido á porta FXS em Tom Duplo de Multifrequência (DTMF).

            Ligação Interna: (FXS)

                    A porta FXS recebe a ligação, e então envia um impulso tônico (som) ao dispositivo FXO anexado.
                    O telefone toca.
                    Assim que alguém atende, pode responder a chamada.

Ainda não tenho disponivel em meu ambiente de testes uma porta FXO configurada no PBX, mas isso é questão de tempo.

Neste ambiente de testes, tenho a seguinte configuração:

        [ MODEM ADSL ] --------------------- [   Switch 8 portas   ]
                                                 |               |
                                                 |               |
                                                 |               |
                                                [ ASTERISK ]  [ATA]
                                                                 |
                                                            [Telefone]

Fiz alguns testes com um amigo que trabalha em um provedor de internet aqui da região, este mesmo tem um equipamento ATA LinkSys, irei abordar no final deste artigo, alguns problemas que tive e como fiz para resolver o mesmo.

5 - Pós Instalação, os principais arquivos de configuração.

Após instalar o Asterisk, podemos navegar e olhar seus arquivos de configuração.

    nagazaki# cd /usr/local/etc/asterisk

Em um primeiro momento iremos observar dois arquivos principais para configurar um plano de de testes:

O arquivo sip.conf é responsável por autenticar os usuários que utilizam este protocolo (SIP = Session Initialized Protocol).  Protocolo SIP é um dos protocolos mais usados nos tempos de hoje na telefonia IP.

O arquivo extensions.conf é responsável pela configuração dos planos de numeração.
Iremos nos referenciar aos planos de numeração chamando-os de CONTEXTO.

6 - Criando 2 usuários e autenticando usando SIP.

Nesta abordagem iremos adicionar algumas configurações no arquivo sip.conf, percebemos que o arquivo já vem com vários sets pré-configurados.

6.1 Adicionando os usuarios:

Edite o arquivo sip.conf e adicione no final do mesmo as seguintes configurações.

            ; Usuário INLOCO no asterisk
            [araujo]
            type=friend
            username=araujo
            secret=<SENHA>
            host=dynamic
            context=faculdade
            qualify=yes
            insecure=very
            dtmfmode=rfc2833
            allow=all
            canreinvite=no

            ; Usuário em outra localidade WAN
            [marcelo]
            type=friend
            username=marcelo
            secret=<SENHA>
            host=dynamic
            context=faculdade
            qualify=yes
            insecure=very
            dtmfmode=rfc2833
            allow=all
            nat=route
            canreinvite=no

Irei fazer uma abordagem básica sobre cada opção usada no arquivo sip.conf.

Em "type", podemos usar duas opções:

                    peer = Usuário só faz chamadas.
                    user = Usuários autenticados podem apenas fazer chamadas.
                    friend = Usuários podem fazer e receber chamadas.

Em username e secret, definimos o usuário e senha para autenticação.
Em host, podemos definir estaticamente o host ou então atribuir a flag dynamic.
Em Context, apontamos para qual CONTEXTO o usuário vai estar inserido no extensions.conf .

Em Qualify, podemos manter um padrão de qualidade para os dispositivos interconectados, exemplo:

           qualify=10000

Iremos considerar o dispositivo inassecível se o mesmo não responder dentro de 1s.

Em insecure, iremos abordar 2 sets:

       invite = Não requer autenticação para efetuar ligações.

       very =  Não requer autenticação para efetuar ligações e não iremos checar a porta de destino para a transmissão de dados.

Em allow, definimos o tipo de codec suportado para o dispositivo conectado, neste modelo, qualquer codec suportado pelo asterisk pode ser configurado no dispositivo ATA ou SoftPhone.

Os codecs são usados para converter um sinal analógico de voz em uma versão codificada digitalmente. Codecs variam na qualidade do som, banda passante necessária e requisitos de processamento e memória.

Lista de alguns Codecs suportados pelo asterisk:

             GIPS: 13.3Kbps
        GSM: 13Kbps, 20ms de "tamanho do frame"
        G711: 64Kbps conhecido também como alaw/ulaw
        G722: 48/56/64Kbps
        G723: 5.3/6.3Kbps, 30ms de "tamanho do frame"
        G728: 16Kbps


Em nat existem 4 opções que devem ser abordadas, não iremos entrar nas particularidades de cada modelo de NAT, mas os maiores problemas da telefonia IP estão no NAT.

                            yes = Ignora qualquer informação no cabeçalho SIP e assume os mapeamentos da tabela NAT.
                            no = Usa o NAT de acordo com o RFC3581.
                            never = Não utiliza os recursos do NAT para a resposta simétrica de roteamento (RFC3581).
                            route = Assume o NAT e não envia a resposta para o ip/porta padrão do cabeçalho SIP.

Em canreinvite setamos se o modo de conexão vai ser entre ATA-ATA ou ATA-ASTERISK-ATA.


7 - Criando o primeiro plano de discagem.


Iremos editar o arquivo extensions.conf e criaremos o CONTEXTO "faculdade".

      [faculdade]
      exten => 9010,1,Dial(SIP/araujo)
      exten => 9020,1,Dial(SIP/marcelo)

Em nosso primeiro contexto estamos apenas atribuindo os ramais e redirecionando as ligações para os usuários cadastrados no sip.conf.

Agora podemos startar o asterisk e efetuar nossa primeira ligação.

            nagazaki# asterisk -vvvvvvvvvc

8 - Exemplo de atendimento automático.

No arquivo extensions.conf inseri um novo CONTEXTO "atendimento" e inserir um novo ramal no CONTEXTO "faculdade".

     [faculdade]
     exten => 9030,1,Goto(atendimento,s,1)

     [atendimento]
     exten => s,1,playback(thanks)
     exten => s,2,Hangup()


Após reiniciar o asterisk, com esta configuração obtemos o seguinte ambiente:

Quando ligamos para o número 9030 no CONTEXTO faculdade, iremos ser redirecionados para o CONTEXTO [atendimento], onde este, tocará o arquivo "THANKS" e logo após irá se desconectar-se.

9 - Criando uma URA (Unidade de Resposta Audível).

Neste modelo, primeiro iremos gravar os prompts para a URA e logo após ver como tudo ficou.

O CONTEXTO [default] já vem por padrão configurado no asterisk.

            ;Gravando os PROMPTS para a URA
     [default]
     ; Bem Vindo, para falar com suporte técnico pressione 1, outras opções pressione 2.
     exten => 1000,1,Record(bemvindo:gsm)
     exten => 1000,2,Hangup()
     ; Suporte técnico
     exten => 1001,1,Record(suporte:gsm)
     exten => 1001,2,Hangup()
     ; Atendimento ao cliente.
     exten => 1002,1,Record(atendimento:gsm)
     exten => 1002,2,Hangup()

     exten => 0800,1,Goto(ura,s,1)

            [ura]
     exten => s,1,Ringing
     exten => s,2,Background(bemvindo)
     exten => s,3,Wait(2)
     exten => s,4,Hangup()

     exten => 1,1,Playback(suporte)
     exten => 1,2,Hangup()

     exten => 2,1,Playback(atendimento)
     exten => 2,2,Hangup()          

Agora existem 3 novas opções inseridas em nossos CONTEXTOS.

            Record = Grava em um arquivo de aúdio, podemos escolher o tipo de gravação, gsm, mp3 e etc...
            Wait = Aguarda alguns segundos antes de passar para a próxima opção do CONTEXTO.
            Background = Toca o arquivo de aúdio aguardando algum digito de resposta do usuário.
    
Discando para o número 0800, o asterisk ira nos redirecionar para o CONTEXTO [ura] na primeira regra s,1, iremos ouvir a chamada "bemvindo" e durante a chamada já poderemos escolher a opção para o próximo menu.

10 - Problemas e soluções.

O primeiro problema que encontrei configurando o sistema de URA, quando digitava alguma opção para o menu da URA, o asterisk não aceitava a sinalização e não passava para a outra opção escolhida.

Possuo um ATA da marca XAVi, e para arrumar este pequeno problema, mudei a opção do DTMF Type de "SIP Info" para "Out-of-Band(RFC2833)".

O segundo problema foi com um cliente externo conectado no asterisk, não conseguiamos nos comunicar, sem aúdio.
A solução foi aplicar na configuração SIP deste usuário externo a opção canreinvite=no, de forma que toda comunicação passase pelo Asterisk. Do contrário ele tentava estabelecer a comunicação com a outra ponta diretamente.

Em uma conversação com um cliente externo usando o Codec G711a, conseguimos claramente falar e escutar um ao outro, monitorando o uso do meu Link Internet, usando o software rate, a maior largura de banda usada no momento foi de 26Kbps.

    => Currently 23.02  kBps/100.36  pps, Average: 26.96 kBps/112.12  pps

11 - Conclusão.

A telefonia IP esta chegando aos poucos para os usuários finais, com a convergência de serviços em diversas operadoras no Brasil, em breve teremos uma modificação total dos planos de telefonia e links Internet.

As grandes empresas estão adotando a tecnologia VOIP para baratear custos em diversos campos de atuação, e já esta provado que o VOIP não é apenas mais um produto no mercado, e sim um recurso que deve e vai ser padrão na vida de todos nós. 

No Brasil, algumas empresas como a DigiVoice já estão comercializando hardware próprio para telefonia IP baseada em Asterisk, sem a necessidade de importar as placas.


Importante: este é o primeiro artigo de uma série; os outros artigos estão disponíveis em:


Marcelo Araujo
araujo at fug dot com dot br. 

Comentrios
Otimo artigo
Por Augusto em 09/07/2006 18:38:02
Muito bom artigo hein. Esta me ajudando bastante comecar mecher com asterisk.
Bacana
Por Joao Paulo - 0v3rm1nd em 10/07/2006 00:25:48
Vamos esperar os outros 2 artigos da serie. Gostei desse. Obrigado Marcelo Araujo.
Por Csar em 10/07/2006 09:00:26
Artigo legal!
Muito bom o contedo
Por Este endereo de e-mail est sendo protegido de spam, voc precisa de Javascript habilitado para v-lo em 13/07/2006 10:56:48
Muito bom o artigo, ainda mais se tratando de um assunto ainda muito pouco explorado, sou desenvolvedor, mas pretendo mudar radicalmente e me dedicar muito a esta rea, por isso sei q todo material de qualidade como este muito importante. 
 
Abrao.
Cade a segunda parte?
Por Mario Augusto em 15/07/2006 13:59:27
Nao saia essa semana? Cade? Quero ver =)
A segunda...
Por Eu em 17/07/2006 12:37:37
http://www.fug.com.br/content/view/112/9/
muito bom
Por Este endereo de e-mail est sendo protegido de spam, voc precisa de Javascript habilitado para v-lo em 21/08/2006 16:53:59
Gostei muito de seu artigo. Ele esta me ajudando muito pois sou estudante e estou fazendo uma pesquisa sobre o futuro da engenharia, espero que seus outros artigos saiam logo pra que possam assim como esse me ajudar na faculdade. 
obrigado natlia
Imagem
Por Este endereo de e-mail est sendo protegido de spam, voc precisa de Javascript habilitado para v-lo em 28/08/2006 17:38:45
Ola pessoal, acredito que para um efeito de facilitar a vida dos usuarios, ao mesmo passo em que estariamos alavancando o uso da distribuio, seria uma boa ideia colocar uma instalao completa em maquina virtual e trabalhar nesta instalao. Com manuais e tudo .conf bem comentado em um pequeno cenario para que o usuario no se atenha na instalao e no precise ir necessariamente para uma instalao completa, afinal, nem todo mundo tem FreeBSD instalado mas um vmware, isso perfeitamente factivel. 
S uma ideia!!
era isso que esta procurando.
Por leonardo em 12/10/2006 20:03:42
um salve a Marcelo e a todos que como eu admira muito o trabalho desse cara que me ajudou muito.trabalho com provedor de internet e estava querendo exatamente uma soluo como o asterisk oferece.vou aguardar as outas colunas.forte abrao.
Mais informacoes
Por Flint em 03/11/2006 12:05:37
Eae cara, blz? 
Me amarrei no tutorial. A tempos venho procurando algo parecido, sobre o asterisk no freebsd. 
Tenho algumas duvidas sobre o ambiente usado. 
Se houvesse um telefone ip o ATA nao se faria mais necessrio, certo? Para que eu instale mais telefones neste ambiente seria necessario um ATA de mais portas ou entao q todos tivessem telefones ips? 
Aguardo sua resposta! 
 
Agradeco desde ja: 
Flint
Parabens !
Por MuniX em 06/04/2007 22:46:32
poooo manow..mandou ver heimmm no tutorial....moooooooito show...explanacao tecnica ficou Exelenteeee Alto/Claro ...rsrs



ltima Atualizao ( 16/07/2006 )
 
< Anterior   Prximo >
FUG-BR - Espalhando BSD
Dicas Rpidas:
# split -b 1m grande parte
Quebra o arquivo em partes de 1mb

# split -b 1500k grande parte
Quebra o arquivo em partes de 1.5mb
 






Wallpapers
Online:
Ns temos 15 visitantes online


Devil Store - Sua loja BSD
FreeBSD Brasil LTDA

FUG-BR: Desde 1999, espalhando BSD pelo Brasil.