1. Introduo
Voice over IP (VoIP) uma tecnologia que permite a realizao de chamadas atravs de
uma rede IP qualquer. Com sua utilizao os pacotes de voz so digitalizados, trafegam
pela rede e, ao sair, so convertidos novamente para o formato analgico original.
Assim, telefones comuns tambm podem se aproveitar da tecnologia tendo apenas que
utilizar um conversor.
A tecnologia foi o resultado do esforo de algumas pessoas em Israel no ano de
1995 quando a comunicao PC-to-PC estava apenas no incio. Logo em seguida o
primeiro software VoIP apareceu, criado pela VocalTec, Inc. Infelizmente, para que duas
pessoas conseguissem utiliz-lo, era necessrio que tivessem o mesmo programa. Alm
disso, havia incompatibilidade nos drivers, tornando as chamadas half-duplex (apenas
um canal de voz liberado por vez ou o usurio fala ou escuta) e a qualidade das
chamadas no chegava perto da que era oferecida pelos equipamentos padro em uso na
poca. Apesar do insucesso, tudo isto foi uma grande inovao [1].
O crescimento da tecnologia foi marcante nos anos 2000, quando grandes
empresas da rea de redes tais como a Cisco e a Lucent comearam a desenvolver e
lanar no mercado equipamentos que pudessem rotear corretamente o trfego dos
pacotes de voz [3]. Com isso, o servio de telefonia VoIP comeou a ser includo no
servio de acesso Internet de banda larga por empresas como a AT&T, Time Warner e
Verizon, dando aos usurios a possibilidade de efetuar e receber chamadas VoIP [4].
Uma das vantagens do seu uso a drstica reduo de despesas com telefonia
convencional, pois nesta a tarifao calculada em funo das distncias geodsicas e
dos horrios de utilizao definidos por empresas telefnicas [2].
Com os crescentes custos de manter uma linha telefnica convencional e o
aumento das tarifas, a utilizao de provedores VoIP por usurios obteve um
crescimento considervel. Segundo [5], o nmero de usurios passou de 150 mil no final
de 2003 para 1.2 milhes no final de 2004. No final de 2005 o crescimento foi mais que
o triplo: 4.2 milhes de usurios residenciais. Os nmeros so auditorados pela
Telecommunications Industry Association e no incluem conexes VoIP diretas entre
computadores.
Tambm foi notvel o crescimento nos setores empresariais. Note que em apenas
trs anos (2002 a 2005) a utilizao da tecnologia cresceu consideravelmente, passando
de cerca de 2,5% para mais de 10% (Figura 1).
Session Initiation Protocol (SIP) [12] e o Inter-Asterisk Exchange (IAX) [13]. Alm
disso oferece uma gama de servios presentes nos PBX atuais como caixa postal,
conferncias, chamada em espera e atendimento automtico. Sua principal vantagem a
eliminao de sistemas PBX caros e complexos, j que um simples computador rodando
Linux e o Asterisk consegue simular com eficincia todas as aes de um hardware
PBX.
Este mini-curso demonstra um estudo de caso completo, abrangendo a
instalao, a configurao e a utilizao do Asterisk em uma pequena rede e um servidor
utilizando o Slackware Linux 10.2 [15]. O estudo de caso tambm envolve a utilizao
de um cliente para estabelecimento de chamadas.
2. Instalao do Asterisk
Uma das maneiras de ter o Asterisk instalado atravs do seu cdigo fonte. Desta
maneira necessrio realizar uma compilao do cdigo para obter um binrio relativo.
Para isto sero necessrias as ferramentas GNU Compiler Collection (GCC) [16] e GNU
Make [17], verses 3.3.6 e 3.80, respectivamente, para o processo. Ambas esto
presentes, por padro, no Slackware Linux 10.2.
Primeiramente deve-se efetuar o download do cdigo-fonte do Asterisk, que
encontra-se disponvel na sua pgina oficial [10]. O processo ser efetuado totalmente
em modo texto, sendo necessrio utilizar o wget [18] para fazer o download (Tabela 1).
No necessrio instalar o wget, ele j est presente no Slackware Linux 10.2 (Figura 3).
$ cd /home/exemplo
$ wget http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.10.tar.gz
$ tar zxf asterisk-1.2.10.tar.gz
$ cd asterisk-1.2.10
$ make
Aps os passos descritos na Tabela 1 o Asterisk estar compilado, mas ainda no
ser possvel inici-lo (Figura 5). Para isso, necessrio que os arquivos gerados na
compilao sejam colocados em diretrios especficos como o /usr/bin e o /usr/lib e que
algumas permisses especiais sejam aplicadas a estes arquivos. Esta a funo do
comando make install (Figura 6).
Agora o Asterisk estar realmente instalado, mas para que ele funcione ainda
necessrio: (i) gerar os arquivos de configurao padro e (ii) coloc-los em locais
apropriados. Os processos de instalao e gerao dos arquivos de configurao esto
descritos na Tabela 2 e devem ser executados com acesso de administrador do sistema
(ou root), indicados pela cerquilha no incio de cada linha, e devem ser executados
dentro do diretrio no qual o Asterisk foi compilado.
# make install
# make samples
3. Os protocolos de sinalizao
Um protocolo pode ser comparado analogamente a uma linguagem: um conjunto de
regras pr-estabelecidas para definir um padro de comunicao. Protocolos de
sinalizao trabalham enviando sinais para um destino. Estes sinais podem indicar um
pedido, resposta ou apenas um aviso.
Os trs protocolos de sinalizao mais utilizados so o SIP [12], o IAX [13] e o
H.323 [19]. Os trs exercem funes de sinalizao, porm o IAX e o H.323 no prezam
pela simplicidade e tambm incluem na sua definio outros mtodos como os de
transmisso de mdia.
Considere a situao da figura acima, onde o cliente1 quer efetuar uma chamada para o
cliente2. Inicialmente o cliente1, identificado por cliente1@dynamicsoft.com, envia um
pedido INVITE para o proxy dynamicsoft.com (passo 1). Este encaminha o pedido para
outro servidor, columbia.edu, procurando por cliente2@columbia.edu (passo 2). Como
columbia.edu um redirect server, ele procura em seu banco de usurios por cliente2 e
retorna uma resposta para o proxy server com o seu endereo real (passo 3).
O proxy server dynamicsoft.com, aps receber a resposta, envia o INVITE para o
proxy server que foi informado, foo.com (passo 4). O servidor, aps consultar seus
registros (passo 5), descobre que cliente2 est localizado no subdomnio sales.foo.com e
encaminha o INVITE para outro proxy, sales.foo.com (passos 6 e 7).
Este proxy consulta no seu banco de dados e descobre que cliente2 est
utilizando o computador pc1. Assim, o proxy associa cliente2 mquina utilizada e
repassa o INVITE para cliente2@pc1.sales.foo.com (passo 8). Como cliente2 no est
em uma chamada, ser enviada uma resposta 200 OK aceitando-a. Outras respostas
poderiam ter sido enviadas: 486 Busy Here caso o cliente2 estivesse em outra ligao ou
no desejou atend-la, deixando tocar at cair ou 600 Busy Everywhere, caso o cliente
estivesse realmente ocupado e no desejasse atender a ligao. A resposta volta, atravs
dos proxies para cliente1@dynamicsoft.com (passos 9, 10, 11 e 12), que envia um
reconhecimento (ACK) (passo 13). Em seguida, a sesso iniciada e a mdia passa a
trafegar (passo 14).
Caso algum dos clientes resolva terminar a chamada, este envia uma mensagem
BYE para o outro cliente, que envia uma resposta 200 OK confirmando o seu trmino
[7].
quantidade de dados para determinar quanto (desta quantidade) pode ser retirado, desde
que a qualidade seja mantida ou a perda seja mnima. O processo inverso chamado
decodificao e os dados retirados para efetuar a codificao so reutilizados no
processo. A decodificao s pode ser realizada utilizando o mesmo codec que foi
empregado na codificao. Isto significa que se a pessoa A tenta enviar dados
codificados para a pessoa B utilizando um codec X qualquer a pessoa B deve ter o
mesmo codec X para decodificar os dados.
Em se tratando de telefonia, o papel de um codec transformar um sinal
analgico qualquer em sinal digital para que este possa trafegar por algum meio e,
aps sair do meio digital, o sinal convertido de volta para analgico. Um simples
exemplo desta situao: dois telefones conectados em duas linhas analgicas distintas,
estas conectada a um sistema de telefonia digital. Caso um telefone tente entrar em
contato com o outro atravs do sistema digital, que pode ser um PABX utilizando o
Asterisk, o sinal analgico ser convertido para que possa trafegar por todo o sistema
digital e em seguida, ao sair, ser transformado em analgico novamente.
Os codecs mais utilizados em conjunto com o Asterisk so os padres americano
e europeu do G.711 [29] (ulaw e alaw, respectivamente), GSM [30] e Speex [31].
[general]
context=padrao
bindport=5060
bindaddr=10.1.1.3
disallow=all
allow=gsm
Os outros blocos de configurao do sip.conf ficam reservados para a adio de
clientes. Novamente, existem vrias opes de configurao. Prezando pela simplicidade,
apenas as mais importantes sero explicadas. As opes que aparecem no sip.conf so
context, type, username, secret, voicemail, canreinvite, qualify, host e nat.
Um bloco iniciado sempre com o seu nome entre colchetes. Este nome o que
ser utilizado no extensions.conf. Pode ser constitudo de letras e nmeros e
geralmente definido como o nmero do ramal do cliente.
[Professor]
context=minicurso
type=friend
username=prof
secret=prof
voicemail=prof
canreinvite=no
qualify=700
host=dynamic
nat=no
6.3. extensions.conf
Pode-se dizer que o arquivo extensions.conf o corao do Asterisk. Nele todas as
instrues de discagem ficam armazenadas. Um ramal s pode ser chamado
corretamente se houver uma linha relativa a ele (ou uma configurao que permite a
discagem de uma faixa de ramais) no arquivo.
O arquivo estruturado em blocos ou sees cada um tem seu nome entre
chaves de maneira semelhante a um arquivo .ini do Microsoft Windows. Uma seo
pode conter configuraes gerais ou planos de discagem as sees que contm planos
de discagem so conhecidas como contextos. O extensions.conf tambm pode conter
comentrios cada linha destes deve ser precedida por um ponto-e-vrgula.
A primeira seo do extensions.conf a general. Nela encontram-se as
configuraes gerais e cada varivel booleana aqui definida com um yes ou no. Existem
5 variveis definidas no bloco general: static, writeprotect, autofallthrough,
clearglobalvars e priorityjumping. A opo static define se possvel salvar o plano
de discagem atravs da command-line interface (CLI) do Asterisk. Apesar de vir
predefinida como yes pode ser perigoso mant-la ativa caso algum alm do
administrador tenha acesso ao sistema [8].
O segundo bloco do extensions.conf chamado de globals e utilizado para
definir variveis globais, constantes e seus valores iniciais. As variveis definidas no
Asterisk, assim como as constantes, possuem a sintaxe ${NomeDaVariavel} e no so
case-sensitive. Ou seja, as variveis EXEMPLO e Exemplo so iguais, assim como
qualquer variao de minsculas e maisculas contendo a palavra exemplo, e sero
interpretadas como sendo a mesma varivel pelo Asterisk. Por conveno, variveis
globais sempre estaro escritas em letras maisculas isto ajudar a diferenciar as
variveis globais das variveis de canais (ou variveis locais), que estaro todas em letras
minsculas (Tabela 3).
Tabela 3. Exemplos de declarao de variveis.
[globals]
; Por quanto tempo as extenses devem tocar antes de cair no Voicemail?
TEMPOTOQUE => 3
; Arquivo de som que ser tocado como anncio do Voicemail
ANUNCIOVM => sons/anuncio-vm
Apesar disso, apenas definir variveis no facilitar o seu trabalho (e nem mesmo
dificultar). Como em toda linguagem de programao (o extensions.conf tem a sua),
variveis e constantes foram criadas para ser utilizadas [9].
A terceira parte do extensions.conf constituda de blocos chamados Contextos.
Estes, por sua vez, contm as extenses que permitem a discagem de um nmero.
Vrios contextos podem ser definidos na configurao, bem como extenses (veja
exemplos na Tabela 4) [26].
101 (Presidente);
103 (Recepo);
1 (Caixa de mensagens);
# (Desligar chamada).
Contexto menu:
1 (Departamento de vendas);
2 (Suporte).
[minicurso]
exten => 1,1,Ringing
exten => 1,2,Wait,2
exten => 1,3,VoicemailMain(${EXTEN})
exten => 101,1,Dial(SIP/Professor,20,t)
Note que existem trs linhas referentes extenso 1: a primeira faz o telefone
tocar, a segunda mantm o telefone tocando por dois segundos e a terceira direciona o
usurio para sua caixa de mensagens. A extenso 101 faz com que o cliente chamado
Professor, configurado no protocolo SIP, seja chamado. Seu telefone tocar durante
20 segundos (aps os 20 segundos a chamada encerrada com uma mensagem de
usurio indisponvel).
6.4. voicemail.conf
O arquivo voicemail.conf o responsvel por manter todas configuraes das caixas de
mensagens dos clientes. Tambm organizado em blocos e deve possuir no mnimo
duas, general e default. Estas definem as opes gerais do servio voicemail e os
endereos das caixas de mensagens dos clientes, respectivamente.
[general]
format=wav49
maxmsg=30
[default]
101 => 101, Professor, professor@teste.com.br
Referncias
[1]
Intertangent
Technology
Directory.
Brief
History
http://www.intertangent.com/023346/Articles_and_News/1477.html,
27/05/2006.
of
VoIP,
acessado em
[2]
Wikipdia,
a
enciclopdia
livre.
Voz
sobre
IP,
http://pt.wikipedia.org/w/index.php?title=Voz_sobre_IP&oldid=2204805, acessado
em 29/05/2006.
[3]
Whichvoip.
The
History
of
VoIP,
http://www.whichvoip.com/voip/articles/voip_history.htm, acessado em 31/05/2006.
[4]
Wikipedia,
the
free
encyclopedia.
Voice
over
IP,
http://en.wikipedia.org/w/index.php?title=Voice_over_IP&oldid=56267368, acessado
em 31/05/2006.
PBX,
[7] ICMI/Call Center Magazine Network. The Session Initiation Protocol (SIP): A Key
Component
for
Internet
Telephony,
http://www.cconvergence.com/GLOBAL/stg/commweb_shared/shared/article/showA
rticle.jhtml?articleId=8700868&pgno=2, acessado em 06/06/2006.
[8]
VoIP-Info.org.
Asterisk
Dialplan
General,
http://www.voipinfo.org/wiki/index.php?page=Asterisk+Dialplan+General, acessado em 15/06/2006.
[9]
VoIP-Info.org.
Asterisk
Dialplan
Globals,
http://www.voipinfo.org/wiki/index.php?page=Asterisk+Dialplan+Globals, acessado em 20/06/2006.
Exchange.
http://www.cornfed.com/iax.pdf,
acessado
em
H.323,
acessado em
Protocol,
http://www.voipacessado
em