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

voip_e_asterisk_–_comunicacao_sip

  • Upload
    zenatuz

  • View
    97

  • Download
    0

Embed Size (px)

Citation preview

VoIP e Asterisk – Comunicação SIP

RENATO RESENDE BATISTA

Faculdade de Tecnologia Senac GoiásGoiânia/Goiás – Brasil

RESUMO

Hoje a comunicação caminha para uma unificação onde uma única rede poderá entregar vários conteúdos como dados, vídeo e voz, intitulada como convergência. A voz sobre IP vem para levar voz às redes de dados, hoje já é realidade e a cada dia vem crescendo ainda mais, portanto faz-se necessário entender seu funcionamento.

Palavras-chave: VoIP, Asterisk, SIP, Telefonia, Convergência

ABSTRACT

Today the media is moving towards a unification where one network can deliver more content such as data, video and voice communication called convergence. Voice over IP is to bring voice to data networks, today is a reality and every day is growing even more, so it is necessary to understand its operation.

Keywords: VoIP, Asterisk, SIP, Telephony, Convergence

1. INTRODUÇÃO

A cada dia as redes vêm evoluindo, rumando à convergência, uma das áreas que cada vez mais faz uso de redes antes criadas para dados é a voz, conseguindo dessa forma alcançar grande economia de recursos e gerenciamento pois basta que uma empresa possua uma boa rede para utilizar voz/dados/vídeo numa mesma infra-estrutura. Esse artigo vem mostrar a teoria básica por trás de VoIP e também a configuração simples de um servidor de voz através da ferramenta Asterisk.

2. CONCEITOS

Para entender Voz Sobre IP (VoIP) é necessário entender o funcionamento da Rede Pública de

Telefonia Comutada (RPTC) ou Public Switched Telephone Network (PSTN) em inglês. A RPTC consiste numa rede projetada especificamente para o serviço de telefonia. Utiliza a comutação de circuitos para que uma chamada seja efetivada, garantindo a disponibilidade do circuito até o final da ligação, porém uma RPTC não atende todas as necessidades existentes hoje. As redes de voz estão convergindo para uma rede única, geralmente operando sobre o Internet Protocol (IP).

Alguns fatores que levam a migração de voz para redes IP são:

● Várias redes que foram originalmente criadas para transportar voz hoje transportam dados, porém dados tem necessidades especiais como o uso variável de largura de banda e alta disponibilidade de banda, o que passa a diferenciar então o conteúdo entregue é a aplicação ao invés de circuitos físicos[1].

● Outro fator é que uma RPTC não pode criar e entregar serviços com rapidez necessária. Numa RPTC apenas os fabricantes de equipamentos desenvolvem aplicações para os mesmos, diferente de uma rede IP onde qualquer um pode desenvolver uma aplicação[1].

● Dados/Voz/Vídeo não podem ser convergidos na RPTC, é necessário um novo tipo de rede chamada NGN onde a mesma é criada e otimizada para transportar qualquer tipo de tráfego[2].

● A arquitetura construída para voz não é suficientemente flexível para transportar dados.

● Para uma chamada de voz na RPTC é necessário um circuito de 64kbps permanente entre os telefones chamados, diferente de uma rede de dados que utiliza a banda disponível apenas quando necessário, essa é uma das maiores vantagens de redes de voz baseadas em pacotes.

VoIP consiste em utilizar uma rede IP para transportar voz, diferente de uma RPTC, a rede

1

IP é composta por pacotes e não por circuitos comutados.(cisco, p47)

Em uma rede IP a aplicação não precisa ser conhecida, a rede IP simplesmente transporta os dados fim-a-fim.

Para transportar tráfego em tempo real numa rede de dados foi criado o Protocolo de Transporte em Tempo Real (RTP – Real Time Transport Protocol), em adição ao cabeçalho UDP (User Datagram Protocol)/IP. É a peça chave para o transporte de tráfego em tempo real numa rede IP pois fornece uma referência temporal (timestamp).

Além da utilização do RPT, para que a comunicação seja efetuada com qualidade, é necessário aplicar Qualidade de Serviço (QoS) numa rede, a fim de que pacotes de voz tenham prioridade sobre os demais, e que a variação não seja superior em média a 100ms.

Em redes IP, é comum a ocorrência de perda de pacotes. O União Internacional de Telecomunicações – Setor de Telecomunicações (ITU-T) recomenda um atraso unidirecional não maior do que 150 ms para o perfeito funcionamento do VoIP.

O RTP tem um campo que exibe o exato instante em que o pacote foi enviado (timestamp RTP) e é usada pelo dispositivo que recebe o fluxo de áudio. É utilizado para verificar a ordem dos pacotes e se foi recebido quando esperado. É usado para transmitir de forma correta o fluxo de áudio calculando e corrigindo atrasos como de um jitter.

2.1 Controle de chamadas

Da mesma forma que numa RPTC, são necessários protocolos para controlar as chamadas. Os principais protocolos de controle de chamada VoIP são SIP, H.323, MGCP e H.248/MEGACO.

• O H.323 - É o mais antigo, e é uma recomendação do ITU-T, é um protocolo complexo onde o suporte a voz é apenas uma das aplicações que o mesmo suporta.• O MGCP - Para reduzir o custo dos equipamentos terminais implementa gateways para controlar uma sessão.

• O H.248/MEGACO – É um padrão publicado pelo ITU e Internet Engineering Task Force (IETF) que separa a lógica do controle de chamadas da lógica de processamento de mídia.• O SIP – É baseado em mídias e permite que dispositivos terminais sejam mais

inteligentes, descrito pela RFC 3261.

2.2 Sinalização Telefônica

Para o correto funcionamento da RPTC é necessário a utilização de sinalização telefônica. Assim como numa rede de dados, para iniciar uma transmissão UDP ou uma conexão TCP são utilizados alguns pacotes dedicados a isso ou no caso de uma confirmação TCP do tipo ACK. Em uma rede telefônica também existe a sinalização para o controle de chamadas.

Em RPTC são usadas vários tipos de sinalizações, como de central para central ou telefone para central ou central para telefone. Por exemplo, no caso de uma ligação sendo efetuada, um usuário tira o telefone do gancho, recebe um sinal de linha disponível, digita o número para o qual deseja discar, a central então se comunica com a outra central onde existe o número instalado, a central do destinatário então envia outro sinal ao telefone do usuário chamado, quando o usuário atender o telefone, é efetuada então a conexão entre os dois telefones.

2.3 SIP

O Protocolo de controle de chamada utilizado para o desenvolvimento desse artigo foi o Session initiation Protocol (SIP), pois trata-se de um protocolo baseado em texto semelhante ao HTTP ou SMTP. O SIP é um protocolo peer-to-peer (p2p) ou seja, distribui as capacidades de rede entre todos os nós dentro da rede SIP, diferente do RPTC onde os dispositivos de usuário final são totalmente dependentes da central de comutação.

2.4 Funcionalidades do SIP

• Localização de usuários: fornece capacidade de descoberta de localização do usuário.• Capacidade do usuário: permite determinar a capacidade de mídia dos dispositivos que estão envolvidos na sessão.• Disponibilidade do usuário: permite determinar se um usuário final participar ou não da comunicação.• Configuração de sessão: permite o estabelecimento de parâmetros de sessão para os dispositivos envolvidos.• Manipulação da sessão: permite a modificação, transferência e finalização de uma sessão.

2

2.5 Elementos de rede SIP

Uma rede SIP engloba os seguintes dispositivos:

• User Agent (UA): inicia ou responde transações SIP. Um UA pode atuar tanto como cliente quanto servidor. Pode ou não interagir com um usuário. Um UA é statefull.• User Agent Client(UAC): inicia ou aceita respostas SIP. Ex. Um telefone SIP iniciando uma chamada ou um Proxy SIP redirecionando uma requisição.

• User Agent Server (UAS): aceita requisições SIP e envia de voltas respostas SIP. • Proxy: uma entidade intermediária responsável por dar seguimento à requisições SIP ao UAS alvo ou para outro Proxy. Realiza primordialmente o roteamento numa rede SIP, também é responsável pela autenticação, pode ser stateless ou statefull.• Servidor de redirecionamento: fornecer a resolução de nome e locação do usuário. O servidor de redirecionamento SIP reponde ao pedido do User Agent fornecendo informações sobre o endereço do servidor para que o cliente possa contatar o endereço diretamente.• Servidor de registro: é um UAS que aceita requisições SIP REGISTER e atualização de localização em uma base de dados.

O SIP por si só não é capaz de estabelecer uma sessão. Portanto faz uso de vários outros protocolos tais como:

• DNS,

• Session Description Protocol (SDP) usado para descrever os parâmetros de sessão,• RTP – trasporta os dados em tempo real,• ReSerVation Protocol (RSVP) – Usado para reservar recursos da rede,• TLS – Privacidade e integridade,• Simple Traversal of User Datagram Protocol (STUN) – Permite que clientes dentro de uma rede usando NAT descubram seu endereço IP válido.

Abaixo exemplo de uma rede comum SIP[3]:

2.6 Estrutura de Mensagens SIP

2.6.1 Endereçamento Sip

Endereços SIP identificam um usuário/recurso numa rede, são denominados SIP URI, pode possuir o seguinte formato:

sip:usuário@domínio:portasip:usuário@host:porta

2.6.2 Mensagens SIP

Requisições SIP – São mensagens enviadas para solicitar uma operação SIP, podem ser:

• INVITE – Envia uma solicitação para inciar uma sessão.

• ACK – Confirma que recebeu a solicitação INVITE.

• OPTIONS – Um UA envia essa requisição para consultar as capacidades do UAS.

• BYE – Usada para encerrar uma sessão existente.

• CANCEL – Usada para cancelar uma

3

requisição.• REGISTER – Usada para que um cliente

registrar sua localização.

Respostas SIP – Um servidor envia uma resposta ao cliente a fim de indicar o status de uma requisição SIP enviada. São numeradas de

100 a 699 e são agrupadas no formato 1xx, 2xx até 699, podem ser classificadas como provisórias ou finais. Uma resposta provisória indica progresso mas não indica o resultado do processamento de uma requisição. Uma resposta final indica o término e status final.

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:[email protected] SIP/2.0Via: SIP/2.0/UDP 10.62.102.108:5060;branch=z9hG4bK-d7112b3eFrom: 51008147 <sip:[email protected]>;tag=fc250fad46feae66o0To: <sip:[email protected]>

Cabeçalho

4

Call-ID: [email protected]: 101 INVITEMax-Forwards: 69Contact: 51008147 <sip:[email protected]:5060>Expires: 240User-Agent: Linksys/PAP2-3.1.9(LSc)Content-Length: 426Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFERSupported: x-sipuraContent-Type: application/sdp

Linha em branco entre os campos

v=0o=- 8228784 8228784 IN IP4 10.62.102.108s=-c=IN IP4 10.62.102.108t=0 0m=audio 16444 RTP/AVP 18 0 2 4 8 96 97 98 100 101a=rtpmap:18 G729a/8000a=rtpmap:0 PCMU/8000a=rtpmap:2 G726-32/8000a=rtpmap:4 G723/8000a=rtpmap:8 PCMA/8000a=rtpmap:96 G726-40/8000a=rtpmap:97 G726-24/8000a=rtpmap:98 G726-16/8000a=rtpmap:100 NSE/8000a=rtpmap:101 telephone-event/8000a=fmtp:101 0-15a=ptime:30a=sendrecv

Corpo SDP na mensagem SIP

Resposta SIP

SIP/2.0 200 OKVia: SIP/2.0/UDP 189.50.126.51;branch=z9hG4bK188b.e3e0c1d1.0;received=189.50.126.51Via: SIP/2.0/UDP 10.62.102.108:5060;rport=22628;received=200.103.96.98;branch=z9hG4bK-1a70f95bRecord-Route: <sip:189.50.126.51;lr;ftag=fc250fad46feae66o0;nat=yes>From: 51008147 <sip:[email protected]>;tag=fc250fad46feae66o0To: <sip:[email protected]>;tag=as65ded6fcCall-ID: [email protected]: 102 INVITEUser-Agent: G8 TelecomAllow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFOSupported: replacesContact: <sip:[email protected]>Content-Type: application/sdpContent-Length: 357

Cabeçalho

Linha em branco entre os campos

v=0 Corpo SDP na mensagem de resposta

5

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

200 OK

Diagrama de um fluxo SIP:

2.7 Asterisk

Asterisk é um software livre cuja função é transformar um computador em um servidor de comunicação de voz.

3 Desenvolvimento

O serviço Asterisk foi instalado num servidor Debian:

Pacotes necessários para a instação do Asterisk: bison openssl libssl-dev libusb-dev fxload libasound2-dev libc6-dev libnewt-dev libncurses5-dev zlib1g-dev gcc g++ make

doxygen linux-headers-`uname -r` module-assistant.

3.1 Download

Para a instalação, foi necessário o download dos fontes abaixo no link http://downloads.asterisk.org/pub/:

asterisk-1.4.26.2.tar.gz asterisk-addons-1.4.9.tar.gz libpri-1.4.10.1.tar.gz

3.2 Instalação

6

3.2.1 Compilando a biblioteca Libpri

Para a compilação deve-se seguir uma ordem: libpri, asterisk, asterisk-addons.

3.2.2 Compilando o Asterisk

No diretório descompactado bastou executar os comandos:

./configuremakemake install (instala os binários)make samples (opcional, instala exemplos)make config (cria os scripts de inicialização em /etc/init.d/)make progdocs (documentação)

3.2.3 Compilando o Asterisk-addons

./configuremakemake install

3.3 Inicializando o Asterisk

Existem 2 formas de iniciar o asterisk, a primeira delas é através do script: /etc/init.d/asterisk start ou executando o binário diretamente: /usr/sbin/asterisk -h.

3.3.1 Prompt do Asterisk

Para acessar o console do asterisk basta utilizar: asterisk -vvvr onde cada v vem de verbose mode, ou seja, cada v, acrescenta uma linha abaixo do prompt interativo do Asterisk. Executando-se o comando acima tem-se uma tela parecida com a abaixo:

# asterisk -vvvr Asterisk 1.4.26.2, Copyright (C) 1999 - 2008 Digium, Inc. and others. Created by Mark Spencer <[email protected]> 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

3.4.1 Configuração dos ramais SIP

Abaixo a configuração do arquivo sip.conf, responsável pela criação dos ramais SIP, utilizados nesse artigo .

[general] context = default ; Para recebimento de chamadas.bindport = 5060 ; Porta utilizada pelo protocolo SIP.bindaddr = 0.0.0.0 ; Ouve todas as redes. srvlookup = yes ; Aceita hosts utilizando FQDNdisallow = all ; Desabilita todos os codecsallow = gsm ; Habilita o codec gsm

[6600] type = friend ; Faz e recebe chamadascallerid = "6600" <;6600> ; Nome que aparecerá no identificador de chamadasusername = 6600 ; Usuário

secret = 12345 ; Senhahost = dynamic ; Host com ip dinâmiconat = yes ; Se host está em uma rede com NAT habilitadocanreinvite = no ; Não encaminha chamadasallow = gsm ; Codec utilizadocontext = grupo1 ; Adiciona o usuário ao grupo1

[6601] type = friend callerid = "6601" <;6601>username = 6601secret = 12345host = dynamic nat = yes canreinvite = no allow = gsm context = grupo1

Com a configuração acima, basta criar o plano de discagem para poder utilizar os ramais através de clientes SIP.

7

3.4.2 Plano de discagem

Para começar a utilizar o Asterisk é necessário 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 instruções ou passos que o Asterisk tem que seguir. Os planos de discagem são configurados no arquivo extensions.conf [5].

Abaixo a configuração do arquivo extensions.conf

[grupo1] exten => 6600,1,Dial(SIP/6600,25) exten => 6600,2,Hangup exten => 6601,1,Dial(SIP/6601,25) exten => 6601,2,Hangup

A configuração acima associa 2 ramais SIP criados anteriormente a 2 números e indicam os passos a serem seguidos onde o primeiro passo indica que o ramal pode efetuar/receber ligações e que o tempo chamando o ramal, se o mesmo estiver registrado será de 25 segundos, o segundo passo indica que a ligação será encerrada caso a mesma não seja atendida no período configurado anteriormente.

Uma vez feito isso basta reiniciar o serviço para que os ramais estejam ativos com os comandos sip reload e dialplan reload no prompt do Asterisk.

asterisk*CLI> sip reload 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

softfone para que os ramais falem entre si e o usuário tenha um serviço de telefonia simples operando sobre uma rede IP.

4. Conclusão

Após estudar e configurar de forma simples um servidor de Voz numa rede IP, vimos que a utilização de VoIP traz muitos resultados positivos, além de uma economia, pois pode ser utilizado VoIP para uma ligação de longa distância ou internacional até a localidade destino, só então a ligação sendo transferida para a RPTC, além do fato de ter uma única rede convergente onde todos os serviços utilizam a mesma infra-estrutura.

5. Referências

[1] Jonathan Davidson et al Fundamentos de VoIP. 2.Ed. Bookman, 2008

[2]http://www.teleco.com.br/tutoriais/tutorialngnims1/pagina_2.asp – acessado em 11/12/2009

[3]http://www.cisco.com/en/US/docs/voice_ip_comm/sip/proxies/2.1/administration/guide/1over.html em acessado em 4/12/2009

[4]http://www.madeira.eng.br/wiki/index.php?page=SIP acessado em 4/12/2009

[5] Jim Van Meggelen et al Asterisk: The Future of Telephony, Second Edition O'Reilly 2007

8