Mestrado Integrado em Engenharia Electrotécnica e de Computadores Serviços de Comunicações 2014/2015 TP5 – ASTERISK Bruno Rafael Ribeiro Costa 201005303 Eduardo Nuno Moreira Soares de Almeida 201000641 Professor: João Manuel Couto das Neves FEUP – MIEEC | Serviços de Comunicações 2014/2015 INTRODUÇÃO A utilização dos serviços de vídeo-telefonia sobre IP tem vindo a aumentar significativamente ao longo dos últimos anos, tanto a nível doméstico como empresarial. A importância crescente deste tipo de serviços deve-se a vários factores, nomeadamente a possibilidade de instalação, configuração e manutenção do serviço a um custo reduzido, bem como as novas funcionalidades oferecidas por estes sistemas, comparativamente com o serviço tradicional da rede PSTN. A nível empresarial, a existência de várias filiais distribuídas por áreas geográficas distintas, bem como a necessidade das novas funcionalidades presentes nestes serviços (tais como a mobilidade dos utilizadores, videochamadas, conferências, entre outros), contribui para o crescente número de migrações dos serviços da rede PSTN para a rede VoIP. Apesar dos custos iniciais decorrentes da migração, esta permite uma redução de custos significativos a longo prazo, sendo também uma solução facilmente escalável, o que permite a expansão do serviço de acordo com o crescimento da empresa, sem necessidade de alterações de fundo. O Asterisk é uma implementação em software open-source de um Private Branch Exchange (PBX), com suporte a VoIP. Este serviço permite uma implementação e gestão simples de um PBX VoIP, que pode ser implementado a nível empresarial. Neste trabalho laboratorial pretende-se implementar um serviço de vídeo-telefonia sobre IP, utilizando o PBX Asterisk, explorando as funcionalidades oferecidas pelo mesmo. Eduardo Almeida & Bruno Costa Asterisk 2 FEUP – MIEEC | Serviços de Comunicações 2014/2015 CONFIGURAÇÃO DA REDE ESQUEMA DA REDE Para implementar o sistema VoIP, foi utilizado o esquema da rede apresentado na imagem abaixo. Para facilitar a gestão e implementação dos servidores Asterisk, foram criadas 2 máquinas virtuais (VM) no mesmo PC, em modo bridge na rede 192.168.109.0/24, contendo, cada uma, um dos servidores. Os endereços IP dos dispositivos da rede podem ser consultados na tabela abaixo. Figura 1 – Esquema de implementação da rede. Dispositivo Endereço IP Asterisk 1 (PBX 1) Asterisk 1 (PBX 1) Softphones (terminais VoIP) 192.168.109.223 192.168.109.224 Atribuído por DHCP Tabela 1 – Lista de extensões criadas em ambos os PBX. Eduardo Almeida & Bruno Costa Asterisk 3 FEUP – MIEEC | Serviços de Comunicações 2014/2015 CONFIGURAÇÃO DO ASTERISK APPLIANCE Para facilitar a instalação dos serviços fundamentais constituintes do Asterisk, foi utilizado a appliance “AsteriskNow IP PBX”. Esta appliance consiste numa imagem pronta a ser instalada num PC / VM, contendo 2 componentes fundamentais: uma distribuição de Linux (CentOS), juntamente com uma aplicação para a gestão do Asterisk via web-browser (FreePBX). EXTENSÕES Por forma a testar o funcionamento do Asterisk, foram criadas várias extensões em ambos os PBX. A tabela seguinte apresenta as extensões criadas, juntamente com o seu nome (display name). Nome Extensão PBXy-Ext001 PBXy-Ext002 PBXy-Ext003 PBXy-Ext007 PBXy-Ext008 PBXy-IRV PBX1-Conferência 001 002 003 007 008 010 100 Tabela 2 – Lista de extensões criadas em ambos os PBX (onde y representa o número do PBX). O processo de criação das extensões envolveu vários passos descritos em seguida. Em primeiro lugar, a cada extensão criada foram associados novos utilizadores, protegidas com uma password para evitar o uso indevido das mesmas. Por outro lado, foi também activado o voicemail para essa extensão, protegido com uma password. TRUNKS Para que ambos os PBX possam comunicar entre si (para encaminhar chamadas entre si), é necessário configurar trunks. Existem essencialmente 2 tipos de trunks: SIP e IAX / IAX2. Como ambos os PBX são Asterisk, optou-se por configurar trunks IAX2, já que reduz significativamente a largura de banda consumida e consegue facilmente contornar NATs / firewalls. Eduardo Almeida & Bruno Costa Asterisk 4 FEUP – MIEEC | Serviços de Comunicações 2014/2015 Figura 2 – Esquema de ligação trunk entre ambos os PBX. As configurações dos trunks em ambos os PBX podem ser consultados nas tabelas seguintes, de onde se destacam os seguintes parâmetros: “Outbound CallerID”, que permite identificar facilmente a origem das chamadas recebidas. “context=from-trunk”, para permitir que todas as chamadas sejam processadas pelas regras definidas nas rotas. PBX 1: General Settings: Trunk Name: trunk_pbx2 Outbound CallerID: pbx1 Outgoing settings: Trunk name: trunk_pbx2 PEER details: username=trunk_pbx1 secret=qwe123 host=192.168.109.224 type=peer context=from-trunk Incoming settings: User context: trunk_pbx2 USER details: secret=qwe123 context=from-trunk type=peer Figura 3 – Configuração do trunk IAX2 no PBX 1 [192.168.109.223]. Eduardo Almeida & Bruno Costa Asterisk 5 FEUP – MIEEC | Serviços de Comunicações 2014/2015 PBX 2: General Settings: Trunk Name: trunk_pbx1 Outbound CallerID: pbx2 Outgoing settings: Trunk name: trunk_pbx1 PEER details: username=trunk_pbx2 secret=qwe123 host=192.168.109.223 type=peer context=from-trunk Incoming settings: User context: trunk_pbx1 USER details: secret=qwe123 context=from-trunk type=user Figura 4 – Configuração do trunk IAX2 no PBX 2 [192.168.109.224]. ROTAS Em complemento à configuração dos trunks, é também necessário configurar as rotas de saída e de entrada. Outbound routes: As rotas de saída são responsáveis por analisar as tentativas de estabelecimento de chamadas efectuadas no PBX e, caso o número de destino (dialled number) corresponder a um determinado padrão definido, encaminhá-las para um determinado trunk. Deste modo, em ambos os PBX foram configuradas rotas de saída que permitam contactar extensões registadas no outro PBX. Para isso, foi configurado um prefixo de chamada que os utilizadores deverão acrescentar antes da extensão de destino da chamada. Dado que a topologia da rede apenas contempla 2 PBX que comunicam exclusivamente entre si, adoptouse o mesmo prefixo em ambos os PBX (10), como indicativo de chamada externa (ao PBX). No entanto, num cenário de utilização genérico, deverá ser configurado um prefixo distinto para cada PBX de saída (por exemplo, outras filiais da empresa) havendo também um prefixo genérico para chamadas para a rede PSTN. Um extracto das configurações mais importantes pode ser consultado na figura abaixo: Eduardo Almeida & Bruno Costa Asterisk 6 FEUP – MIEEC | Serviços de Comunicações 2014/2015 Figura 5 – Extracto das configurações da rota de saída configurada em ambos os PBX. Inbound routes: No caso do PBX 2, para implementar a funcionalidade de Interactive Voice Response (IVR) é também necessário configurar uma rota de entrada, que permita activar o serviço IVR através de um Direct Inward Dial (DID) criado para o efeito. Assim, foi definida a extensão 010 (no PBX 2) como DID para o serviço IVR, que será explicado na secção seguinte. Um extracto das configurações mais importantes pode ser consultado na figura abaixo: Figura 6 – Extracto das configurações da rota de saída configurada no PBX 2. TERMINAIS VoIP Para que o sistema ficasse totalmente configurado, e para testar o seu funcionamento, foi também necessário configurar os terminais VoIP. Deste modo, foram utilizados diferentes softphones instalados em PC (Zoiper e X-Lite) e em smartphones Android (Zoiper), uma vez que cada um fornece funcionalidades diferentes. Com efeito, o Zoiper permite várias extensões registadas simultaneamente ao passo que o X-Lite permite a realização de videochamadas sem a necessidade de um upgrade do software. Desta forma, os softphones foram configurados de acordo com as definições da extensão e do respectivo PBX (i.e., endereço IP do PBX, extensão e respectiva password). Eduardo Almeida & Bruno Costa Asterisk 7 FEUP – MIEEC | Serviços de Comunicações 2014/2015 FUNCIONALIDADES IMPLEMENTADAS Para explorar as possibilidades e vantagens oferecidas pelo Asterisk, foram configuradas várias funcionalidades neste sistema. Dada a vasta quantidade de funcionalidades disponíveis e o prazo definido para a conclusão do trabalho, optou-se por implementar as funcionalidades essenciais no contexto empresarial, bem como em sistemas similares. Os detalhes de implementação de cada funcionalidade implementada são apresentados nas secções seguintes. CHAMADA DE VOZ A funcionalidade fundamental num sistema de comunicações VoIP consiste na realização de chamadas de voz entre extensões do mesmo PBX ou de PBX diferentes. Para a implementar, foram criadas várias extensões em ambos os PBX, juntamente com a configuração dos trunks e rotas de saída, tal como indicado na secção anterior. Para validar a correcta configuração dos sistemas, foi realizada uma chamada de uma extensão do PBX 2 para uma extensão do PBX 1. De referir que, tal como indicado na secção anterior, para realizar a chamada para uma extensão externa, foi necessário acrescentar o prefixo de saída (10) antes da extensão de destino. A notificação de chamada recebida no PBX 1 é apresentada na figura seguinte. Figura 7 – Notificação de chamada recebida da extensão do PBX 2. Eduardo Almeida & Bruno Costa Asterisk 8 FEUP – MIEEC | Serviços de Comunicações 2014/2015 Logs / estatísticas: Outra funcionalidade do Asterisk consiste em registar todas as acções dos utilizadores em logs, tal como informações relevantes ao funcionamento do sistema. Posteriormente, com base nesta informação, é possível fazer uma análise ao sistema por forma a reconhecer padrões de utilização, nomeadamente ao nível do volume de chamadas por unidade de tempo (e.g., dia, hora) e duração média das chamadas. A figura seguinte apresenta um gráfico com algumas estatísticas de chamadas do PBX implementado neste trabalho. Figura 8 – Gráfico de barras da distribuição do número de chamadas efectuadas por dia, juntamente com a duração média das chamadas de cada dia. Para confirmar o correcto processamento da chamada, foram consultados os logs do Asterisk. Nas figuras seguintes são apresentados os logs de uma tentativa de realização de chamada com rejeição do destino; e o estabelecimento de uma chamada com sucesso. Figura 9 – Extracto do log do PBX 1 durante a tentativa de realização de uma chamada rejeitada. Figura 10 – Extracto do log do PBX 1 durante a realização de uma chamada aceite atendida. Em qualquer momento é possível consultar a lista dos utilizadores registados no sistema, além dos peers IAX2, acedendo ao menu “Reports”. Eduardo Almeida & Bruno Costa Asterisk 9 FEUP – MIEEC | Serviços de Comunicações 2014/2015 Figura 11 – Visualização dos utilizadores registados no sistema, juntamente com os peers IAX2. ON HOLD MUSIC Durante o estabelecimento de uma chamada ou enquanto a chamada activa se encontra em espera, é ouvida uma música no terminal VoIP (i.e., on hold music). Figura 12 – Configuração de On Hold Music. REENCAMINHAMENTO DE CHAMADAS Outra funcionalidade configurada no PBX 2 foi o reencaminhamento de chamadas. De facto, sempre que for realizada uma chamada destinada à extensão PBX2-008, e se esta a rejeitar ou estiver ocupada, a chamada será reencaminhada para a extensão PBX2-007. A configuração desta funcionalidade é realizada no menu de configuração da respectiva extensão, tal como apresentado na figura seguinte. Eduardo Almeida & Bruno Costa Asterisk 10 FEUP – MIEEC | Serviços de Comunicações 2014/2015 Figura 13 – Extracto de configuração da funcionalidade de reencaminhamento de chamadas na extensão PBX2-008. CONFERÊNCIA A configuração de uma conferência é equivalente à criação de uma nova extensão no PBX. De facto, um método de configuração de conferências consiste em criar uma extensão dedicada para alojar a conferência, ao qual os utilizadores acedem através de uma chamada normal para a extensão indicada. Outro método consiste em adicionar novos utilizadores a uma chamada activa. Nesta conferência podem ser definidas várias configurações, nomeadamente uma password de acesso, a notificação de entrada / saída de utilizadores na conferência juntamente com uma gravação da sua identificação e ainda limitação do número máximo de utilizadores simultâneos na conferência. Para efeitos de teste foi criada uma conferência na extensão 100 do PBX 1, onde se juntaram 3 utilizadores de ambos os PBX. A configuração da conferência pode ser consultada na figura seguinte. Eduardo Almeida & Bruno Costa Asterisk 11 FEUP – MIEEC | Serviços de Comunicações 2014/2015 Figura 14 – Extracto das configurações da conferência no PBX 1. VÍDEOCHAMADA O suporte a videochamadas foi outra das funcionalidades implementadas neste trabalho. No entanto, dada a limitação da largura de banda disponível (potenciado pelo excessivo número de utilizadores na rede), além dos codecs utilizados para as videochamadas, a sua qualidade é bastante limitada. A configuração deste serviço é realizada activando as seguintes opções “Settings” -> “Asterisk IAX settings” -> “Video support: enabled” e “Settings” -> “Asterisk SIP settings” -> “Chan SIP” -> “Video support: enabled” -> “max bit rate = 100000 kb/s”. A lista dos codecs utilizados nas chamadas pode ser consultado na figura abaixo. Para comprovar a correcta configuração desta funcionalidade é apresentado um screenshot de um smartphone Android a realizar uma videochamada através do Zoiper. Eduardo Almeida & Bruno Costa Asterisk 12 FEUP – MIEEC | Serviços de Comunicações 2014/2015 Figura 15 – Screenshot de um smartphone Android a realizar uma videochamada através do Zoiper. Figura 16 – Configuração dos codecs utilizados nas chamadas. INTERACTIVE VOICE RESPONSE (IVR) Tal como referido na secção “Inbound Routes”, para configurar o serviço de Interactive Voice Response (IVR), foi definido um DID específico no PBX 2 para o efeito (010). Para este trabalho, o serviço foi configurado consiste na apresentação de uma lista telefónica interactiva, onde são anunciadas as extensões disponíveis que o “chamador” pode contactar (através de uma gravação automática personalizada), bastando marcar o número correspondente à extensão (i.e., 1 = Ext001). Assim, os 3 primeiros algarismos reencaminham a chamada para as extensões correspondentes. No caso do valor introduzido ser incorrecto é apresentada uma mensagem de erro (gravação automática personalizada) e o recomeço do processo. De realçar que este serviço só se encontra disponível para chamadas com origem em PBX externos (i.e., PBX 1), já que a sua activação requere o processamento das chamadas pelas regras definidas na inbound route. Este serviço pode ser utilizado pelas empresas quando não é pretendido que determinadas extensões estejam acessíveis directamente de fora, obrigando a passar pela “central de distribuição” automática. No entanto, outra utilização frequente deste tipo de serviço consiste em disponibilizar informações e/ou realizar acções automaticamente sem a necessidade de uma intervenção humana. Os extractos relevantes das configurações do IVR e das gravações automáticas (i.e., announcements) podem ser consultados nas figuras seguintes. Eduardo Almeida & Bruno Costa Asterisk 13 FEUP – MIEEC | Serviços de Comunicações 2014/2015 Figura 17 – Configuração do IVR. Figura 18 – Configuração dos announcements contendo as gravações utilizadas no serviço IVR. Eduardo Almeida & Bruno Costa Asterisk 14 FEUP – MIEEC | Serviços de Comunicações 2014/2015 VOICE-MAIL: Outra funcionalidade importante implementada é o voicemail. Este serviço permite, a quem liga, deixar uma mensagem de voz na caixa de correio de voz da extensão contactada, caso a chamada seja rejeitada ou não atendida. Estas mensagens poderão ser ouvidas posteriormente pelo utilizador da extensão, através da marcação da extensão *98 – para o seu voicemail – ou *97 – para a consulta de qualquer extensão registada no PBX. Em ambos os casos, o acesso ao serviço está protegido por uma password. A configuração deste serviço é realizada no menu de configuração da respectiva extensão, bastando activar a opção de voicemail. De realçar a activação das opções: “Require from same extension”, que obriga a introdução da password. “Play envelope”, que anuncia a data da mensagem antes do seu conteúdo. A demonstração da configuração do voicemail da extensão 001, bem como um extracto das extensões do PBX com voicemail configurado são apresentados nas figuras seguintes. O Asterisk permite o envio da mensagem de voicemail recebida para um dado endereço de email. Apesar desta funcionalidade não ter sido demonstrada na aula, a sua configuração é apresentada na figura seguinte. Figura 19 – Extracto de configuração do voicemail da extensão 001. Eduardo Almeida & Bruno Costa Asterisk Figura 20 – Extracto das extensões com voicemail activo, incluindo o número de mensagens novas na respectiva caixa de correio. 15 FEUP – MIEEC | Serviços de Comunicações 2014/2015 CONCLUSÃO Com a realização deste trabalho, foi possível implementar um sistema de vídeo-telefonia sobre IP com as funcionalidades mais requisitadas em contextos empresariais, que muito ultrapassam uma simples chamada de voz entre 2 extensões. Com efeito, todas as configurações realizadas tiveram em mente a aplicação desta solução em cenários reais, tal como foi possível verificar ao longo do relatório. Deste modo, a realização do trabalho permitiu o contacto com um sistema real de vídeotelefonia sobre IP, o que permitiu adquirir conhecimentos fulcrais sobre o funcionamento e implementação destes serviços em ambientes de utilização reais. Eduardo Almeida & Bruno Costa Asterisk 16 FEUP – MIEEC | Serviços de Comunicações 2014/2015 BIBLIOGRAFIA Neves, João. 2013.Video Telephony over IP. Portugal: INESCPorto. Asterisk. 2014. Asterisk. http://www.asterisk.org/ (acedido em 17 de Dezembro de 2014). Asterisk. 2014. Dashboard - Asterisk Project Wiki. https://wiki.asterisk.org/ (acedido em 17 de Dezembro de 2014). FreePBX. 2014. The Free Stands for Freedom - FreePBX. http://www.freepbx.org/ (acedido em 17 de Dezembro de 2014). Wiki FreePBX. 2014. Dashboard – Documentation. http://wiki.freepbx.org/ (acedido em 17 de Dezembro de 2014). Wiki FreePBX. 2014. Connecting Two FreePBX-Asterisk Systems Together Over the Internet FreePBX Modules - Documentation. http://wiki.freepbx.org/pages/viewpage.action?pageId=4161588 (acedido em 17 de Dezembro de 2014). Voip-Info. 2014. Asterisk - documentation of application commands - voip-info.org. http://www.voip-info.org/wiki/view/Asterisk+-+documentation+of+application+commands (acedido em 17 de Dezembro de 2014). Asterisk Docs. 2014. Connecting Two Asterisk Boxes Together via IAX. http://www.asteriskdocs.org/en/2nd_Edition/asterisk-book-html-chunk/I_sect14_tt670.html (acedido em 17 de Dezembro de 2014). Aosabook. 2014. The Architecture of Open Source Applications Asterisk. http://www.aosabook.org/en/asterisk.html (acedido em 17 de Dezembro de 2014). Asterisk - The Open Source Telephony Project. 2014. Asterisk Architecture Overview. http://doxygen.asterisk.org/trunk/AsteriskArchitecture.html (acedido em 17 de Dezembro de 2014). Asterisk Docs. 2014. Chapter 2. Asterisk Architecture. http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html-chunk/asterisk-Arch.html (acedido em 17 de Dezembro de 2014). Yakko. 2014. Asterisk Presentation. https://yakko.cs.wmich.edu/~drclaw/asterisk/presentation/slide15.html (acedido em 17 de Dezembro de 2014). Wikipedia. 2014. Asterisk (PBX). https://en.wikipedia.org/wiki/Asterisk_(PBX) (acedido em 17 de Dezembro de 2014). Eduardo Almeida & Bruno Costa Asterisk 17 FEUP – MIEEC | Serviços de Comunicações 2014/2015 ExcITingIP. 2014. Asterisk – The Open Source Telephony/Communications Platform. http://www.excitingip.com/4112/asterisk-the-open-source-telephonycommunicationsplatform/ (acedido em 17 de Dezembro de 2014). Harding. 2014. Lecture 4: Lines trunks pbx key telephone. http://www.harding.edu/white/classes_old/engr475/lectures/lecture_4_lines_trunks_pbx_ke y_telephone.ppt (acedido em 17 de Dezembro de 2014). Ingate. 2014. PBX presentation engate itexpoeast2014. http://www.ingate.com/files/ITEXPO_Miami_2014/pbx_presentation_ingate_itexpoeast2014. pptx (acedido em 17 de Dezembro de 2014). Eduardo Almeida & Bruno Costa Asterisk 18