REDES INTEGRADAS DE COMUNICAÇÕES Enunciado do Projecto de VoIP Paulo Rogério Pereira, SETEMBRO DE 2011
1. Objectivo Este trabalho tem como objectivo desenvolver um sistema de Interactive Video Voice Response (IVVR) baseado em voz sobre IP (Voice over IP VoIP) e compreender os protocolos utilizados. O sistema deve ser baseado num PBX Asterisk [1] e aceitar múltiplos utilizadores em chamadas de voz e/ou vídeo. Deve ser utilizado o protocolo de sinalização SIP [2] para gestão das chamadas de voz. A transmissão dos fluxos de som e vídeo deve ser feita sobre RTP/UDP [3]. Deve ser elaborado um relatório descrevendo como instalar o sistema e como funcionam os protocolos, com base em diagramas temporais. 2. Arquitectura A figura 1 ilustra a arquitectura pretendida para este trabalho. Um PBX (Private Branch exchange) Asterisk corre numa máquina Linux, estando acessível na rede interna do laboratório. Este PBX suporta múltiplos protocolos, permitindo o registo de telefones SIP como o X-Lite [4] ou de telefones como o Cisco 7905G. Cada telefone tem uma extensão atribuída, compatível com configuração do PBX. Embora o protocolo SIP suporte extensões alfanuméricas, para permitir a marcação em teclados numéricos de telefones, prefere-se a utilização de extensões apenas numéricas. X-Lite x4000 Cisco 7905G x3001 SIP SCCP SIP Ethernet 192.168.0.0/16 192.168.2.99 Porto SIP: 5060 Porto SCCP: 2000 Cisco ATA 186 x3003 Figura 1: Arquitectura da Rede. Assim que arrancam, os telefones registam-se no PBX utilizando o protocolo SIP, permitindo realizar ou aceitar chamadas telefónicas de outros telefones ligados ao mesmo PBX, utilizando a rede local do laboratório. O PBX funciona como servidor de proxy SIP ( proxy server ) e entidade de registo SIP ( registrar ). Todo o tráfego de sinalização é trocado através do PBX. 3. Especificação A aplicação IVVR deve ficar a funcionar no PBX na extensão correspondente ao número de aluno algebricamente menor de entre os números de aluno dos elementos do grupo. 2
O sistema deve suportar as seguintes operações: 1. Saber a hora actual. 2. Saber o saldo de créditos. 3. Jogar ao jogo da tabuada para ganhar créditos. 4. Comprar produtos com créditos obtidos. 5. Vote no seu clube de futebol favorito. 6. Saiba os resultados actuais da votação. 9. Ligar ao operador. 0. Desligar. Para o jogo da tabuada, deve ser proposto ao utilizador somar dois números aleatórios entre 1 e 20, devendo o resultado ser digitado no teclado do telefone. Se acertar, ganha 1 crédito. Os créditos perdemse ao desligar a chamada. Deve haver um menu separado para a venda de produtos. Pode pôr este menu como achar melhor, bastando que haja 1 produto na loja. A compra de produtos apenas gasta créditos correspondentes ao preço, não sendo preciso fazer mais nada. Em cada chamada só deve ser possível votar 1 única vez. O resultado da votação deve ser global a todas as chamadas. O operador deve ser a extensão 4000. 4. SIP O protocolo SIP (Session Initiation Protocol) [2] é um protocolo de sinalização que permite gerir sessões entre um conjunto de participantes. As sessões podem ser chamadas telefónicas, distribuição de conteúdos multimédia, ou conferências multimédia. O protocolo SIP utiliza uma sintaxe semelhante ao protocolo HTTP. As mensagens de pedido começam com uma linha que identifica o tipo de mensagem (métodos REGISTER, INVITE, BYE, etc.), o domínio SIP e a versão do protocolo. Depois seguem-se linhas de cabeçalho, uma linha em branco e um corpo de mensagem opcional. As respostas às mensagens de pedido têm um código de resposta e uma explicação textual, por exemplo 100 Trying ou 200 Ok, seguida de linhas de cabeçalho, tal como nas mensagens de pedido. Códigos 1xx são informativos. Códigos 2xx são de sucesso. Outros códigos são de insucesso. Algumas mensagens, como por exemplo a mensagem INVITE e a correspondente resposta, após o cabeçalho, utilizam um corpo de mensagem baseado no SDP (Session Description Protocol) [6], indicando a informação do fluxo de voz/vídeo que se pretende estabelecer. 5. RTP O protocolo RTP (Real-time Transport Protocol) [3] é apropriado para a transferência de dados de tempo real, tais como áudio e vídeo, oferecendo mecanismos de associação de numeração de sequência, identificação do formato de codificação e informação temporal. O RTP deixa o processamento desta informação a cargo da aplicação, não oferecendo por si mecanismos de garantia de entrega, sequencialidade ou QoS. Note-se ainda que o RTP pode ser usado sobre qualquer protocolo de transporte, sendo normalmente utilizado sobre o UDP. 6. Asterisk Para o PBX Asterisk funcionar, é necessário configurá-lo através de um conjunto de ficheiros de configuração disponíveis na directoria /etc/asterisk, dos quais se destacam: extensions.conf definição de contextos de números de extensões e sua associação a telefones; 3
sip.conf definição dos utilizadores SIP e sua associação a uma extensão de um contexto de extensões; Uma descrição mais detalhada de como configurar o Asterisk pode ser obtida em [7]. Para utilizar vídeo, é necessário incluir no ficheiro sip.conf a seguinte opção [8]: videosupport=yes Os ficheiros de som que o Asterisk utiliza estão, por omissão na directoria /usr/share/asterisk/sounds Estão pré-configuradas no Asterisk as extensões 1000 para teste de acolhimento, a 600 para teste de eco, a 1235 para acesso directo a deixar mensagens no VoiceMail e a 8500 para acesso ao VoiceMail. Há uma mailbox criada com o username 1234 e password 4242. As mensagens de voz (e vídeo se houver) deixadas no voicemail são guardadas na directoria /var/spool/asterisk/voicemail/default/1234, podendo ser aproveitadas para gerar menus de vídeo+voz. Este procedimento pode causar problemas no início do vídeo, tal como discutido em [8], visto que o Asterisk se limita a guardar a stream de vídeo que recebe, podendo não começar numa trama completa (trama I) do vídeo. Não se preocupe com este pormenor. O Asterisk pode ser executado com a linha de comando: asterisk vvvvgc onde o número de v s corresponde ao nível de verbosidade da informação apresentada durante o funcionamento do PBX. Se o Asterisk estiver a correr como daemon, pode-se criar uma consola com o comando: asterisk r Alguns comandos interessantes na consola do Asterisk são: sip show users sip show peers sip show channels sip reload sip set debug dialplan reload core set debug 20 quit stop now 7. Detalhes de Implementação Recomenda-se que implemente o trabalho nas seguintes fases: 1. instalação do Asterisk e de uma aplicação telefónica que suporte vídeo. 2. criação do menu principal no Asterisk. 3. estudo das mensagens trocadas. 4. implementação do jogo, loja e votação. 5. escrita do relatório. O programa será testado com um máximo de duas chamadas simultâneas. Pode utilizar a língua Portuguesa, Inglesa ou ambas. Pode ter partes numa língua e partes noutra consoante ache mais fácil. Não é necessário ter vídeo em todas as situações, mas é obrigatório utilizar vídeo em pelo menos uma opção do sistema. Sugere-se que seja no menu principal. Note que o objectivo do trabalho não é produzir vídeos, mas sim compreender os protocolos e como se pode implementar um sistema IVVR. Recomenda-se a utilização do programa Wireshark [9] para análise do tráfego SIP e RTP. 4
O relatório a entregar deve incluir: instruções para instalar o projecto; ilustração com as pilhas de protocolos utilizadas, tanto para sinalização como para transferência de fluxos de som e vídeo; uma descrição do funcionamento dos protocolos com base em diagramas temporais que devem incluir o utilizador, telefone(s) e PBX, bem como os parâmetros mais relevantes das mensagens. Por exemplo: Utilizador x3000 Lança Aplicação Telefone 192.168.0.1 REGISTER sip:192.168.2.99 SIP/2.0 Via: SIP/2.0/UDP 192.168.0.1 From: <sip:3000@192.168.2.99> Contact: <sip:3000@192.168.0.1> PBX 192.168.2.99 Operador x4000 Ready 200 OK Recomenda-se a configuração adequada do som com o áudio mixer do PC: gravação de som do microfone; volume do microfone 0 (para não se ouvir nos altifalantes o som do microfone); input gain, master volume e PCM volume altos. 8. Entrega do trabalho O trabalho deve ser entregue através da opção de entrega de projectos do sistema Fénix, num ficheiro ZIP, contendo os seguintes ficheiros: - ficheiros de configuração do asterisk modificados; - ficheiros de som/vídeo necessários; - relatório em formato PDF explicando como instalar o projecto, e uma descrição do funcionamento dos protocolos utilizados, apoiada em diagramas temporais de mensagens; pode incluir o documento também noutros formatos, se assim o desejar; - quaisquer outros ficheiros que considere indispensáveis para compilar ou correr as aplicações. O ficheiro ZIP, deve ter o seguinte nome: RIC-VoIP-<nº aluno>-<nº aluno>-<nº aluno>.zip Onde <nº aluno> deve ser substituído pelos números dos alunos do grupo. O prazo para entrega é: 16/12/2011 Entrega da versão completa do trabalho. 9. Referências [1] Asterisk, the Open Source PBX. http://www.asterisk.org/ [2] SIP: Session Initiation Protocol. J. Rosenberg, H. Schulzrinne, G. Camarillo, A. Johnston, J. Peterson, R. Sparks, M. Handley, E. Schooler. IETF RFC 3261, Junho de 2002. [3] RTP: A Transport Protocol for Real-Time Applications. H. Schulzrinne, S. Casner, R. Frederick, V. Jacobson. IETF RFC 3550. Julho de 2003. [4] CounterPath X-Lite Softphone. http://www.counterpath.com/x-lite#download [5] SDP: Session Description Protocol. M. Handley, V. Jacobson. IETF RFC 2327, Abril de 1998. [6] RTP Profile for Audio and Video Conferences with Minimal Control. H. Schulzrinne, S. Casner. IETF RFC 3551. Julho de 2003. [7] Asterisk, The Future of Telephony, 2 nd Edition. Jim Van Meggelen, Leif Madsen, and Jared Smith. O Reilly, 2007. ISBN: 0-596-51048-9. http://downloads.oreilly.com/books/9780596510480.pdf [8] Asterisk video http://www.voip-info.org/wiki/view/asterisk+video [9] Wireshark Network Protocol Analyser. http://www.wireshark.org/ 5