DOULOX LINUX LIVE: UMA DISTRIBUIÇÃO LINUX PARA AMBIENTES VOIP SIP E H PDF
DOULOX LINUX LIVE: UMA DISTRIBUIÇÃO LINUX PARA AMBIENTES VOIP SIP E H.323
Download "DOULOX LINUX LIVE: UMA DISTRIBUIÇÃO LINUX PARA AMBIENTES VOIP SIP E H.323"
Glória Paranhos Klettenberg
1 DOULOX LINUX LIVE: UMA DISTRIBUIÇÃO LINUX PARA AMBIENTES VOIP SIP E H.323 Trabalho de Conclusão de Curso Engenharia da Computação Rodrigo Fagner Brayner de Brito Orientador: Prof. Doutor Adriano Lorena Inácio de Oliveira Co-Orientadora: Prof. Mestra Zuleika Tenório Cavalcanti do Nascimento Recife, 18 de maio de 2005
2 DOULOX LINUX LIVE: UMA DISTRIBUIÇÃO LINUX PARA AMBIENTES VOIP SIP E H.323 Trabalho de Conclusão de Curso Engenharia da Computação Este Projeto é apresentado como requisito parcial para obtenção do diploma de Bacharel em Engenharia da Computação pela Escola Politécnica de Pernambuco Universidade de Pernambuco. Rodrigo Fagner Brayner de Brito Orientador: Prof. Dr. Adriano Lorena Inácio de Oliveira Co-Orientadora: Prof. Mestra Zuleika Tenório Cavalcanti do Nascimento Recife, 18 de maio de 2005
3 Rodrigo Fagner Brayner de Brito DOULOX LINUX LIVE: UMA DISTRIBUIÇÃO LINUX PARA AMBIENTES VOIP SIP E H.323
4 i Resumo A tecnologia de telefonia IP, ou VoIP (voz sobre IP), vem aos poucos sendo difundida em redes acadêmicas e em empresas pelo baixo custo de ligações, sendo assim um paradigma alternativo à redes telefônicas convencionais. Este trabalho apresenta uma introdução geral a esta tecnologia, bem como aos dois protocolos mais utilizados, sendo estes o H.323 e o SIP. Além disto, propomos o desenvolvimento de uma distribuição Linux, o Doulox Linux Live, contendo os programas necessários para se ter um ambiente VoIP operacional utilizando tais protocolos. Propomos também a união destes protocolos através de um gateway e central telefônica em software, o Asterisk, podendo também haver a união entre os ambientes de telefonia IP e convencional. Este trabalho apresenta também um sistema de gerenciamento para a simplificação da configuração de todos os serviços necessários para se ter os serviços VoIP em funcionamento.
5 ii Abstract The IP telephony technology, or VoIP (voice over IP), is being spread out in academic networks and companies because its low calling costs, being an alternative paradigm to conventional telephone networks. This work presents a general introduction to this technology, the two most used protocols, the H.323 and SIP, and proposes a Linux distribution, the Doulox Linux Live, which contains the necessary softwares to have an operational VoIP environment using these protocols and the union of both through a gateway and a telephone exchange made in software, the Asterisk. This enables the union between the IP telephony and conventional environments. This work also presents a management system for the simplification of all necessary services to have VoIP running.
6 3 Sumário Índice de Figuras 4 Índice de Quadros 5 Índice de Quadros 5 1 Introdução Motivações Objetivo A solução proposta 9 2 Voz sobre IP H SIP 15 3 Criação do Doulox e implantações dos serviços VoIP Tentativas de criação da distribuição a partir do Slax Experiências com o Slackware e Kernel Experiências com o Slackware e Kernel Criando definitivamente a distribuição Modificações e testes utilizando o Doulox Configuração do SER Configuração do GnuGK Configuração do Asterisk Canal SIP Canal H Instalação do Doulox 49 4 Sistema de gerenciamento do Doulox Tecnologia Autenticação Rede, DNS e prefixos locais GnuGK Opções SER, Asterisk e recarregar 59 5 Conclusões e trabalhos futuros Conclusões Discussões Trabalhos futuros 66
7 Índice de Figuras 4 Figura 1. Sistema de telefonia tradicional. 10 Figura 2. Sistema de telefonia IP. 11 Figura 3. Exemplo de funcionalidade de VoIP, onde um telefone (telefonia IP) de Salvador liga para um telefone (telefonia convencional) do Rio de Janeiro. 12 Figura 4. Cenários em VoIP[12]. 12 Figura 5. Escopo e componentes definidos em H.323[15]. 13 Figura 6. Comunicação entre terminais H.323[15]. 15 Figura 7. Exemplo do funcionamento do protocolo SIP[15]. 16 Figura 8. Registro em um servidor SIP [15]. 17 Figura 9. X-Lite, telefone virtual para protocolo SIP. 19 Figura 10. Cenário utilizado para o desenvolvimento e testes. 19 Figura 11. Utilização do VMWare para criação de máquinas virtuais com sistemas operacionais Linux. 20 Figura 12. Configuração do X-Lite 29 Figura 13. Erro ao ser iniciado o Asterisk 30 Figura 14. Asterisk iniciado corretamente 30 Figura 15. Marcação da opção Disable Fast-Start no OpenPhone 33 Figura 16. Tela de autenticação do usuário. 51 Figura 17. Tela de boas vindas e menu. 51 Figura 18. Diagrama de casos de uso das opções Rede, DNS e Prefixos. 52 Figura 19. Tela de configuração da rede. 53 Figura 20. Submenus da opção Rede. 53 Figura 21. Submenus da opção DNS. 54 Figura 22. Configuração do servidor DNS. 54 Figura 23. Submenus da opção Prefixos. 55 Figura 24. Configuração dos prefixos do servidor. 55 Figura 25. Diagrama de casos de uso do GnuGK. 56 Figura 26. Submenus da opção GnuGK=>GKs. 56 Figura 27. Submenus da opção GnuGK=>Prefixos. 57 Figura 28. Adicionando um novo GK. 57 Figura 29. Associando um prefixo a um GK. 57 Figura 30. Associando um prefixo a um GK Asterisk em Voip1. 58 Figura 31. Associando um prefixo a um GK Asterisk em VoIP2. 58 Figura 32. Submenus da opção GnuGK=>Usuários. 59 Figura 33. Adição de novo usuário/telefone ao servidor GK em Voip1. 59 Figura 34. Diagrama de casos de uso do SER, Asterisk e recarregar. 60 Figura 35. Submenus da opção SER=>Redirecionamentos. 60 Figura 36. Configuração do redirecionamento do SER de VoIP1 para o SER do VoIP2. 61 Figura 37. Configuração do redirecionamento do SER de VoIP1 para o SER do VoIP2. 62 Figura 38. Submenus da opção SER=>Telefones. 62 Figura 39. Adição de um usuário ao SER em VoIP1. 63 Figura 40. Submenus da opção Asterisk=>Redirecionamentos. 63 Figura 41. Redirecionamento de ligações de Voip1, destinadas ao grupo Voip2, ao servidor SER local através do Asterisk. 64
8 Índice de Quadros 5 Quadro 1. Cabeçalho de uma requisição INVITE do protocolo SIP. 16 Quadro 2. Erro ao ser executado o GnuGK sem as bibliotecas do OpenH Quadro 3. Arquivo Makefile do diretório fonte do OpenH Quadro 4. Execução dos comandos presentes no arquivo Makefile do diretório fonte do OpenH Quadro 5. Erro ao ser executado o GnuGK sem o PWLib. 22 Quadro 6. Iniciando o GnuGK através de linha de comando. 23 Quadro 7. Arquivo de configuração inicial (básico) do GnuGK. 23 Quadro 8. Erro obtido ao executar o GnuGK como imagem no Slax. 24 Quadro 9. Pacotes necessários para a instalação do kernel Quadro 10. Erro Kernel Panic. 25 Quadro 11. Erros obtidos ao executar a primeira versão do Doulox. 26 Quadro 12. Erro ao iniciar o primeiro teste com o SER utilizando o X-Lite. 28 Quadro 13. Linha de configuração do SER para identificação de URI através da identificação do próprio domínio. 28 Quadro 14. Linha de configuração do SER para identificação de URI por extenso. 28 Quadro 15. Erro ao criar o pacote do PWLib utilizando o checkinstall. 31 Quadro 16. Pacotes criados com o utilitário checkinstall através dos códigos fonte. 32 Quadro 17. Alteração do arquivo inetd.conf. 32 Quadro 18. Conteúdo do arquivo /etc/rc.d/rc.server. 32 Quadro 19. Erro ao iniciar o MySQL. 33 Quadro 20. Log do erro relativo ao início do MySQL. 34 Quadro 21. Linha descomentada no arquivo /etc/apache/httpd.conf. 34 Quadro 22. Linhas descomentadas no arquivo /etc/apache/php.ini. 34 Quadro 23. Linhas adicionadas ao final do arquivo /etc/profile. 35 Quadro 24. Senhas padrão do banco de dados SER. 35 Quadro 25. Erro ao iniciar o SER com suporte ao MySQL. 35 Quadro 26. Criação de um link simbólico para a biblioteca libmysqlclient.so. 36 Quadro 27. Erros relacionados à inicialização do SER com suporte ao MySQL, utilizando o ser-mysql. 36 Quadro 28. Adição de um alias no arquivo ser.cfg. 36 Quadro 29. Remoção de comentários no arquivo ser.cfg relacionados aos loadmodules. 37 Quadro 30. Alterações ao ser.cfg quanto ao parâmetro usrloc. 37 Quadro 31. Remoção de comentários dos parâmetros auth_db no arquivo ser.cfg. 37 Quadro 32. Remoção de comentários dos parâmetros auth_db no arquivo ser.cfg. 37 Quadro 33. Bloco de redirecionamento para o grupo Voip2. 38 Quadro 34. Bloco de redirecionamento para o canal SIP do Asterisk. 38 Quadro 35. Bloco de redirecionamento para clientes PBX. 39 Quadro 36. Formato de um registro SRV. 39 Quadro 37. Registro SRV no servidor DNS de Voip1. 39 Quadro 38. Arquivo de zona do servidor DNS de Voip1. 40 Quadro 39. Bloco adicionado ao arquivo /etc/named.conf. 40 Quadro 40. Utilizando o dig para verificar o registro SRV adicionado. 40 Quadro 41. Resposta ao comando dig no registro SRV do servidor. 41 Quadro 42. Sintaxe do comando serctl para adição de novos usuários. 41 Quadro 43. Sintaxe do comando serctl para adição de aliases. 41 Quadro 44. Exemplo do uso do serctl. 41 Quadro 45. Adição de um usuário com valores numéricos ao SER. 42 Quadro 46. Adição do usuário administrador ao SER. 42 Quadro 47. Erro ao compilar o utilitário addpasswd. 42 Quadro 48. Erro ao compilar o utilitário addpasswd. 43 Quadro 49. Configuração do gnugk.ini com relação à autenticação. 43 Quadro 50. Configuração do gnugk.ini com relação ao nome do GK. 43 Quadro 51. Configuração do gnugk.ini com relação ao vizinhos. 44 Quadro 52. Bloqueio de telefones celulares. 44
9 6 Quadro 53. Seção [general] do arquivo sip.conf. 45 Quadro 54. Seção de autenticação do canal SIP em sip.conf. 45 Quadro 55. Seção de identificação do servidor SER local. 45 Quadro 56. Definição do grupo e das regras de redirecionamento em extensions.conf. 46 Quadro 57. Aplicação de um patch ao fonte do OpenH Quadro 58. Erros obtidos na compilação do Asterisk-oh Quadro 59. Programas compilados para o funcionamento do Asterisk-oh Quadro 60. Configurações no arquivo oh323.conf. 48 Quadro 61. Configurações de redirecionamento no arquivo extensions.conf quanto ao canal H
10 Agradecimentos 7 Primeiramente agradeço ao meu Deus, por me amar tanto e ter me capacitado para fazer tal trabalho, sem ele eu não estaria capacitado a escrever qualquer linha deste projeto. Por ter derramado tantas bênçãos em minha vida e por estar me ensinando a ser um verdadeiro servo, sendo o nome da distribuição deste projeto em homenagem a Ele, onde Doulos significa servo em grego. Todo este projeto foi feito em especial para Ele. Agradeço também à minha família, em especial minha a mãe (Márcia Gomes Brayner), pai (José Ricardo Figueiredo de Brito), irmão (Erasmo Eustáquio Brayner Neto) e avós (Erasmo Eustáquio Brayner e Shirley Gomes Brayner), que deu bastante força, me educando para a vida, sempre me colocando nos melhores colégios, preocupados com minha educação e me proporcionando amor, o mais importante de todos. À minha namorada e futura esposa, Fernanda Lins da Fonseca, que sempre acreditou em mim, me deu forças, carinho e amor quando precisei em momentos difíceis do desenvolvimento deste projeto, acalmando meu coração e retirando minhas inseguranças, me entendendo quando precisei ficar dias ou semanas sem vê-la e por ser a pessoa mais preciosa e especial em minha vida aqui na terra. Ao meu líder espiritual, Marinho, a quem amo muito e sempre acreditou em mim, e que me reforçou, através do seu exemplo, de que tudo que fizermos que façamos para a glória e honra do Senhor, portanto, como disse acima, este trabalho vai em homenagem ao meu Deus e à Marinho, por ser exemplo de um cristão e líder também do ministério Doulos, ministério esse que forma jovens servos cristãos para o mundo. Agradeço aos meus amigos da universidade, que sempre foram meus defensores em todos os problemas que ocorreram comigo na POLI, passando até a ser o mascote temporário deles. Sempre me ajudavam também quando precisei, e foram realmente amigos nas horas difíceis. Em especial agradeço às pessoas na POLI que passei mais tempo, como Fernando Antônio, Carolina Cavalcanti, Allan Bruno, Bruna Bunzen, Adélia Barros, Rodrigo Cursino, Rodrigo Gomes, Túlio Campos, Cláudio Cavalcanti, Zé Guiga, Lívia Brito, Juliana Lima, Edivadno Vasconcelos, Moka, entre outros, a lista é grande. Sou grato por ter os professores que tive, tal como Ricardo Massa e Carlos Alexandre, por serem meus primeiros professores e grandes mestres, dando a mim exemplos do que é ser um verdadeiro educador, mesmo tendo alguns desentendimentos durante o curso. Agradeço ao meu orientador, por ter me guiado durante o desenvolvimento deste projeto e ter acreditado no meu potencial, aceitando o papel de ser meu orientador. Agradeço ao pessoal do GT-VoIP da UFRJ, em especial Peixoto, por ter me iniciado na tecnologia VoIP e respondido aos meus s com dúvidas, aos usuários do fórum do Slax pelo suporte em suas páginas e à minha co-orientadora e chefe do PoP-PE Zuleika, que me ajudou bastante quando precisei faltar e quando me apoiou no projeto, acreditando em mim, me dando forças e me incentivando a fazer o mestrado nesta área. Por fim, agradeço à RNP por ter me disponibilizado recursos para a finalização deste projeto.
11 8 Capítulo 1 Introdução Este capítulo contém uma introdução ao projeto proposto, destacando as motivações para o desenvolvimento deste, o objetivo principal a ser alcançado e as soluções propostas para atingir o objetivo. 1.1 Motivações Atualmente a tecnologia de voz sobre IP, ou VoIP [1], vem se destacando em meio às outras tecnologias de informação, mais especificamente nas áreas de telefonia, onde a busca crescente por menores custos nesta área vem sendo uma das maiores motivações no estudo e crescimento desta. VoIP, ou telefonia IP, é um sistema de telefonia alternativo, onde a Internet vem a ser o meio de comunicação utilizado, diminuindo bastante o custo da comunicação, uma vez que a Internet é um meio bastante barato e difundido em todo o mundo. Portanto a idéia de VoIP é utilizar o transporte de pacotes, realizado pelos protocolos TCP/IP [2], para transportar voz. Dois protocolos abertos (gratuitos) assumem a hegemonia na área de VoIP, sendo estes o H.323 [3] e o SIP [4]. O primeiro vem a ser um protocolo mais antigo, mais maduro e bastante utilizado, sendo o maior motivo disto o tempo de sua existência. O SIP é um protocolo mais atual, sendo seu projeto mais voltado à Internet, uma vez que o H.323 a partir da telefonia convencional, porém com o foco em telefonia IP e a comunicação com redes de telefonia convencionais. Através de um programa chamado Asterisk, uma central telefônica e gateway desenvolvido em software, é possível se ter os dois protocolos funcionando em uma mesma rede, fazendo a ligação entre tais protocolos e os protocolos de telefonia convencional, sendo esta uma grande motivação para utilização desta tecnologia, pois ligações poderiam ser realizadas sem praticamente nenhum custo ou custo de ligações locais. Este trabalho poderá ser um ponto inicial para abertura de empresas em VoIP no Brasil, uma vez que existem poucas empresas na área atualmente.
12 1.2 Objetivo 9 O objetivo deste trabalho é desenvolver uma distribuição Linux que conterá todos os programas necessários para a utilização dos serviços VoIP com protocolos SIP, H.323 e de telefonia convencional. Um sistema também será desenvolvido para dar suporte à configuração de ambos os programas (servidores), uma vez que tal configuração não é trivial, passando a ser uma configuração demorada e trabalhosa. Com tal sistema, a configuração de todos os servidores será simplificada, sendo possível assim a implantação de uma rede de voz sobre IP em tempo e complexidade reduzidas. Um grupo de pesquisa da RNP / UFRJ, chamado GT-VoIP, desenvolveu uma distribuição Linux, o Voipix, capaz de gerenciar uma rede de telefonia IP utilizando o protocolo H.323. O objetivo proposto neste trabalho vem abordar tanto o protocolo H.323 quanto o SIP e a comunicação entre os dois. A distribuição, que será gratuita, constará dos servidores SER, GnuGK e Asterisk, sendo estes necessários para prover a comunicação entre usuários SIP, H.323 e telefonia convencional. Embora neste projeto não fossem realizados testes com telefonia convencional, toda a sua estrutura foi pensada para incluir tal funcionalidade em trabalhos futuros. O sistema de gerenciamento constará de várias funcionalidades incluindo o gerenciamento do programa SER, GnuGK, Asterisk. Será possível, ainda, configurar os servidores DNS e fazer configurações de rede. No Capítulo 2 são apresentados uma introdução aos conceitos em VoIP, aos protocolos SIP e H.323 e algumas informações quanto ao projeto a ser realizado. No Capítulo 3 são mostrados todos os processos para o desenvolvimento da distribuição, apresentando os problemas encontrados e soluções para tais problemas, bem como a configuração e testes com os servidores sem o sistema de gerenciamento. Isto para que pudesse haver uma idéia dos pontos mais complexos da configuração e necessidades em todos os processos e assim desenvolver funcionalidades para a automatização destes. No Capítulo 4 são abordadas as funcionalidades do sistema de gerenciamento, explicando cada uma para um maior entendimento e para tornar possível a implantação dos serviços VoIP sem complicações. No Capítulo 5, são discutidas as conclusões do projeto e apresentados alguns trabalhos futuros a serem realizados tendo como base este projeto. 1.3 A solução proposta A solução proposta para os objetivos apresentados na seção anterior serem alcançados será desenvolver o Doulox Linux Live, uma distribuição Linux que pode ser executada diretamente do CD, sem haver a necessidade de instalação, podendo assim prover uma simples demonstração em apresentações, e sendo capaz de ser instalada também no computador para se obter um servidor real. Esta distribuição conterá todos os servidores necessários, como explicado anteriormente. Além disso, ela será capaz de prover um serviço VoIP entre várias instituições, desde que a estrutura de rede esteja implantada e a distribuição esteja disponível. Para a configuração de todos os servidores, um sistema de gerenciamento será desenvolvido para facilitar a implantação com êxito da comunicação entre as várias instituições interligadas via rede, alcançando assim o objetivo principal do projeto, prover um ambiente VoIP com facilidade e incluindo os dois protocolos mais utilizados atualmente em voz sobre IP.
13 10 Capítulo 2 Voz sobre IP Voz tem sido transmitida através das tecnologias de telefonia convencional PSTN (Public Switched Telephone Network) [5] desde O desejo das empresas e consumidores de redução dos custos com telefonia convencional, junto com o investimento em tecnologias baseadas em TCP/IP, tem produzido um interesse na transmissão de voz utilizando o sistema de voz sobre IP (VoIP ou Voice over IP). VoIP envolve a transmissão da voz em forma de pacotes de dados utilizando o protocolo IP, onde a voz do usuário é convertida em um sinal digital, comprimida, e quebrada em uma série de pacotes. Os pacotes são então transmitidos através de redes públicas ou privadas, e são agrupados e decodificados no lado do receptor. Desde a década de 70, pesquisadores vêm realizando testes em redes de pacotes. Esta tecnologia vem passar a ter um campo comercial a partir da metade da década de 90. Portanto, a tecnologia VoIP surge como um novo paradigma em relação a sistemas de telefonia convencionais como ilustrado na Figura 1. Neste exemplo temos dois assinantes de operadoras não necessariamente iguais, conversando através de uma rede de telefonia tradicional. Figura 1. Sistema de telefonia tradicional. (figura reproduzida do material do curso de VoIP realizado pela RNP no 10º seminário RNP de capacitação realizada no PoP-PE)
14 O novo paradigma introduzido está exemplificado na Figura 2. Neste exemplo, a mesma rede de telefonia ainda é utilizada por questões de flexibilidade, porém novos conceitos são introduzidos em VoIP, como por exemplo o uso de redes locais como meio de comunicação de voz. Neste sistema é possível haver a comunicação entre ambas as tecnologias, VoIP e os sistemas de telefonia tradicionais. 11 Figura 2. Sistema de telefonia IP. (figura retirada do material do curso de VoIP realizada pela RNP no 10º seminário RNP de capacitação realizada no PoP-PE) No exemplo acima, temos telefones IP (sendo estes telefones específicos para tecnologias VoIP) ligando para um outro telefone IP utilizando a Internet como meio de transporte de voz. Dois protocolos de comunicação (sinalização) assumem a hegemonia nesta nova tecnologia, o H.323 proposto pela ITU-T (International Telecommunication Union Telecommunications Standardization Sector) [6] e o mais recente protocolo, o SIP (Session Initiation Protocol), proposto pela IETF (The Internet Engineering Task Force) [7]. Com ambos os protocolos, seria possível criar um sistema de telefonia como exemplificado na Figura 3, onde se teria um telefone convencional no Rio de Janeiro ligando para um telefone analógico ligado a uma rede IP em Salvador com custos reduzidos a pulsos locais. Isto poderia também ser realizado a nível mundial. Neste exemplo, pode-se observar a conexão entre as duas redes. Os PBXs (Private Branch Exchange) [8] são as centrais telefônicas das operadoras, o gateway de voz é responsável por fazer a ligação entre as redes PSTN e IP, os roteadores encaminham os pacotes IP contendo tráfego de voz e o adaptador seria um equipamento adaptador (ATA) para fazer ligações de telefones analógicos à rede IP. É possível também realizar chamadas entre ambos os protocolos, SIP e H.323, sendo este o objetivo principal ao longo deste trabalho.
15 12 Figura 3. Exemplo de funcionalidade de VoIP, onde um telefone (telefonia IP) de Salvador liga para um telefone (telefonia convencional) do Rio de Janeiro. (figura retirada do material do curso de VoIP realizado pela RNP no 10º seminário RNP de capacitação realizada no PoP-PE) Algumas ferramentas são necessárias para a implantação de tal ambiente em ambos os protocolos de sinalização. Para ambientes H.323, é necessário o uso de um servidor gerenciador de chamadas. Este servidor pode ser chamado de gatekeeper ou simplesmente GK. Utilizamos uma solução gratuita, o programa GnuGK [9]. Para ambientes SIP, é necessário um proxy, ou redirecionador de chamadas, utilizamos o programa SER (SIP Express Router) [10] para tal funcionalidade. O Asterisk [11] é utilizado como um gateway de voz e PBX desenvolvido em software, minimizando o custo de $11 mil dólares (equipamentos gateway em hardware) para apenas $350 dólares, custo de uma placa com suporte a duas interfaces FXS (Foreign Exchange Subscriber) e duas FXO (Foreign Exchange Office), podendo ser utilizado com o Asterisk para emular um gateway em software. Uma placa com suporte ao tronco digital E1 custa em torno de $ dólares. Portas FXS são ligadas a telefones analógicos enquanto que as FXO e E1 são ligadas aos PBXs com suporte a troncos digitais (E1)(30 ligações simultâneas) ou troncos analógicos (FXO). O Asterisk funcionará também como gateway entre clientes H.323 e SIP. Resumindo, podemos obter um cenário como exemplificado na Figura 4. Neste exemplo, pode-se observar que as ligações podem ser realizadas entre telefones virtuais (programas telefones ou softphones), utilizando a Internet entre telefones virtuais e telefones convencionais e entre telefones convencionais utilizando a Internet ao invés do sistema de telefonia convencional. Figura 4. Cenários em VoIP[12].
16 A diferença fundamental entre os protocolos está nas suas origens. O H.323 vem de um mundo PBX, sendo este orientado à tecnologia ISDN (Integrated Services Digital Network) [13], enquanto que o SIP surgiu de um mundo orientado a pacotes, o mundo IP. Chamadas em SIP podem ser realizadas através de URLs (Uniform Resource Locator) ou URIs (Uniform Resource Identifier), onde se pode realizar tais chamadas através do número ou de uma pessoa. A maioria das aplicações na área de VoIP atualmente estão focadas em H.323 por sua maior maturidade, uma vez que este possui mais tempo no mercado do que o SIP, sendo isto uma das vantagens do H.323. Porém, muitas aplicações começam a surgir no mundo SIP e este passa a ser aos poucos um dos padrões mais utilizados em concorrência com o H H.323 A série H.323 envolve várias recomendações propostas pela ITU-T em seus trabalhos com vídeo telefonia e conferência multimídia. Na série H.320, a ITU-T focou em vídeo conferência em ISDN acima de 2 Mbit/s enquanto que em ATM (Asynchronous Transfer Mode) [14] surgem as séries H.310 e H.321. Para a tecnologia PSTN também surge uma nova série de recomendações, o H.324. Porém a recomendação mais adotada foi o H.323 em 1995 para redes locais, focando assim em telefonia IP. O principal motivo foi a capacidade de interligação entre a rede de telefonia convencional e redes de computadores. Um escopo geral e alguns componentes vistos em H.323 estão especificados na Figura 5. Como mencionado acima, esta recomendação possibilita interligar os ambientes de telefonia convencional (ISDN, PSTN, GSM) e redes baseadas em IP. Figura 5. Escopo e componentes definidos em H.323[15].
17 14 Abaixo exemplificaremos alguns desses componentes: Terminal: São telefones virtuais utilizando computadores (PCs), mais especificamente aplicativos como, por exemplo, o OpenPhone [16] ou telefones IP, que são aparelhos específicos para VoIP. Pode-se também utilizar telefones analógicos utilizando um equipamento adaptador (ou ATA). A estes são designados um nome de usuário e números de telefone, a partir da montagem de um plano de discagem. Gateway: Os gateways interconectam os componentes da rede interna ao mundo exterior que utilizam outras tecnologias, tais como GSM, ISDN, PSTN, ATM e SIP. Utilizaremos o Asterisk para tal propósito. Gatekeeper: É a entidade núcleo em um ambiente H.323. É o responsável pelo controle de acesso, resolução de endereços, gerenciamento da rede H.323 e policiamento de acesso. MultIPoint Control Unit (MCU): Faz possível a comunicação multiponto entre terminais H.323. O H.323 utiliza basicamente serviços como Multicast [17] e protocolos básicos de redes, tais como IP, TCP e UDP (User Datagram Protocol) [18], e faz uso de alguns outros protocolos diferenciados para sinalização de chamadas e controle. Tais protocolos são: H Registro, Admissão e Status (RAS): O canal RAS é utilizado em comunicações entre gatekeepers ou entre terminais e gatekeepers. Os terminais utilizam o RAS para fazer autenticação nos gatekeepers, obter o número de um outro terminal etc., enquanto que os gatekeepers se comunicam entre si para manter status durante a comunicação entre os terminais e coletar informações como, por exemplo, a utilização do recurso após a finalização da ligação. Portanto, o RAS provê serviços para autenticação e autorização de chamadas. H Sinalização de chamada: É utilizado para sinalizações entre componentes, podendo ser enviado sinais de SETUP que serão explicados mais adiante, sinais de sucesso, falhas, e etc. Pode também carregar operações adicionais, tais como a capacidade de realizar múltiplas chamadas e mantê-las. H.245 Controle de conferência: Pode ser utilizado, por exemplo, para o estabelecimento e controle das chamadas entre dois terminais. Como funcionalidade, ele pode determinar os modos para troca de mídia (codificação de mídia) e configurar streams de mídia. Para que possamos entender melhor o funcionamento do protocolo H.323, na Figura 6 apresentaremos um exemplo simples de comunicação entre clientes H.323. Neste exemplo, podemos ver a interoperabilidade que o H.323 suporta, envolvendo telefones analógicos ligados à rede de telefonia convencional e clientes H.323, possibilitando assim a heterogeneidade. As linhas em verde tratam-se dos canais RAS, as vermelhas do canal de controle de mensagens e o lilás do canal de sinalização de chamadas, onde todos foram descritos acima. Na ilustração, temos que o telefone da esquerda (A) deseja fazer uma ligação para o telefone da direita (B). A primeira mensagem é a de ARQ (Admission Request) que contém a estimativa da banda a ser utilizada, o modelo desejado de chamada (se direto ou roteado pelo GK), informação do destino, identificador da ligação, dentre outras informações. A resposta que o gatekeeper retorna para A é um ACF (Admission Confirm) que informa a banda a ser utilizada, o endereço de transporte e porta para a sinalização de chamadas (H.225). Após a autenticação do telefone A no gatekeeper, este envia um sinal SETUP contendo informações para a conexão ao
18 telefone B. Este faz requisições ao gatekeeper com a finalidade de autenticação e envia um sinal de CONNECT de volta para o telefone A, onde faz terminar o canal H.225 para sinalização de chamadas e inicia o protocolo H.245 para controle de conferência que é ilustrado como a mensagem 7 na figura. Antes de enviar este sinal de CONNECT, este envia duas mensagens: o ALERTING e o CALL PROCEEDING. O primeiro indica ao telefone A que o telefone B está chamando (ringing) enquanto que o segundo avisa que o estabelecimento da chamada foi iniciado e que nenhum outro estabelecimento de chamada será permitido. 15 Figura 6. Comunicação entre terminais H.323[15]. 2.2 SIP O protocolo SIP (Session Initiation Protocol) [4] surge como um protocolo para comunicação que possibilita aos usuários se comunicarem através de vários tipos de mídia, fazendo automaticamente o tratamento de sessões adequado para o tipo de mídia a ser utilizado e possibilitando a localização dos usuários de um modo simples, utilizando, por exemplo, servidores DNS (Domain Name Server) [19] para tal aplicação. O protocolo SIP é bastante ágil, uma ferramenta para muitas aplicações, modificando e terminando sessões que trabalham independentemente do tipo de sessão que está sendo utilizada. Na Figura 7 está ilustrado um exemplo do funcionamento do SIP. Pode-se observar a tentativa de localização de um telefone, sinalizando um pedido para se comunicar, negociando os parâmetros de sessões para que seja possível o estabelecimento da mesma e a finalização da sessão quando um dos telefones é desligado. Os servidores de proxy têm como funcionalidade a facilitação do estabelecimento da sessão entre ambos os usuários Alice e Bob como visualizado na figura. Neste exemplo Alice quer fazer uma ligação para Bob, que está conectado à Internet. Por sua vez, Alice está utilizando um telefone virtual (um aplicativo SIP no PC como, por exemplo, o X-Lite [20]) enquanto Bob utiliza um telefone IP com suporte a SIP (normalmente com uma atualização do firmware do telefone, pois tais telefones vêm com suporte aos protocolos do fabricante). Alice utiliza um SIP URI (Uniform Resource Identifier) para localizar Bob. Neste caso, uma URI para Bob seria onde biloxi.com é o domínio do servidor proxy de Bob. Alice também tem um SIP URI
19 16 Figura 7. Exemplo do funcionamento do protocolo SIP[15]. Como primeiro sinal, Alice envia um INVITE para Bob através do seu servidor proxy que se encarrega de procurar pela URI Esta sinalização é passada adiante até que o ponto final, ou seja, Bob, seja atingido. Como exemplo de uma requisição SIP, pode-se observar no Quadro 1 um cabeçalho de uma requisição INVITE. INVITE SIP/2.0 Via: SIP/2.0/UDP :5060 To: Bob From: Alice Call-ID: CSeq: INVITE Contact: Content-Type: application/sdp Contact-Length: 142 Quadro 1. Cabeçalho de uma requisição INVITE do protocolo SIP. Neste cabeçalho, temos o campo INVITE, que indica o destino a ser chamado, o campo Via indica o tipo de transporte a ser utilizado, o UDP, o endereço IP e a porta 5060 de Alice. O campo To indica a URI de Bob enquanto que o campo From especifica a URI de Alice. Pode-se
20 notar que ambos os campos To e From possuem um nome de visualização, sendo estes Bob e Alice. O Campo Call-ID identifica um identificador global da ligação, muitas vezes chamado de diálogo. CSeq especifica um número de seqüência que será incrementado a cada sinalização e Contact indica uma URI que contém um roteamento direto para identificações futuras. Content- Type contém uma especificação do corpo da mensagem e Contact-Lenght o tamanho do corpo da mensagem em bytes. Na Figura 7, ao receber um INVITE, o servidor proxy atlanta informa a Alice que irá tentar identificar Bob. Atlanta envia um INVITE para o servidor biloxi que também envia um sinal de Trying. Em seguida biloxi envia um INVITE para Bob que responde como Ringing, ou seja, está chamando. Este sinal é passado até Alice. Enquanto isso, um sinal de OK é enviado para Alice que atende ao telefone e envia um sinal de ACK para Bob indicando que atendeu. Em seguida uma comunicação é realizada utilizando o protocolo RTP (Real-Time Transport Protocol) [21]. Em seguida Bob desliga o telefone enviando um BYE para Alice que retorna um OK finalizando assim a conversa. Um procedimento registro precisa ser executado para que estes procedimentos acima possam ocorrer com sucesso. Este procedimento encontra-se na Figura 8. O usuário jan, através do IP e porta 5060 deseja se registrar no servidor SIP ou proxy, onde utilizou-se o programa SER para tal. O servidor registra sua localização no banco de dados [22] local, contendo o IP atual e porta do cliente associado ao usuário. Todas as vezes em que o cliente é registrado no servidor, os dados são atualizados. Em seguida o servidor retorna uma mensagem de OK para o cliente. 17 Figura 8. Registro em um servidor SIP [15].