Sei sulla pagina 1di 8

VoIP e Asterisk – Comunicação SIP

RENATO RESENDE BATISTA

Faculdade de Tecnologia Senac Goiás


Goiânia/Goiás – Brasil

RESUMO Telefonia Comutada (RPTC) ou Public Switched


Telephone Network (PSTN) em inglês. A RPTC
Hoje a comunicação caminha para uma consiste numa rede projetada especificamente
unificação onde uma única rede poderá entregar para o serviço de telefonia. Utiliza a comutação
vários conteúdos como dados, vídeo e voz, de circuitos para que uma chamada seja
intitulada como convergência. A voz sobre IP efetivada, garantindo a disponibilidade do circuito
vem para levar voz às redes de dados, hoje já é até o final da ligação, porém uma RPTC não
realidade e a cada dia vem crescendo ainda atende todas as necessidades existentes hoje.
mais, portanto faz-se necessário entender seu As redes de voz estão convergindo para uma
funcionamento. rede única, geralmente operando sobre o
Internet Protocol (IP).
Palavras-chave: VoIP, Asterisk, SIP, Telefonia,
Convergência Alguns fatores que levam a migração de voz
para redes IP são:
● Várias redes que foram originalmente
ABSTRACT criadas para transportar voz hoje
transportam dados, porém dados tem
Today the media is moving towards a unification necessidades especiais como o uso
where one network can deliver more content variável de largura de banda e alta
such as data, video and voice communication disponibilidade de banda, o que passa a
called convergence. Voice over IP is to bring diferenciar então o conteúdo entregue é
voice to data networks, today is a reality and a aplicação ao invés de circuitos
every day is growing even more, so it is físicos[1].
necessary to understand its operation. ● Outro fator é que uma RPTC não pode
criar e entregar serviços com rapidez
necessária. Numa RPTC apenas os
Keywords: VoIP, Asterisk, SIP, Telephony, fabricantes de equipamentos
Convergence desenvolvem aplicações para os
mesmos, diferente de uma rede IP onde
qualquer um pode desenvolver uma
1. INTRODUÇÃO aplicação[1].
● Dados/Voz/Vídeo não podem ser
A cada dia as redes vêm evoluindo, rumando à convergidos na RPTC, é necessário um
convergência, uma das áreas que cada vez mais novo tipo de rede chamada NGN onde a
faz uso de redes antes criadas para dados é a mesma é criada e otimizada para
voz, conseguindo dessa forma alcançar grande transportar qualquer tipo de tráfego[2].
economia de recursos e gerenciamento pois ● A arquitetura construída para voz não é
basta que uma empresa possua uma boa rede suficientemente flexível para transportar
para utilizar voz/dados/vídeo numa mesma infra- dados.
estrutura. Esse artigo vem mostrar a teoria ● Para uma chamada de voz na RPTC é
básica por trás de VoIP e também a configuração necessário um circuito de 64kbps
simples de um servidor de voz através da permanente entre os telefones
ferramenta Asterisk. chamados, diferente de uma rede de
dados que utiliza a banda disponível
apenas quando necessário, essa é uma
2. CONCEITOS das maiores vantagens de redes de voz
baseadas em pacotes.
Para entender Voz Sobre IP (VoIP) é necessário VoIP consiste em utilizar uma rede IP para
entender o funcionamento da Rede Pública de transportar voz, diferente de uma RPTC, a rede

1
IP é composta por pacotes e não por circuitos inteligentes, descrito pela RFC 3261.
comutados.(cisco, p47)

Em uma rede IP a aplicação não precisa ser 2.2 Sinalização Telefônica


conhecida, a rede IP simplesmente transporta os
dados fim-a-fim. Para o correto funcionamento da RPTC é
necessário a utilização de sinalização telefônica.
Para transportar tráfego em tempo real numa Assim como numa rede de dados, para iniciar
rede de dados foi criado o Protocolo de uma transmissão UDP ou uma conexão TCP são
Transporte em Tempo Real (RTP – Real Time utilizados alguns pacotes dedicados a isso ou no
Transport Protocol), em adição ao cabeçalho caso de uma confirmação TCP do tipo ACK. Em
UDP (User Datagram Protocol)/IP. É a peça uma rede telefônica também existe a sinalização
chave para o transporte de tráfego em tempo para o controle de chamadas.
real numa rede IP pois fornece uma referência
temporal (timestamp). Em RPTC são usadas vários tipos de
sinalizações, como de central para central ou
Além da utilização do RPT, para que a telefone para central ou central para telefone.
comunicação seja efetuada com qualidade, é Por exemplo, no caso de uma ligação sendo
necessário aplicar Qualidade de Serviço (QoS) efetuada, um usuário tira o telefone do gancho,
numa rede, a fim de que pacotes de voz tenham recebe um sinal de linha disponível, digita o
prioridade sobre os demais, e que a variação não número para o qual deseja discar, a central
seja superior em média a 100ms. então se comunica com a outra central onde
existe o número instalado, a central do
Em redes IP, é comum a ocorrência de perda de destinatário então envia outro sinal ao telefone
pacotes. O União Internacional de do usuário chamado, quando o usuário atender o
Telecomunicações – Setor de Telecomunicações telefone, é efetuada então a conexão entre os
(ITU-T) recomenda um atraso unidirecional não dois telefones.
maior do que 150 ms para o perfeito
funcionamento do VoIP. 2.3 SIP

O RTP tem um campo que exibe o exato instante O Protocolo de controle de chamada utilizado
em que o pacote foi enviado (timestamp RTP) e para o desenvolvimento desse artigo foi o
é usada pelo dispositivo que recebe o fluxo de Session initiation Protocol (SIP), pois trata-se de
áudio. É utilizado para verificar a ordem dos um protocolo baseado em texto semelhante ao
pacotes e se foi recebido quando esperado. É HTTP ou SMTP. O SIP é um protocolo peer-to-
usado para transmitir de forma correta o fluxo de peer (p2p) ou seja, distribui as capacidades de
áudio calculando e corrigindo atrasos como de rede entre todos os nós dentro da rede SIP,
um jitter. diferente do RPTC onde os dispositivos de
usuário final são totalmente dependentes da
2.1 Controle de chamadas central de comutação.
Da mesma forma que numa RPTC, são 2.4 Funcionalidades do SIP
necessários protocolos para controlar as
chamadas. Os principais protocolos de controle
• Localização de usuários: fornece
de chamada VoIP são SIP, H.323, MGCP e
H.248/MEGACO. capacidade de descoberta de localização
• O H.323 - É o mais antigo, e é uma
do usuário.
• Capacidade do usuário: permite
recomendação do ITU-T, é um protocolo
complexo onde o suporte a voz é apenas determinar a capacidade de mídia dos
uma das aplicações que o mesmo suporta. dispositivos que estão envolvidos na
• O MGCP - Para reduzir o custo dos
sessão.
• Disponibilidade do usuário: permite
equipamentos terminais implementa
gateways para controlar uma sessão. determinar se um usuário final participar
• O H.248/MEGACO – É um padrão
ou não da comunicação.
• Configuração de sessão: permite o
publicado pelo ITU e Internet Engineering
Task Force (IETF) que separa a lógica do estabelecimento de parâmetros de sessão
controle de chamadas da lógica de para os dispositivos envolvidos.
• Manipulação da sessão: permite a
processamento de mídia.
• O SIP – É baseado em mídias e permite
modificação, transferência e finalização de
que dispositivos terminais sejam mais uma sessão.

2
2.5 Elementos de rede SIP • Session Description Protocol (SDP)
usado para descrever os parâmetros de
Uma rede SIP engloba os seguintes dispositivos: sessão,
• RTP – trasporta os dados em tempo real,
• User Agent (UA): inicia ou responde • ReSerVation Protocol (RSVP) – Usado
transações SIP. Um UA pode atuar tanto para reservar recursos da rede,
como cliente quanto servidor. Pode ou não • TLS – Privacidade e integridade,
interagir com um usuário. Um UA é • Simple Traversal of User Datagram
statefull. Protocol (STUN) – Permite que clientes
• User Agent Client(UAC): inicia ou aceita dentro de uma rede usando NAT descubram
respostas SIP. Ex. Um telefone SIP seu endereço IP válido.
iniciando uma chamada ou um Proxy SIP
redirecionando uma requisição. Abaixo exemplo de uma rede comum SIP[3]:

• User Agent Server (UAS): aceita


requisições SIP e envia de voltas respostas 2.6 Estrutura de Mensagens SIP
SIP.
• Proxy: uma entidade intermediária 2.6.1 Endereçamento Sip
responsável por dar seguimento à
requisições SIP ao UAS alvo ou para outro Endereços SIP identificam um usuário/recurso
Proxy. Realiza primordialmente o numa rede, são denominados SIP URI, pode
roteamento numa rede SIP, também é possuir o seguinte formato:
responsável pela autenticação, pode ser
stateless ou statefull. sip:usuário@domínio:porta
• Servidor de redirecionamento: sip:usuário@host:porta
fornecer a resolução de nome e locação do
usuário. O servidor de redirecionamento SIP 2.6.2 Mensagens SIP
reponde ao pedido do User Agent
fornecendo informações sobre o endereço Requisições SIP – São mensagens enviadas
do servidor para que o cliente possa para solicitar uma operação SIP, podem ser:
contatar o endereço diretamente.
• Servidor de registro: é um UAS que • INVITE – Envia uma solicitação para
aceita requisições SIP REGISTER e inciar uma sessão.
atualização de localização em uma base de • ACK – Confirma que recebeu a
dados. solicitação INVITE.
• OPTIONS – Um UA envia essa
O SIP por si só não é capaz de estabelecer uma requisição para consultar as
sessão. Portanto faz uso de vários outros capacidades do UAS.
protocolos tais como: • BYE – Usada para encerrar uma sessão
existente.
• DNS, • CANCEL – Usada para cancelar uma

3
requisição. 100 a 699 e são agrupadas no formato 1xx, 2xx
• REGISTER – Usada para que um cliente até 699, podem ser classificadas como
registrar sua localização. provisórias ou finais. Uma resposta provisória
indica progresso mas não indica o resultado do
Respostas SIP – Um servidor envia uma processamento de uma requisição. Uma
resposta ao cliente a fim de indicar o status de resposta final indica o término e status final.
uma requisição SIP enviada. São numeradas de

Tabela de Respostas SIP[4]

Códigos Respostas Principais Mensagens


1xx Informativas 100 Trying
180 Ringing
181 Call forwarded
182 Queued
183 Session Progress (Early Media)
2xx Sucesso 200 OK
202 Accepted
3xx Redirecionamento 300 Multiple Choices
301 Moved Perm
302 Moved Temp
380 Alternative Serv
4xx Falhas de requisições 400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
405 Bad Method
415 Unsupp Content
420 Bad Extensions
486 Busy Here
5xx Falhas no Servidor 504 Timeout
503 Unavailable
501 Not Implemented
500 Server Error
6xx Falhas Globais 600 Busy Everywhere
603 Decline
604 Doesn’t Exist
606 Not Acceptable

2.6.3 Estrutura de mensagens SIP

Uma mensagem SIP contém os seguintes elementos:

• Uma linha de início,


• Um ou mais cabeçalhos,
• Uma linha em branco indicando o fim do cabeçalho,
• Um corpo de mensagem (opcional).

Requisição SIP
INVITE sip:06284233400@sip.g8telecom.com.br SIP/2.0 Cabeçalho
Via: SIP/2.0/UDP 10.62.102.108:5060;branch=z9hG4bK-d7112b3e
From: 51008147
<sip:51008147@sip.g8telecom.com.br>;tag=fc250fad46feae66o0
To: <sip:06284233400@sip.g8telecom.com.br>

4
Call-ID: 6aab1279-7e1daa0a@10.62.102.108
CSeq: 101 INVITE
Max-Forwards: 69
Contact: 51008147 <sip:51008147@10.62.102.108:5060>
Expires: 240
User-Agent: Linksys/PAP2-3.1.9(LSc)
Content-Length: 426
Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS,
REFER
Supported: x-sipura
Content-Type: application/sdp
Linha em branco entre os campos
v=0 Corpo SDP na mensagem SIP
o=- 8228784 8228784 IN IP4 10.62.102.108
s=-
c=IN IP4 10.62.102.108
t=0 0
m=audio 16444 RTP/AVP 18 0 2 4 8 96 97 98 100 101
a=rtpmap:18 G729a/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:2 G726-32/8000
a=rtpmap:4 G723/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:96 G726-40/8000
a=rtpmap:97 G726-24/8000
a=rtpmap:98 G726-16/8000
a=rtpmap:100 NSE/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:30
a=sendrecv

Resposta SIP
SIP/2.0 200 OK Cabeçalho
Via: SIP/2.0/UDP
189.50.126.51;branch=z9hG4bK188b.e3e0c1d1.0;received=189.5
0.126.51
Via: SIP/2.0/UDP
10.62.102.108:5060;rport=22628;received=200.103.96.98;branch=
z9hG4bK-1a70f95b
Record-Route:
<sip:189.50.126.51;lr;ftag=fc250fad46feae66o0;nat=yes>
From: 51008147
<sip:51008147@sip.g8telecom.com.br>;tag=fc250fad46feae66o0
To: <sip:06284233400@sip.g8telecom.com.br>;tag=as65ded6fc
Call-ID: 6aab1279-7e1daa0a@10.62.102.108
CSeq: 102 INVITE
User-Agent: G8 Telecom
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER,
SUBSCRIBE, NOTIFY, INFO
Supported: replaces
Contact: <sip:06284233400@189.50.126.50>
Content-Type: application/sdp
Content-Length: 357
Linha em branco entre os campos
v=0 Corpo SDP na mensagem de resposta

5
o=root 31103 31104 IN IP4 189.50.126.50 200 OK
s=session
c=IN IP4 189.50.126.50
t=0 0
m=audio 11108 RTP/AVP 18 8 0 4 101
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:4 G723/8000
a=fmtp:4 annexa=no
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv

Diagrama de um fluxo SIP:

2.7 Asterisk doxygen linux-headers-`uname -r` module-


assistant.
Asterisk é um software livre cuja função é
transformar um computador em um servidor de 3.1 Download
comunicação de voz.
Para a instalação, foi necessário o download dos
3 Desenvolvimento fontes abaixo no link
http://downloads.asterisk.org/pub/:
O serviço Asterisk foi instalado num servidor
Debian: asterisk-1.4.26.2.tar.gz
asterisk-addons-1.4.9.tar.gz
Pacotes necessários para a instação do Asterisk: libpri-1.4.10.1.tar.gz
bison openssl libssl-dev libusb-dev fxload
libasound2-dev libc6-dev libnewt-dev 3.2 Instalação
libncurses5-dev zlib1g-dev gcc g++ make

6
3.2.1 Compilando a biblioteca Libpri ./configure
make
Para a compilação deve-se seguir uma ordem: make install
libpri, asterisk, asterisk-addons.
3.3 Inicializando o Asterisk
3.2.2 Compilando o Asterisk
Existem 2 formas de iniciar o asterisk, a primeira
No diretório descompactado bastou executar os delas é através do script: /etc/init.d/asterisk
comandos: start ou executando o binário diretamente:
/usr/sbin/asterisk -h.
./configure
make 3.3.1 Prompt do Asterisk
make install (instala os binários)
make samples (opcional, instala exemplos) Para acessar o console do asterisk basta utilizar:
make config (cria os scripts de inicialização em asterisk -vvvr onde cada v vem de verbose
/etc/init.d/) mode, ou seja, cada v, acrescenta uma linha
make progdocs (documentação) abaixo do prompt interativo do Asterisk.
Executando-se o comando acima tem-se uma
3.2.3 Compilando o Asterisk-addons tela parecida com a abaixo:

# asterisk -vvvr
Asterisk 1.4.26.2, Copyright (C) 1999 - 2008 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
== Parsing '/etc/asterisk/asterisk.conf': Found
== Parsing '/etc/asterisk/extconfig.conf': Found
Connected to Asterisk 1.4.26.2 currently running on asterisk (pid = 1634)
Verbosity is at least 3
-- Remote UNIX connection
asterisk*CLI>

3.4 Configuração secret = 12345 ; Senha


host = dynamic ; Host com ip dinâmico
3.4.1 Configuração dos ramais SIP nat = yes ; Se host está em uma rede com NAT
habilitado
Abaixo a configuração do arquivo sip.conf, canreinvite = no ; Não encaminha chamadas
responsável pela criação dos ramais SIP, allow = gsm ; Codec utilizado
utilizados nesse artigo . context = grupo1 ; Adiciona o usuário ao grupo1

[general] [6601]
context = default ; Para recebimento de type = friend
chamadas. callerid = "6601" <;6601>
bindport = 5060 ; Porta utilizada pelo protocolo username = 6601
SIP. secret = 12345
bindaddr = 0.0.0.0 ; Ouve todas as redes. host = dynamic
srvlookup = yes ; Aceita hosts utilizando FQDN nat = yes
disallow = all ; Desabilita todos os codecs canreinvite = no
allow = gsm ; Habilita o codec gsm allow = gsm
context = grupo1
[6600]
type = friend ; Faz e recebe chamadas Com a configuração acima, basta criar o plano
callerid = "6600" <;6600> ; Nome que aparecerá de discagem para poder utilizar os ramais
no identificador de chamadas através de clientes SIP.
username = 6600 ; Usuário

7
3.4.2 Plano de discagem softfone para que os ramais falem entre si e o
usuário tenha um serviço de telefonia simples
Para começar a utilizar o Asterisk é necessário operando sobre uma rede IP.
criar um plano de discagem, que nada mais é do
que configurar a forma como o Asterisk trata
chamadas de entrada/saída, é uma lista de 4. Conclusão
instruções ou passos que o Asterisk tem que
seguir. Após estudar e configurar de forma simples um
Os planos de discagem são configurados no servidor de Voz numa rede IP, vimos que a
arquivo extensions.conf [5]. utilização de VoIP traz muitos resultados
positivos, além de uma economia, pois pode ser
Abaixo a configuração do arquivo utilizado VoIP para uma ligação de longa
extensions.conf distância ou internacional até a localidade
destino, só então a ligação sendo transferida
[grupo1] para a RPTC, além do fato de ter uma única
exten => 6600,1,Dial(SIP/6600,25) rede convergente onde todos os serviços
exten => 6600,2,Hangup utilizam a mesma infra-estrutura.

exten => 6601,1,Dial(SIP/6601,25)


exten => 6601,2,Hangup 5. Referências

A configuração acima associa 2 ramais SIP [1] Jonathan Davidson et al Fundamentos de


criados anteriormente a 2 números e indicam os VoIP. 2.Ed. Bookman, 2008
passos a serem seguidos onde o primeiro passo
indica que o ramal pode efetuar/receber ligações [2]http://www.teleco.com.br/tutoriais/tutorialn
e que o tempo chamando o ramal, se o mesmo gnims1/pagina_2.asp – acessado em
estiver registrado será de 25 segundos, o 11/12/2009
segundo passo indica que a ligação será
encerrada caso a mesma não seja atendida no [3]http://www.cisco.com/en/US/docs/voice_ip
período configurado anteriormente. _comm/sip/proxies/2.1/administration/guide/1
over.html em acessado em 4/12/2009
Uma vez feito isso basta reiniciar o serviço para
que os ramais estejam ativos com os comandos [4]http://www.madeira.eng.br/wiki/index.php?
sip reload e dialplan reload no prompt do page=SIP acessado em 4/12/2009
Asterisk.
[5] Jim Van Meggelen et al Asterisk: The Future
asterisk*CLI> sip reload of Telephony, Second Edition O'Reilly 2007
Reloading SIP
== Parsing '/etc/asterisk/sip.conf': Found
== Parsing '/etc/asterisk/users.conf': Found
== Parsing '/etc/asterisk/sip_notify.conf': Found

asterisk*CLI> dialplan reload


Dialplan reloaded.
== Parsing '/etc/asterisk/extensions.conf':
Found
-- Registered extension context 'grupo1'
-- Added extension '6600' priority 1 to grupo1
-- Added extension '6600' priority 2 to grupo1
-- Added extension '6601' priority 1 to grupo1
-- Added extension '6601' priority 2 to grupo1
== Parsing '/etc/asterisk/users.conf': Found
asterisk*CLI>

Após recarregar as configurações, basta


configurar, seja um Adaptador de Telefone
Analógico (ATA) ou telefone SIP ou ainda um

Potrebbero piacerti anche