Fernanda Andrade Oliveira. Estudo sobre Redes Ad-Hoc Móveis com Suporte à Descoberta de Serviços



Documentos relacionados
Redes de Computadores II. Professor Airton Ribeiro de Sousa

FICHA INFORMATIVA E DE TRABALHO MÓDULO REDE LOCAL INSTALAÇÃO

Rede de Computadores

Disciplina Fundamentos de Redes. Introdução ao Endereço IP. Professor Airton Ribeiro de Sousa Outubro de 2014

REDES DE COMPUTADORES

Redes de Computadores. Protocolos de comunicação: TCP, UDP

Universidade de Brasília

Redes de Computadores. Prof. André Y. Kusumoto

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

APOSTILA DE REDES DE COMPUTADORES PARTE - I I

Veja abaixo um exemplo de um endereço IP de 32 bits:

Java. para Dispositivos Móveis. Thienne M. Johnson. Novatec. Desenvolvendo Aplicações com J2ME

Informática I. Aula Aula 22-03/07/06 1

Capítulo 9 - Conjunto de Protocolos TCP/IP e Endereçamento. Associação dos Instrutores NetAcademy - Julho de Página

Arquitetura dos Sistemas de Informação Distribuídos

CAMADA DE REDE. UD 2 Aula 3 Professor João Carneiro Arquitetura de Redes 1º e 2º Semestres UNIPLAN

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Redes de Computadores. Prof. Dr. Rogério Galante Negri

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

Aula 4. Pilha de Protocolos TCP/IP:

SISTEMAS DISTRIBUIDOS

PARANÁ GOVERNO DO ESTADO

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Redes. Pablo Rodriguez de Almeida Gross

Entendendo como funciona o NAT

Sistemas Multimédia. Arquitectura Protocolar Simples Modelo OSI TCP/IP. Francisco Maia Redes e Comunicações

Introdução Introduç ão Rede Rede TCP/IP Roteame Rotea nto nto CIDR

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

1 Redes de Computadores - TCP/IP Luiz Arthur

TECNOLOGIA WEB INTERNET PROTOCOLOS

Capítulo 8 - Aplicações em Redes

Arquitetura de Rede de Computadores

MÓDULO 8 Modelo de Referência TCP/IP

SMTP, POP, IMAP, DHCP e SNMP. Professor Leonardo Larback

Guia de Conectividade Worldspan Go Res! A V A N Ç A D O

Redes de Computadores Modelo de referência TCP/IP. Prof. MSc. Hugo Souza

3) Na configuração de rede, além do endereço IP, é necessário fornecer também uma máscara de subrede válida, conforme o exemplo:

Arquitetura de Rede de Computadores

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Arquitetura e Protocolos de Rede TCP/IP. Modelo Arquitetural

Evolução na Comunicação de

IW10. Rev.: 02. Especificações Técnicas

Há dois tipos de configurações bidirecionais usados na comunicação em uma rede Ethernet:

REDES DE COMPUTADORES

Prof. Marcelo Cunha Parte 5

5 Mecanismo de seleção de componentes

Capítulo 6 - Protocolos e Roteamento

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

Serviço de datagrama não confiável Endereçamento hierárquico. Facilidade de fragmentação e remontagem de pacotes

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Arquitetura TCP/IP. Parte V Inicialização e auto-configuração (RARP, BOOTP e DHCP) Fabrízzio Alphonsus A. M. N. Soares

AULA 01 INTRODUÇÃO. Eduardo Camargo de Siqueira REDES DE COMPUTADORES Engenharia de Computação

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Aula Prática Wi-fi Professor Sérgio Teixeira

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

Aula 5 Cálculo de máscara e de subredes

QUAL O PROCEDIMENTO PARA CONFIGURAR AS IMPRESSORAS DE REDE BROTHER EM UM SISTEMA DEC TCP / IP para VMS (UCX) Procedimento

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

Redes de Computadores II INF-3A

Centro Tecnológico de Eletroeletrônica César Rodrigues. Atividade Avaliativa

Preparando um esquema de endereçamento de sua rede

Introdução a Computação Móvel

Tabela de roteamento

FTIN Formação Técnica em Informática Módulo Sistema Proprietário Windows AULA 04. Prof. André Lucio

PROJETO DE REDES

REDE DE COMPUTADORES

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

GESTÃO DE SISTEMAS E REDES YNAMIC HOST CONFIGURATION PROTOCOL

Modelos de Camadas. Professor Leonardo Larback

O modelo ISO/OSI (Tanenbaum,, 1.4.1)

5.2 MAN s (Metropolitan Area Network) Redes Metropolitanas

Sistemas Distribuídos

Endereços Lógicos, Físicos e de Serviço

TECNOLOGIA WEB. Principais Protocolos na Internet Aula 2. Profa. Rosemary Melo

Arquitetura TCP/IP. Parte IV Mapeamento de endereços IP em endereços físicos (ARP) Fabrízzio Alphonsus A. M. N. Soares

Wireless LAN (IEEE x)

ARP. Tabela ARP construída automaticamente. Contém endereço IP, endereço MAC e TTL

Assumiu em 2002 um novo desafio profissional como empreendedor e Presidente do Teleco.

PROJETO E IMPLANTAÇÃO DE INTRANETS

Rede d s d e d Com o pu p t u ado d r o es Conceitos Básicos M d o e d los o de d Re R de d s:

Aula Prática Roteador

Introdução ao Modelos de Duas Camadas Cliente Servidor

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 02. Prof. Gabriel Silva

REDES DE COMPUTADORES

Considerações no Projeto de Sistemas Cliente/Servidor

Roteamento e Comutação

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

A camada de rede. A camada de rede. A camada de rede. 4.1 Introdução. 4.2 O que há dentro de um roteador

A máscara de sub-rede pode ser usada para dividir uma rede existente em "sub-redes". Isso pode ser feito para:

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Módulo 16 Redes sem Fio (Wireless)

Sumário INTRODUÇÃO... 4 PROTOCOLO ARP...5 ARP - ADDRESS RESOLUTION PROTOCOL...5 FUNCIONAMENTO DO PROTOCOLO ARP...5 CACHE ARP... 6

Redes de Computadores e a Internet

Transcrição:

Fernanda Andrade Oliveira Estudo sobre Redes Ad-Hoc Móveis com Suporte à Descoberta de Serviços Vitória-ES 28 de março de 2011

Fernanda Andrade Oliveira Estudo sobre Redes Ad-Hoc Móveis com Suporte à Descoberta de Serviços Monografia apresentada para obtenção do Grau de Bacharel em Ciência da Computação pela Universidade Federal do Espírito Santo. Orientadora: Profa. Dra. Roberta Lima Gomes DEPARTAMENTO DE INFORMÁTICA CENTRO TECNOLÓGICO UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO Vitória-ES 28 de março de 2011

Monografia de Projeto Final de Graduação sob o título Estudo sobre Redes Ad-Hoc Móveis com Suporte à Descoberta de Serviços, defendida por Fernanda Andrade Oliveira e aprovada em 28 de março de 2011, em Vitória, Estado do Espírito Santo, pela banca examinadora constituída pelos professores: Profa. Dra. Roberta Lima Gomes Universidade Federal do Espírito Santo Orientadora Prof. Dr. Magnos Martinello Universidade Federal do Espírito Santo Renan Manola Universidade Federal do Espírito Santo

DEDICATÓRIA À minha mãe, minha madrinha e minhas avós (In Memoriam).

AGRADECIMENTOS Agradeço à minha família pelo amor e suporte em todos esses anos. Em especial à minha mãe, meu padrasto e minhas irmãs por estarem sempre perto, nos bons e maus momentos. Agradeço também à minha madrinha e sua família, pelo carinho e incontáveis orações. À minha grande amiga Mariana que me aguentou e me escutou nos momentos de desespero e nos momentos de superação. Agradeço à minha orientadora Roberta, pela paciência, comprometimento e pela oportunidade que me foi dada, aprendi muito nesse último ano e a isso sou eternamente grata. Agradeço também ao Magnos e Renan pelo apoio e ensinamentos. Agradeço aos meus amigos de turma Carol e Julião, pelos 4 anos e meio de luta, vocês fizeram o percurso ser mais agradável. Ao João Thompson e Aline pela companhia agradável no laboratório e cantina. E ao João Vitor que inúmeras vezes me ajudou com os problemas no LPRM. Por fim, agradeço aos meus amigos de Aruanda, sem vocês eu não teria conseguido chegar até aqui.

«Il faut être convaincu qu on est doué pour quelque chose et que cette chose, quel qu en soit le prix, doit être atteinte.» Marie Curie

RESUMO Este trabalho consiste em um estudo sobre redes ad-hoc e dispositivos móveis dando enfoque à descoberta de serviços. São discutidos os conceitos, tecnologias e padrões de redes ad-hoc móveis e descoberta de serviços. O padrão Zero Configuration Networking (ZeroConf) é apresentado e os seus protocolos componentes são descritos de forma detalhada. O trabalho também apresenta a plataforma para dispositivos móveis Android, dando enfoque ao suporte a redes ad-hoc. Através da API JmDNS, que implementa o padrão ZeroConf em Java, são desenvolvidas duas aplicações: uma de descoberta de serviços e outra de mensagem instantânea para redes ad-hoc.

ABSTRACT This work presents a study on ad-hoc networks and mobile devices with focus on service discovery. Discuss the concepts, technologies and patterns of ad-hoc networks and service discovery. The pattern Zero Configuration Networking (ZeroConf) is presented and its protocol components are described in detail. The work also features the Android platform for mobile devices, focusing on the support of ad-hoc networks. Through the API JmDNS, which implements the pattern in Java, are developed two applications: a service discovery and a instant messaging application for ad-hoc networks.

SUMÁRIO LISTA DE FIGURAS LISTA DE SIGLAS E ABREVIATURAS 1 INTRODUÇÃO... 14 1.1 OBJETIVOS... 15 1.2 METODOLOGIA... 15 1.3 ESTRUTURA DA MONOGRAFIA... 16 2 FUNDAMENTAÇÃO TEÓRICA... 17 2.1 DISPOSITIVOS PORTÁTEIS... 17 2.1.1 Tecnologias... 18 2.2 REDES AD-HOC MÓVEIS... 19 2.2.1 WiFi... 22 2.3 DESCOBERTA DE SERVIÇOS... 24 2.3.1 Arquitetura de Descoberta de Serviços... 25 2.3.2 Tecnologias de Descoberta de Serviços... 27 2.4 CONSIDERAÇÕES SOBRE O CAPÍTULO... 29 3 ZERO CONFIGURATION NETWORKING... 30 3.1 ENDEREÇOS IP SEM DHCP... 31 3.1.1 Atribuição Manual... 31 3.1.2 Servidor DHCP... 32 3.1.3 Auto-atribuição com IPv4LL... 33 3.2 RESOLUÇÃO DE NOMES SEM DNS... 34 3.2.1 Multicast DNS... 34 3.3 BUSCANDO POR SERVIÇOS... 35 3.4 IMPLEMENTAÇÕES... 38 3.5 CONSIDERAÇÕES SOBRE O CAPÍTULO... 39 4 IMPLEMENTAÇÃO... 40 4.1 PLATAFORMA ANDROID... 40 4.1.1 Arquitetura... 41 4.1.2 Ambiente de Desenvolvimento... 42 4.2 AD-HOC EM ANDROID... 44 4.3 JmDNS... 46 4.4 APLICAÇÃO DE DESCOBERTA DE SERVIÇOS... 46 4.4.1 Cenário de Utilização da Aplicação... 47 4.5 APLICAÇÃO DE MENSAGEM INSTANTÂNEA... 52 4.5.1 Cenário de Utilização da Aplicação... 52 4.6 DIFICULDADES NA IMPLEMENTAÇÃO... 54 4.7 CONSIDERAÇÕES SOBRE O CAPÍTULO... 55

5 CONCLUSÕES E TRABALHOS FUTUROS... 57 5.1 TRABALHOS FUTUROS... 59 REFERÊNCIAS

LISTA DE FIGURAS Figura 1: Rede ad-hoc multi-hop... 20 Figura 2: Arquitetura de camadas MANET... 21 Figura 3: Rede WiFi infraestruturada e ad-hoc... 23 Figura 4: Registros A, SRV e PTR... 36 Figura 5: Registros não preenchidos... 37 Figura 6: Arquitetura Android... 41 Figura 7: (a) Tela inicial da aplicação (b) Tela de registro de serviço (c) Tela de descoberta de serviços... 47 Figura 8: Alice busca por serviços... 48 Figura 9: Nenhum serviço encontrado... 48 Figura 10: Alice registra serviço de presença... 49 Figura 11: Bob registra serviço de presença... 49 Figura 12: Bob busca por serviços de presença... 50 Figura 13: Resultado de busca de serviços... 50 Figura 14: Resolução de serviço... 51 Figura 15: Resultado da resolução de serviço... 51 Figura 16: Tela de conexão... 53 Figura 17: (a) Tela de troca de mensagens (b) Chat... 53

LISTA DE SIGLAS E ABREVIATURAS AAPT ADB ADT AODV AP API CSMA/CA CT DCF DDMS DHCP DNS DNS-SD DSR DSSS FHSS FTP GPS HTTP IBSS IDE IEEE Android Asset Packaging Tool Android Debug Bridge Android Development Tools Ad-Hoc On-Demand Distance Vector Access Point Application Programming Interface Carrier Sense Multiple Access with Collision Avoidance Centro Tecnológico Distributed Coordination Function Dalvik Debug Monitor Server Dynamic Host Configuration Protocol Domain Name System Domain Name System Service Discovery Dynamic Source Routing Direct Sequence Spread Spectrum Frequency Hopping Spread Spectrum File Transfer Protocol Global Positioning System HyperText Transfer Protocol Independent Basic Service Set Integrated Development Environment Institute of Electrical and Electronics Engineers

IETF IP IPP IPv4LL ISM LAN LPRM MAC MANET mdns OHA OLSR P2P PAN PDA QoS RFC RREP RREQ SDK SO SSDP TBRPF Internet Engineering Task Force Internet Protocol Internet Printing Protocol Internet Protocol version 4 Link Local Industrial, Scientific and Medical Local Area Network Laboratório de Pesquisas em Redes e Multimídia Media Access Control Mobile Ad-Hoc Network Multicast Domain Name System Open Handset Alliance Optimized Link State Routing Peer-to-Peer Personal Area Network Personal Digital Assistant Quality of Service Request for Comments Route Reply Route Request Software Development Kit Sistema Operacional Simple Service Discovery Protocol Topology Broadcast based on Reverse-Path Forwarding

TCP UDP UI UPnP WiFi WiMAX XML XMPP ZeroConf Transmission Control Protocol User Datagram Protocol User Interface Universal Plug and Play Wireless Fidelity Worldwide Interoperability for Microwave Access Extensible Markup Language Extensible Messaging and Presence Protocol Zero Configuration Networking

14 1 INTRODUÇÃO A última década presenciou uma revolução na área de informática denominada computação móvel. O desenvolvimento de diferentes tecnologias possibilitou que dispositivos móveis como celulares, se tornassem menores e mais potentes, resultando em uma grande demanda por aplicações e soluções para tais dispositivos. Ao mesmo tempo, as redes sem fio se desenvolveram, tornando-se mais confiáveis, mais seguras e mais populares. No escopo de redes sem fio se destacam as redes ad-hoc, que são redes que não necessitam de infraestrutura para serem estabelecidas. As redes ad-hoc caracterizam um vasto assunto de pesquisa e apresentam grandes desafios como, por exemplo, a implementação de seu roteamento. Entretanto, seu uso ainda é pouco comum entre os usuários de dispositivos móveis, o que demonstra um potencial de utilização ainda não explorado e um mercado promissor de aplicações. Diante da expansão e popularização dos dispositivos móveis, aumentam-se as situações de uso e aplicações de redes móveis (ou redes de dispositivos móveis) e também a necessidade de se pesquisar soluções para problemas que envolvam especificamente redes móveis. Tais pesquisas devem sempre visar o melhor aproveitamento dos recursos dos equipamentos e praticidade para os usuários. Junto ao desenvolvimento de dispositivos móveis e redes sem fio, existe também o aumento da oferta de serviços em redes. Além dos serviços tradicionais que foram definidos com o estabelecimento da Internet, tais como serviços de Telnet, FTP e serviços de correio eletrônico, atualmente existem diversos novos serviços e a expectativa de um maior crescimento do número de serviços disponíveis em uma rede local, por exemplo. Em redes sem fio móveis os serviços ficam espalhados pela rede e a disponibilidade de serviços é ainda maior, pois cada dispositivo componente da rede tem a potencialidade de prover serviços enquanto pertencer à rede. Com o crescimento do número de serviços e com a dinamicidade com que esses serviços podem ser disponibilizados ou removidos de uma rede sem fio, tem-se a necessidade de se utilizar descoberta de serviços. Uma aplicação de descoberta de serviço possibilita que o

15 usuário da rede localize os serviços oferecidos pela rede, provendo um maior aproveitamento dos recursos da rede. O surgimento de novas tecnologias para dispositivos móveis, principalmente tecnologias abertas, a possibilidade de se utilizar redes ad-hoc em diversos cenários, o suporte de mecanismos de descoberta e publicação de serviços nessas redes, e a necessidade de melhor compreensão e utilização dessas redes, são as principais motivações deste trabalho. 1.1 OBJETIVOS Este trabalho tem como objetivo geral o estudo de tecnologias de suporte à criação de redes ad-hoc com dispositivos móveis, com foco nos mecanismos de descoberta de serviços para este tipo de ambiente. Este objetivo geral desdobra-se nos seguintes objetivos específicos: pesquisar as diversas plataformas de dispositivos móveis disponíveis; estudar os fundamentos e protocolos envolvendo redes ad-hoc móveis; escolher e estudar uma plataforma móvel específica para por em prática os estudos realizados neste trabalho; estudar e testar o suporte aos mecanismos de redes ad-hoc na plataforma escolhida; estudar protocolos e bibliotecas de descoberta de serviço no contexto de redes adhoc móveis; realizar testes de bibliotecas abertas para implementação de mecanismos de descoberta de serviços em redes; implementar aplicação móvel que utilize a descoberta de serviços. 1.2 METODOLOGIA A metodologia utilizada foi a leitura e análise de artigos e livros sobre os assuntos de dispositivos móveis, redes sem fio, redes ad-hoc e descoberta de serviços. Busca e estudo de

16 protocolos de redes ad-hoc e descoberta de serviços. Também foram pesquisadas bibliotecas ou APIs que implementassem os protocolos utilizados. Para testar e por em prática os conceitos estudados, uma plataforma móvel aberta foi escolhida e estuda. Foi necessário verificar o suporte dessa plataforma quanto à criação de redes ad-hoc, e solucionar os possíveis problemas relacionados à rede. Dentre as APIs estudas, foi escolhida uma para servir de base à implementação de duas aplicações: uma de descoberta/publicação de serviços, e uma de mensagem instantânea que utiliza informações coletadas pela primeira aplicação. 1.3 ESTRUTURA DA MONOGRAFIA A presente monografia encontra-se estruturada da seguinte forma: O CAPÍTULO 2: Apresenta a fundamentação teórica que abrange dispositivos móveis, suas características e limitações e apresenta algumas tecnologias de celulares e smartphones. Esse capítulo também discorre sobre redes ad-hoc móveis e a tecnologia de redes sem fio WiFi. Ainda nesse capítulo, é discutida a descoberta de serviços e são apresentados alguns protocolos para a localização de serviços. CAPÍTULO 3: Apresenta uma explicação detalhada das características e do funcionamento do padrão Zero Configuration Networking. Um padrão que compreende a criação de redes IP e descoberta de serviços baseada em DNS (Domain Name System). CAPÍTULO 4: Apresenta a plataforma para celulares Android, expõe a falta de suporte do Android à redes ad-hoc, trazendo uma solução para essa limitação. Apresenta também a API JmDNS que é usada na implementação das aplicações de descoberta de serviços e mensagem instantânea. O capítulo também explica o funcionamento das aplicações, trazendo ao seu final considerações sobre as dificuldades encontradas nas implementações. CAPÍTULO 5: Apresenta as conclusões e trabalhos futuros.

17 2 FUNDAMENTAÇÃO TEÓRICA Este capítulo consiste na explanação dos conceitos de dispositivos portáteis, redes ad-hoc e descoberta de serviços. Esses conceitos estão interligados e são necessários para o entendimento das redes ad-hoc móveis habilitadas com descoberta de serviços. 2.1 DISPOSITIVOS PORTÁTEIS Dispositivos portáteis, também chamados de dispositivos móveis, são diversos equipamentos que possuem características em comum, como tamanho reduzido, tela pequena, baixo poder de processamento, pouca memória e limitada autonomia de bateria, possuindo ainda uma ou mais interfaces de comunicação sem fio. Esses equipamentos apresentam limitações de recursos computacionais se comparados a computadores desktop ou notebooks devido ao seu tamanho reduzido. Entretanto desde o surgimento dos primeiros dispositivos portáteis, verifica-se um aumento expressivo de seu poder computacional, o que vem possibilitando o desenvolvimento de aplicações que antes só eram encontradas em desktops. Exemplos comuns são celulares, smartphones, relógios, mp3 players e PDAs (Personal Digital Assistant). No escopo deste trabalho, os dispositivos portáteis serão representados pelos celulares e smartphones, e doravante referenciados como celulares. Além dos serviços básicos de telefonia, os celulares apresentam funcionalidades de multimídia como câmera de vídeo e fotos, players de áudio, interfaces de rede Bluetooth e WiFi, sistema de localização por GPS, entre outras. O conjunto de funcionalidades oferecidos dependem do modelo e marca do dispositivo, sendo os mais populares os que apresentam o maior número de funcionalidades. Com o aumento da oferta de serviços e operações possíveis de se realizar com o dispositivo, cresce também o problema causado pela limitação do recurso de energia. A complexidade das operações exige uma maior disponibilidade de bateria. As transmissões de rede são um

18 dos processos mais custosos em termos de energia, necessitando uma maior atenção do desenvolvedor para implementar técnicas que evitam o desperdício desse recurso. Existem diversos sistemas operacionais para celulares. Alguns são de hardware específico, como os iphones da Apple, que é responsável pelo desenvolvimento tanto do dispositivo quanto do software. Outros como Windows Mobile e Android, são sistemas que aparecem em diversos tipos de hardware. 2.1.1 Tecnologias Diante da diversidade de sistemas e plataformas, atualmente se destacam algumas tecnologias, tanto por número de vendas quanto pela qualidade da estrutura oferecida para desenvolvedores. Alguns desses sistemas são: ios: É o sistema operacional do iphone, itouch e ipad. Lançado em 2007, apesar de possuir um SDK (Software Development Kit), somente aplicações autorizadas pela Apple podem ser instaladas no dispositivo. As aplicações são escritas em Objective-C; Symbian OS: É o sistema operacional dos aparelhos Nokia. Possui também um SDK e é programado em C++; Windows Mobile: É encontrado em diversas marcas de aparelhos. De código proprietário, vem sendo substituído pelo Windows Phone 7. Suas aplicações são programadas em C++; BlackBerry OS: É o sistema de código proprietário dos aparelhos BlackBerry. Não possui uma SDK, mas fornece uma API (Application Programming Interface) para desenvolvimento de códigos de terceiros com funcionalidade limitada; Android: Lançado em 2007, é uma pilha de software de código aberto para celulares. Mantido pela Google, procura ser a maior concorrência ao iphone. As aplicações são escritas em Java.

19 2.2 REDES AD-HOC MÓVEIS Conhecidas como MANET (Mobile Ad-Hoc Networks) redes ad-hoc móveis são redes formadas por dispositivos móveis (nós móveis) equipados com interface de rede sem fio que se comunicam entre si sem o auxilio de infraestrutura. Neste esquema, cada nó pode ser um servidor, cliente ou roteador. MANET também é o nome dado ao grupo de trabalho da IETF responsável pelo desenvolvimento e padronização de tais redes. Os conceitos de redes ad-hoc remontam à década de 70 com o projeto da DARPA (Defence Advanced Research Projects Agency), tais redes eram chamadas Packet Radio Networking naquela época. Inicialmente, portanto, as redes ad-hoc eram utilizadas para fins militares, possibilitando a comunicação em campos de batalha. A partir da década de 90 com os avanços nas tecnologias de radio comercial e redes sem fio, as pesquisas em redes ad-hoc se intensificaram e novos usos, fora do campo militar, surgiram. Essas redes são úteis em cenários onde não é possível se instalar uma infraestrutura, ou também onde não há necessidade de infraestrutura devido ao caráter temporário da rede. Alguns cenários possíveis são interação entre serviços de emergência em desastres naturais, conferencias e seminários, salas de aulas, ou simples necessidade de troca de arquivos. A rede ad-hoc mais simples é uma rede peer-to-peer formada por dispositivos que se encontram dentro de um mesmo alcance, e se auto-configuram numa rede single-hop. Entretanto, essa rede fica limitada a equipamentos que estão no mesmo alcance de transmissão, essa limitação pode ser superada pelo paradigma multi-hop. Numa rede multi-hop, os pacotes são encaminhados da fonte até o destino. Nós próximos podem se comunicar diretamente através de uma tecnologia sem fio single-hop, nós que não estão diretamente conectados, se comunicam encaminhando seus pacotes através de uma sequência de nós intermediários, como pode se verificar na figura 1.

20 Figura 1: Rede ad-hoc multi-hop Na figura 1, os círculos representam o alcance de cada nó, as setas em azul demonstram a rota necessária para se atingir os nós periféricos. A flexibilidade e conveniência das redes ad-hoc móveis trazem alguns novos desafios. Além dos problemas tradicionais de redes sem fio, falta de estrutura fixa, a mobilidade dos nós e a natureza multi-hop adicionam novas características, complexidades e dificuldades específicas dessas redes, como por exemplo, topologia dinâmica da rede dificultando o roteamento, variação da capacidade dos enlaces e entrada e saída constante de novos nós. O grupo de trabalho MANET 1 da IETF adotou uma visão IP-cêntrica das MANETs que herdam as camadas da pilha TCP/IP. Conti e Giordano em (CONTI; GIORDANO, 2007) apresentam uma arquitetura formada pelas seguintes camadas: tecnologias de base (enabling technologies), rede (networking), middleware e aplicações (applications), como pode ser visto na figura 2. 1 http://tools.ietf.org/wg/manet

21 Figura 2: Arquitetura de camadas MANET (CONTI; GIORDANO, 2007) As tecnologias de base garantem a comunicação single-hop entre os dispositivos, compreendendo a camada MAC e a camada física da pilha TCP/IP. Os seguintes padrões suportam o paradigma de redes ad-hoc: IEEE 802.15.4 também conhecido como Zigbee para uso em redes de curto alcance e baixa taxa de dados, IEEE 802.15.1 ou Bluetooth para redes pessoais, 802.11 ou WiFi para redes de alta velocidade com médio alcance e 802.16 também chamado de WiMAX para redes de alta velocidade e alto alcance. A tecnologia mais utilizada é a 802.11 devido a prévia popularidade das redes sem fio WiFi. Os protocolos de rede utilizam os serviços de single-hop fornecidos pelas tecnologias de base para oferecer serviços de entrega fim-a-fim, do transmissor ao receptor fora da área de alcance. Roteamento e encaminhamento são os serviços básicos de rede. Roteamento é a função de identificar um caminho entre o transmissor e o receptor, encaminhamento é a função de entregar os pacotes através do caminho identificado. Essas funções estão ligadas com as características da topologia da rede. Devido à natureza imprevisível e dinâmica das redes ad-hoc móveis, seu roteamento apresenta grandes desafios. De acordo com o grupo de trabalho da IETF, os protocolos de roteamento são classificados em duas categorias principais: protocolos proativos ou reativos (sob demanda). Os protocolos proativos tentam manter informações de roteamento consistentes e atualizadas para cada par de nós da rede através da propagação de mensagens de atualização de rotas enviadas periodicamente. Por outro lado, protocolos reativos estabelecem rotas para encaminhamento somente quando necessário. De acordo com (CONTI; GIORDANO, 2007)

22 os quatro principais protocolos implementados são os reativos, AODV (Ad-Hoc On-Demand Distance Vector) e DSR (Dynamic Source Routing) e os proativos OLSR (Optimized Link State Routing) e TBRPF (Topology Dissemination Based on Reverse Path Forwarding). Dentre as questões que envolvem todas as camadas da rede estão controle do consumo de energia, segurança e qualidade de serviço (QoS). O consumo de energia é uma questão crucial quando se tratando de dispositivos móveis, faltando energia, os serviços ficam indisponíveis. A escolha de protocolos que visam a diminuição do consumo de energia é necessária. A qualidade de serviço não é garantida nativamente, pesquisas e padrões devem ser desenvolvidos. Redes ad-hoc são uma evolução importante das redes sem fio. Elas comportam diversas potencialidades que não estão disponíveis em redes sem fio tradicionais e podem ser utilizadas em diferentes ambientes. Como os sistemas móveis são relativamente recentes, a demanda por suporte a redes ad-hoc também é recente, ocasionando uma instabilidade no suporte a essas redes pelas tecnologias. Assim, apesar dos avanços e da quantidade de pesquisas, ainda há muito a ser desenvolvido e padrões a serem estabelecidos. 2.2.1 WiFi IEEE 802.11 2 ou WiFi é um padrão de transmissão de dados sem fio nas frequências de 2.4 e 5 GHz da banda ISM (Industrial Scientific and Medical). O grupo de trabalho responsável pelo padrão é o Working Group for WLAN Standards 3. O padrão proporciona redes LAN entre computadores, dispositivos móveis e redes físicas infraestruturadas. Definindo uma camada física e uma camada MAC nas suas especificações. Três diferentes tecnologias são definidas como interface da camada física: infravermelho, FHSS (Frequency Hopping Spread Spectrum) e DSSS (Direct Sequence Spread Spectrum). A tecnologia mais utilizada é a DSSS que oferece uma taxa de bits de 11 Mbps na faixa de 2 Disponível em http://standards.ieee.org/about/get/. 3 http://www.ieee802.org/11/index.shtml

23 2.4GHz e 54 Mbps na faixa de 5 GHz. O método de acesso básico da camada MAC é o Distributed Coordination Function (DCF) com Carrier Sense Multiple Access with Collision Avoidance (CSMA/CA). WiFi pode ser utilizado para implementar LANs infraestruturadas ou ad-hoc. Como pode ser visto na figura 3 que ilustra uma rede infraestruturada e seus componentes, e uma rede adhoc. Figura 3: Rede WiFi infraestruturada e ad-hoc (GIORDANDO, 2002) Em uma rede infraestruturada, existe uma entidade central de controle para cada célula chamado Access Point. Todo tráfego passa pelo AP, que também é responsável por conectar a rede sem fio a possíveis redes cabeadas existentes e fornecer o acesso a Internet. No modo ad-hoc, os dispositivos na mesma célula, chamada Independent Basic Service Set (IBSS), podem se comunicar diretamente com qualquer outro dispositivo dentro da célula, sem a interferência de uma entidade centralizadora. Devido à flexibilidade do algoritmo CSMA/CA, a sincronização dos dispositivos é suficiente para a correta recepção e transmissão de dados. O padrão 802.11 apresenta várias versões representadas por letras, em cada versão diferencia-se frequência de utilização, capacidade de vazão de bits entre outros aspectos.

24 2.3 DESCOBERTA DE SERVIÇOS A maioria das pesquisas envolvendo MANETs se concentram na conectividade entre os nós móveis devido às dificuldades impostas pelo dinamismo das redes. O dinamismo é consequência da mobilidade dos nós, condições adversas do canal sem fio, e limitações de energia dos dispositivos móveis, o que ocasiona frequentes desconexões e falha nos nós. Entretanto, para a adoção de MANETs, é necessário mais do que a solução do problema de conectividade. Como o objetivo dessas redes é possibilitar a troca de dados e serviços entre usuários móveis, também são necessários arquiteturas, mecanismos e protocolos para descoberta de serviços. Descoberta de serviços possibilita aos nós da rede: a publicação de seus serviços; a consulta de serviços fornecidos por outras entidades; a seleção do serviço mais apropriado; a invocação dos serviços. Inicialmente, descoberta de serviços era utilizada no contexto de redes infraestruturadas. Em MANETs, novos desafios surgem devido às características da rede, como: Disponibilidade dos serviços, devido à mobilidade dos nós; Frequentes desconexões do servidor ou do cliente ou de nós intermediários, quebrando ou modificando o acesso ao serviço ou algum parâmetro para sua seleção, como seu endereço IP por exemplo. Variabilidade do canal, levando a variabilidade de características de comunicação como taxa de envio de dados e atrasos. De acordo com (VERVERIDIS; POLYZOS, 2008) MANETs atraíram uma enorme atenção da comunidade científica nos últimos anos, entretanto a quantidade de aplicações civis permanece insignificante. Descoberta de serviços eficiente é um dos pontos chaves que precisam ser resolvidos para a aceitação de MANETs.

25 2.3.1 Arquitetura de Descoberta de Serviços Os protocolos de descoberta de serviços podem ser classificados devido a características que apresentam. Características como arquitetura, modo de operação, camada de rede em que são baseados, entre outras. Existem três arquiteturas básicas que um protocolo de descoberta de serviços pode adotar: arquitetura baseada em diretórios, arquitetura sem diretórios e arquitetura híbrida. Na arquitetura baseada em diretórios, um nó pode apresentar três papeis. Pode ser um servidor (provedor de serviços, oferecendo serviços para os outros nós), um cliente (solicitador de serviços, requisitando serviços de outros nós) ou um diretório de serviços (facilitador de comunicação entre servidores e clientes). Provedores de serviços registram seus serviços nos diretórios e os solicitadores de serviços são informados dos serviços disponíveis somente através dos diretórios. Um diretório pode ser centralizado ou distribuído, sendo que o primeiro é adotado principalmente em redes infraestruturadas, pois um diretório centralizado representa um ponto de falha. Em redes ad-hoc, a melhor solução são diretórios distribuídos pois nem sempre todos os nós estão disponíveis em todos os momentos. Diretórios distribuídos contribuem também para uma maior escalabilidade da estrutura, um único nó móvel teria dificuldade de responder a todas as requisições da rede. É importante ressaltar que a abordagem baseada em diretórios compreende custos adicionais de comunicação da rede para se manter a estrutura dos diretórios e no caso de diretórios distribuídos, também para se manter a consistência dos dados entre os componentes do diretório distribuído. A arquitetura sem diretórios difere da acima citada pois não há uma entidade mediadora entre os provedores e solicitadores de serviços. É uma arquitetura mais simples pois não necessita de mecanismos para seleção e manutenção de diretórios. Provedores publicam seus serviços e solicitadores requisitam serviços de forma broadcast pela rede.

26 Um problema básico na abordagem sem diretórios é determinar a frequência de mensagens de anúncio de serviços, de forma a diminuir a carga da rede e evitar transmissões redundantes. Uma solução encontrada é o scheduling, provedores anunciam os serviços periodicamente com o auxilio de algoritmo de back-off exponencial, ou seja os anúncios são cada vez menos frequentes até atingir um limiar determinado pelo algoritmo. Uma outra forma de se diminuir a carga da rede é utilizar multicasting. Servidores publicam seus serviços para um grupo multicast, e clientes requisitam serviços da mesma forma. Na arquitetura híbrida, caso encontrem um diretório, os provedores de serviços registram seus serviços nesses diretórios, caso contrário, eles simplesmente publicam seus serviços de forma broadcast. O mesmo acontece para os solicitadores de serviços, se conhecem algum diretório da rede, buscam por serviços no diretório, se não conhecem, buscam por serviços de forma broadcast. Pode-se confirmar em (VERVERIDIS; POLYZOS, 2008) que apesar das muitas publicações envolvendo cada uma das arquiteturas apresentadas, pesquisadores não chegaram a um consenso sobre qual arquitetura é melhor. Os critérios para avaliar as arquiteturas são: disponibilidade dos serviços, overhead de mensagens e latência. A dificuldade de se escolher uma arquitetura é devido às diferenças das características das MANETs, como número de nós, mobilidade dos nós, razão entre clientes e servidores, sendo assim cada arquitetura apropriada para um determinado cenário. Por exemplo, para uma MANET com alto grau de mobilidade e baixa frequência de requisição de serviços, uma arquitetura sem entidade mediadora é mais eficiente do que uma arquitetura baseada em diretório, pois a última teria informações constantemente desatualizadas ou teria um gasto altíssimo para manter a integridade das informações. Independente da arquitetura apresentada existem três possíveis modos de operação para um solicitador de serviços adquirir informações: modo reativo, modo proativo e modo híbrido. No modo reativo o cliente envia uma query ou para os servidores ou para o diretório em busca de serviços. No modo proativo, os servidores anunciam seus serviços em determinados intervalos de tempo. No modo hibrido, servidores anunciam seus serviços e clientes buscam serviços através de queries. Novamente, dependendo das características da

27 rede, um modo de operação é mais eficiente que outro. Quando o número de servidores é maior do que o de clientes, a abordagem mais apropriada é a reativa, no caso contrário, a mais apropriada é a proativa. Com relação a camada de rede, temos duas principais abordagens de descoberta de serviços, baseada na camada de aplicação ou cross-layer. A maioria dos protocolos baseados na camada de aplicação já eram utilizados em redes infraestruturadas. Mensagens de anúncio e descoberta são trocadas a nível de aplicação. Já a descoberta de serviços crosslayer, são específicas para redes móveis ad-hoc, e se utilizam das informações de roteamento para a descoberta de serviços. Descoberta de serviços cross-layer exploram a capacidade de conseguir informações sobre serviços juntamente com informações sobre rotas (pelas mesmas mensagens), carregando informações sobre serviços dentro das mensagens de roteamento. Dessa forma, transmissões redundantes na camada de aplicação são evitadas. Em suma, há diversas arquiteturas e características disponíveis. Devido às diferenças de composição e configuração das MANETs, não se pode classificar como uma arquitetura sendo melhor que outra, só a que melhor se adapta a uma situação. Na próxima seção são apresentados algumas tecnologias para implementação ou suporte de descoberta de serviços. 2.3.2 Tecnologias de Descoberta de Serviços Tecnologias de descoberta de serviços são desenvolvidas para simplificar o uso de dispositivos em redes, permitindo que serviços e equipamentos sejam descobertos, configurados e usados por outros dispositivos com o mínimo de trabalho manual. De acordo com (RICHARD, 2000), apesar desses padrões de descoberta de serviços apresentarem funcionalidades similares, nenhuma das tecnologias compreende todas as outras e é madura o suficiente para dominar o mercado.

28 Como exemplo de protocolos de descoberta de serviços retirados de (VERVERIDIS; POLYZOS, 2008) e (SU; GUO, 2008) temos: Jini: Desenvolvida pela Sun, é uma arquitetura que especifica a descoberta e invocação de serviços para dispositivos habilitados com Java, uma máquina virtual Java é obrigatória. Jini possui um servidor de lookup que funciona como um diretório, armazenando serviços publicados por provedores de serviços e respondendo a queries de clientes. Os provedores de serviço registram seus serviços no servidor de lookup enviando objetos de serviços e seus atributos. Objetos de serviços são proxies escritos em Java que servem de interface para o acesso remoto de clientes ao serviço. Os clientes recebem esses proxies dos servidores de lookup, através de suas requisições; Simple Service Discovery Protocol: SSDP é o protocolo de descoberta de serviços utilizado pelo UPnP (Universal Plug and Play). UPnP é um conjunto de protocolos que busca expandir o conceito de Plug and Play para os componentes de uma rede, buscando o reconhecimento e configuração automáticos de novos dispositivos na rede. O protocolo apresenta estrutura de diretórios opcionais denominados pontos de controle. A descoberta de serviços se dá utilizando HTTP sobre UDP multicast ou unicast. SSDP é considerado um protocolo custoso, principalmente em memória, dificultando sua implementação em dispositivos com limitados recursos computacionais. DNS Service Discovery: DNS-SD é o protocolo de descoberta de serviços proposto pelo padrão Zero Configuration Networking. Desenvolvido para ser utilizado em diversos dispositivos com interface de rede IP, inclusive pequenos dispositivos como sensores ou câmeras, é um protocolo simples e leve, adequado ao uso em aparelhos celulares. A descoberta de serviços é baseada em DNS (Domain Name System), usando os registros do já estabelecido padrão DNS para efetuar a busca e registro de serviços. AODV Service Discovery: É a descoberta de serviços cross-layer baseada no protocolo de roteamento AODV (Ad-Hoc On-Demand Distance Vector). O protocolo aproveita os mecanismos de roteamento para a descoberta de serviços. AODV-SD estende o formato das mensagens de RREQ (Route Request) e RREP (Route Reply) do

29 protocolo de roteamento. Assim, cada nó contém uma lista com informações de serviços. Cada linha da lista contém um identificador único do serviço, seu endereço IP, a duração do serviço e os atributos do serviço. 2.4 CONSIDERAÇÕES SOBRE O CAPÍTULO O capítulo discorreu sobre os conceitos fundamentais de redes ad-hoc móveis e descoberta de serviços. A descoberta de serviços é uma ferramenta essencial para o bom uso e aproveitamento dos recursos da rede, principalmente redes ad-hoc em que os usuários têm grande mobilidade, saindo e entrando do alcance da rede, fazendo com que os serviços disponíveis sejam desconhecidos à maioria dos participantes. Apesar do grande número de pesquisas e protocolos propostos, não há ainda uma solução definitiva em relação ao roteamento da rede. Com relação às camadas física e MAC, o protocolo 802.11 se apresenta como uma tecnologia bem desenvolvida e estável. O estudo sobre redes ad-hoc se mostra necessário, pois em termos de usuários finais, ainda são pouco aproveitadas as capacidades que a rede oferece, muito mais do que aplicações de troca de conteúdo multimídia, redes ad-hoc podem tornar a troca de informações mais rápida, simples e ubíqua. O próximo capítulo apresenta-se de forma mais detalhada o conjunto de protocolos Zero Configuration Networking que se adapta bem ao uso em redes ad-hoc, oferecendo um protocolo de auto-atribuição de endereços IP e um protocolo de descoberta de serviço, o DNS-SD.

30 3 ZERO CONFIGURATION NETWORKING Zero Configuration Networking ou ZeroConf representa um conjunto de protocolos que envolve três tecnologias com o propósito de se construir redes IP de forma ad-hoc com o mínimo de configuração possível, buscando a simplicidade e visando ser utilizado também por periféricos com pouca capacidade computacional como câmeras e impressoras de rede. Essas tecnologias são: IPv4 Link-Local Address, Multicast DNS e DNS Service Discovery. Desde 1999 existe um grupo de trabalho da IETF (Internet Engineering Task Force) responsável por padronizar o ZeroConf. De acordo com seu criador, Stuart Cheshire (CHESHIRE; STEINBERG, 2005), o objetivo é tornar redes IP tão simples como redes elétricas, onde é possível se plugar um equipamento e ele já está pronto para usar. Assim, ZeroConf propõe a criação de redes IP em que os usuários não se deparam com configurações de endereço IP ou máscaras de subrede, por exemplo. Além disso, ZeroConf também dispensa a necessidade de infraestrutura de rede. Servidores de DNS e DHCP são substituídos pelas tecnologias que compõe o protocolo. ZeroConf compreende endereçamento, nomeação e busca por serviços. O endereçamento é proposto sem configuração manual ou servidor DHCP e é implementado pelo IPv4 Link-Local Address (IPv4LL). A resolução de nomes dispensa o uso do servidor DNS, pois é realizada pelo Multicast DNS (mdns). A busca por serviços ou descoberta de serviços é baseada em DNS, realizada também pelo mdns e chamada de DNS Service Discovery (DNS-SD). É necessário esclarecer, entretanto, que essas três tecnologias podem ser utilizadas em separado. Podese utilizar mdns em uma rede onde o endereçamento é realizado por um servidor DHCP por exemplo. Neste capítulo serão descritas essas tecnologias e o papel das mesmas no ZeroConf.

31 3.1 ENDEREÇOS IP SEM DHCP Todo equipamento pertencente a uma rede IP necessita de um endereço IP que seja único na rede. Assim, para se atribuir um endereço IP é necessário escolher um endereço IP válido e confirmar sua unicidade na rede. Existem diferentes formas de se atribuir um endereço IP, sendo estas: atribuição manual, servidor DHCP ou auto-atribuição com IPv4LL. 3.1.1 Atribuição Manual Toda plataforma possibilita a configuração manual do endereço IP. Para a configuração são necessários: endereço de rede: os endereços do tipo IPv4 são formados por 4 octetos formando um total de 32 bits. Cada octeto pode ser representado de forma decimal, sendo separados por pontos, como em 192.168.010.005. O endereço é formado por uma porção que identifica a rede e outra porção que identifica o host. máscara de subrede: identifica quais bits do endereço IP representam a porção da rede; endereço de gateway: endereço de um dispositivo da rede que possibilita a conexão entre hosts de diferentes redes; endereço de DNS padrão: endereço do serviço que possibilita a resolução de nomes em endereços IP. Uma autoridade central é responsável pela distribuição dos endereços e por evitar conflitos, normalmente essa autoridade é o administrador da rede. O administrador da rede é responsável por determinar a faixa de endereços válidos e quais estão disponíveis.

32 Das atribuições de endereço IP, a manual é a mais trabalhosa e propensa a erros. É mais fácil atribuir endereços inválidos ou repetidos quando essa atribuição é realizada por um ser humano. A escalabilidade da rede fica comprometida pela atribuição manual, pois em caso de reconfiguração da rede (troca da subrede por exemplo), se a rede for composta por muitas máquinas, essa reconfiguração levará muito tempo para ser executada. 3.1.2 Servidor DHCP O servidor DHCP (Dynamic Host Configuration Protocol) é uma forma automatizada, portanto menos propensa a erros, de se atribuir endereços IP aos equipamentos. O servidor é configurado com uma faixa de endereços válidos que pode distribuir aos equipamentos requisitantes. Há duas formas básicas de se configurar um servidor para a distribuição de endereços. A forma mais comum é tratar os equipamentos de forma anônima e distribuir os endereços com o princípio primeiro a chegar, primeiro a ser servido (first-come, first-served). Outra forma é distribuir um endereço IP específico para cada equipamento de acordo com uma tabela que liga o endereço IP ao endereço MAC da máquina. Esta tabela se encontra dentro do servidor. Algumas vantagens da utilização do servidor DHCP são a confiabilidade, pois os servidor garante que não haja dois equipamentos com o mesmo endereço IP na rede, e a automatização na atribuição dos endereços, o que torna uma possível reconfiguração da rede uma atividade mais veloz. Uma das desvantagens é que o usuário comum não sabe configurar um servidor DHCP, o que dificulta o uso de DHCP em redes em que não haja um administrador.

33 3.1.3 Auto-atribuição com IPv4LL Auto-atribuição com IPv4LL (IPv4 Link Local) é a atribuição de endereço IP proposta pelo ZeroConf. As atribuições anteriores, manual ou servidor DHCP, necessitam de uma autoridade central para controlar a distribuição de endereços. Já na auto-atribuição com IPv4LL, a seleção de endereços é feita de forma distribuída. Cada equipamento é responsável por escolher um endereço e verificar se é possível utilizá-lo. IPv4LL é um bloco de endereços definidos pelo RFC 3330 que só são válidos no domínio local da rede, e tem o propósito de serem utilizados para a auto-atribuição de IP. Os endereços IPv4LL estão compreendidos na subrede 169.254.0.0/16. O protocolo ARP (Address Resolution Protocol) é normalmente utilizado para a resolução de endereços IP em endereços MAC 4. Entretanto, o protocolo ZeroConf faz uso de mensagens ARP para a atribuição de endereços IP. A atribuição de endereço IP se divide em duas partes: escolha do endereço IP e verificação da unicidade de tal endereço. A escolha se dá de forma randômica de um endereço compreendido de 169.254.1.0 a 169.254.254.255. A verificação da unicidade ocorre da seguinte maneira: envia-se uma mensagem ARP com o endereço intencionado para a rede. Se houver uma resposta a essa mensagem, significa que alguém já possui esse endereço, portanto deve-se reiniciar o processo e escolher outro endereço. Se não houver resposta após o envio de três mensagens ARP, entende-se que o endereço IP não está sendo utilizado, portanto o endereço escolhido é único. Antes de começar a utilizar o endereço escolhido, é necessário anunciar que o equipamento está utilizando aquele IP através de outra mensagem ARP. O bom funcionamento do protocolo depende da cooperação de todos os equipamentos da rede. Uma das características do protocolo é ser descentralizado, adequando-o ao uso em redes ad-hoc. 4 Endereço MAC é um endereço de 6 bytes, único, atribuído pelo fabricante da interface de rede com o propósito de identificá-lo.

34 3.2 RESOLUÇÃO DE NOMES SEM DNS Para o funcionamento da rede IP, é necessário que cada equipamento tenha seu endereço IP, entretanto memorizar endereços IP não é uma atribuição fácil ao ser humano, assim os endereços IP são normalmente relacionados a nomes. Surge então a necessidade de se resolver nomes em endereços IP. DNS (Domain Name System) é um sistema para nomeação de computadores e serviços de redes usado para localizar computadores e serviços através de nomes de fácil compreensão. O sistema associa o nome ao endereço IP do serviço. 3.2.1 Multicast DNS No sistema de servidor DNS, o cliente faz uma requisição de resolução de nome para o servidor, e esse responde com o endereço IP relativo ao nome. Uma alternativa mais simples e barata para redes locais é o Multicast DNS (mdns). Multicast DNS funciona com a colaboração de todas as máquinas da rede. Quando uma máquina faz uma query, ao invés de ela enviar para um servidor DNS ela envia para um endereço IP multicast, assim todas as máquinas envolvidas no processo recebem essa query. Cada máquina tem uma porção de software denominada Responder, responsável por escutar as queries. Quando uma máquina escuta uma query que é para si, ela a responde, como um servidor DNS convencional faria. A atribuição de nomes com mdns segue os mesmos princípios da auto-atribuição de endereços IP. É escolhido um nome, e depois através das queries é verificado a unicidade dos nomes. Em caso de nomes repetidos, pode-se pedir outro nome ao usuário ou anexar números ao final do nome para diferenciá-lo do nome já existente.

35 A resolução de nomes ocorre de uma forma colaborativa, todas as queries e respostas são enviadas ao endereço multicast 224.0.0.251 que é o endereço multicast reservado para o protocolo mdns. 3.3 BUSCANDO POR SERVIÇOS Depois de se ter um endereço IP e um nome que referencia este endereço, tornando-o mais fácil de se manipular, surge a necessidade de se conhecer os recursos oferecidos pela rede. Em uma rede com diversos dispositivos é comum a oferta de diferentes serviços. Conhecer e ter acesso aos serviços de forma automática, garante uma maior usabilidade da rede, principalmente em redes ad-hoc que são muito dinâmicas, tornando a disponibilidade dos serviços imprevisível. Surge assim a descoberta de serviços. Os nomes que representam os serviços aparecem em uma listagem, não necessitando mais decorar os nomes ou serviços existentes na rede. A descoberta de serviços proporciona o conhecimento e melhor aproveitamento de todos os serviços disponíveis na rede. Uma impressora, uma câmera, ou mesmo pessoas disponíveis para conversar. ZeroConf opta pela descoberta de serviços ao invés de descoberta de equipamentos, apesar de ser sutil a diferença, a descoberta por serviços desacopla a necessidade de ser o mesmo hardware oferecendo um serviço de impressão, por exemplo. Pode-se trocar a impressora, mas o serviço oferecido é o mesmo. Mantendo-se o mesmo nome do serviço, garante-se ao usuário que o serviço oferecido é o mesmo. Outra característica da descoberta de serviço oferecida pelo ZeroConf é a noção de late binding (ligação tardia). Como em muitos casos, decorre-se um tempo entre descobrir o serviço e realmente utilizá-lo, o serviço só é associado ao seu endereço IP no momento da utilização. Associar um serviço a seu endereço IP e porta é chamado de resolução de serviço.

36 A descoberta de serviços proposta pelo ZeroConf é baseada no DNS. As mensagens envolvidas na descoberta e resolução de serviços são do mesmo formato de queries DNS. As queries são do tipo SRV,PTR, A e TXT, já utilizadas pelos serviços DNS. O DNS se utiliza de vários registros ou mensagens para a resolução de nomes. Desses registros 4 são reutilizados pelo DNS-SD para a descoberta de serviço. O registro SRV contém nome, porta do serviço e nome do host, é utilizado para o registro e resolução do serviço. O registro PTR é na verdade um ponteiro, guarda o tipo de serviço e nome do serviço, é através do registro PTR que é realizada a busca dos nomes dos serviços disponíveis. O registro A guarda o endereço IP do serviço e o registro TXT é utilizado para informações adicionais do serviço, como características dos serviços e informações de configurações. Figura 4: Registros A, SRV e PTR Na figura 4 temos o exemplo dos três registros principais preenchidos: A, SRV e PTR. No registro A, observa-se o nome do host e o seu endereço IP. No registro SRV encontra-se o nome do serviço,a porta e o nome do host. Já no registro PTR, encontra-se o tipo de serviço e o serviço. Para a busca dessas informações, utiliza-se os registros não preenchidos, os registros de resposta à busca são da forma preenchida. Os registros não preenchidos podem ser observados na figura 5.

37 Figura 5: Registros não preenchidos O mdns é mecanismo responsável pela descoberta e resolução dos serviços utilizando essas queries. Portanto, a descoberta de serviços não requisita mais implementação de código, todo o código utilizado é o da implementação do mdns. Os serviços são classificados em tipos de serviços, para facilitar a busca. O tipo de serviço, na maioria dos casos, é o protocolo utilizado pelo serviço. Alguns exemplos de tipos de serviços são: presença: Os serviços de presença anunciam a presença de um usuário, como em uma aplicação de mensagem instantânea, apresentando uma lista de pessoas disponíveis para conversar; ipp: Para serviços de impressão que utilizam o protocolo de impressão Internet Printing Protocol. http: Para serviços que funcionam sobre o protocolo HTTP e pode ser visualizado em um web browser. Vale ressaltar que é possível registrar mais serviços à medida que são criadas aplicações diferentes. Em (http://www.dns-sd.org/servicetypes.html) é possível acessar o RFC 2782 que padroniza os nomes de tipos de serviços, e verificar a lista com todos os tipos de serviços já registrados bem como orientações para o registro de novos tipos. Qualquer API que implemente a descoberta de serviços precisa fornecer três operações básicas: registrar, buscar e resolver. Uma aplicação de descoberta de serviços deve possibilitar que se registre o serviço a ser anunciado, especificando o nome do serviço, o tipo de serviço, seu endereço IP e sua porta. Deve também possibilitar buscar o serviço. Essa busca deve ser feita por tipo de serviço, assim a relação de todos os serviços de determinado

38 tipo disponíveis na rede deve ser mostrada. E finalmente, resolver os serviços. Na busca de serviços a operação realizada apenas lista os nomes dos serviços disponíveis, os nomes dos serviços são descobertos através de trocas de mensagens do tipo PTR. Porém para se utilizar os serviço é necessário saber seu IP e porta. Para se obter essas informações é necessário uma nova operação que é chamada resolução de serviço, onde os dados do serviço escolhido são descoberto através de trocas de mensagens do tipo SRV. A resolução do serviço é feita no momento de se utilizar o serviço para garantir que os dados fornecidos sejam atuais. A descoberta de serviços para redes ad-hoc é uma ferramenta que torna a usabilidade da rede muito maior. É comum, participantes de redes ad-hoc não conhecerem os outros nós da rede e assim, não conhecerem os serviços disponíveis na rede. A descoberta de serviços proporciona que sejam implementadas diversas aplicações que possam ser publicadas e bem utilizadas pelos integrantes da rede. 3.4 IMPLEMENTAÇÕES O protocolo de auto-atribuição com IPv4LL surgiu anteriormente ao padrão ZeroConf. As primeiras implementações de IPv4 Link-Local apareceram no MAC OS 8.5, MAC OS X 10.0, Windows 98 e no Linux através do ZCIP 5. Clientes Multicast DNS podiam ser encontrados no MAC OS 9.2, MAC OS X, no Windows através do Bonjour for Windows 6 e no Linux através do NICTA. DNS-SD estava disponível no MAC OS X 10.2 em diante e no Linux através do projeto open-source Darwin 7. Implementações ZeroConf são encontradas nas principais plataformas. A implementação mais conhecida é a Apple Bonjour 8, seguida do Ahavi 9, a implementação ZeroConf para Linux e BSD. Há também o Bonjour for Windows. 5 http://sourceforge.net/projects/zeroconf/ 6 http://support.apple.com/en_us/downloads/#bonjour for windows 7 http://darwinsource.sourceforge.net/ 8 http://developer.apple.com/opensource/ 9 http://avahi.org/