Uma Rede de Compartilhamento de Conteúdo Multimídia em Dispositivos Móveis Baseados na Plataforma Android



Documentos relacionados
1

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

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

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

DESENVOLVIMENTO DE UM APLICATIVO DO TIPO SECRETÁRIO VIRTUAL PARA A PLATAFORMA ANDROID

Introdução ao Modelos de Duas Camadas Cliente Servidor

O que é o Android? O que é o Android

Introdução Dalvik Linux 2.6. Android. Diogo de Campos, João Paulo Pizani Flor, Maurício Oliveira Haensch, Pedro Covolan Bachiega

Sistemas Distribuídos

Arquitetura dos Sistemas de Informação Distribuídos

Dispositivos móveis e o mercado Android Open Handset Alliance Informações sobre Android Arquitetura

Relatorio do trabalho pratico 2

GT Computação Colaborativa (P2P)

FileMaker Pro 14. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 14

Sistemas Operacionais

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

SISTEMAS DISTRIBUIDOS

Resumo da solução SAP SAP Technology SAP Afaria. Gestão da mobilidade empresarial como vantagem competitiva

FileMaker Pro 13. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 13

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

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Visão geral Estrutura do sistema Ferramentas de desenvolvimento Uma aplicação. Android. Universidade Federal de Santa Catarina. 17 de dezembro de 2008

3 SCS: Sistema de Componentes de Software

ESTUDO DE CASO WINDOWS VISTA

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

Sistemas Operacionais

TRBOnet MDC Console. Manual de Operação

Um Driver NDIS Para Interceptação de Datagramas IP

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

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

Capítulo 8 - Aplicações em Redes

PROJETO E IMPLANTAÇÃO DE INTRANETS

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento

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

A INTERNET E A NOVA INFRA-ESTRUTURA DA TECNOLOGIA DE INFORMAÇÃO

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.

PROJETO INFORMÁTICA NA ESCOLA

Administração de Sistemas de Informação Gerenciais

:: Telefonia pela Internet

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

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

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

CONCEITOS E APLICAÇÕES DA COMPUTAÇÃO EM NUVEM


SISTEMAS DISTRIBUÍDOS

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

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

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

Trabalhos Relacionados 79

Roteamento e Comutação

UM FRAMEWORK PARA DESENVOLVIMENTO DE

FERRAMENTAS E SOLUÇÕES DE APOIO À GESTÃO E MANUTENÇÃO DE ATIVOS

A computação na nuvem é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

MANUAL DO USUÁRIO. Software de Imagem via Celular (isic) baseado no sistema operacional Symbian

Introdução à Linguagem Java

CRIAÇÃO DE SITES (AULA 1)

Automação de Locais Distantes

Introdução ao Active Directory AD

UFF-Fundamentos de Sistemas Multimídia. Redes de Distribuição de Conteúdo (CDN)

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

Como medir a velocidade da Internet?

PARANÁ GOVERNO DO ESTADO

Redes de Computadores II. Professor Airton Ribeiro de Sousa

Conceito de Rede e seus Elementos. Prof. Marciano dos Santos Dionizio

Manual. Roteador - 3G Portátil

Inicialização Rápida do Novell Vibe Mobile

Sistemas Distribuídos

O conjunto é composto por duas seções: o App Inventor Designer e o App Inventor Blocks Editor, cada uma com uma função específica.

5 Mecanismo de seleção de componentes

Segundo Pré-teste. Data de realização. 18 de Novembro de Local.

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS. Prof. Angelo Augusto Frozza, M.Sc.

7 Utilização do Mobile Social Gateway

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

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

Tecnologia e Informática

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

Informática. Informática. Valdir

Funcionalidade Escalabilidade Adaptabilidade Gerenciabilidade

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador

EVOLUÇÃO DOS SIST. DE COMPUTAÇÃO DÉC. DE 50 E 60

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

10 DICAS PARA TURBINAR SEU PACOTE DE DADOS. 1 - Desative os Dados do Celular. 2 Remova as notificações e atualizações automáticas

Laudon & Laudon Essentials of MIS, 5th Edition. Pg. 9.1

Novo cabo HDMI AVIS da Discabos

SISTEMAS DISTRIBUÍDOS

Introdução à Computação Móvel. Carlos Maurício Seródio Figueiredo

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

3 Qualidade de serviço na Internet

Entendendo como funciona o NAT

Curso de Aprendizado Industrial Desenvolvedor WEB

Conheça as soluções que compõem os Combos Claro e os benefícios que elas oferecem para sua empresa.

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

Evolução na Comunicação de

5 Estudo de caso: utilizando o sistema para requisição de material

A plataforma Android: Uma Introdução

Transcrição:

Uma Rede de Compartilhamento de Conteúdo Multimídia em Dispositivos Móveis Baseados na Plataforma Android Felipe Alexandre Oliveira Machado 1, Adriano Viana Pinto 1 e Mário Meireles Teixeira 1 1 Laboratório de Sistemas Avançados da Web (LAWS) Departamento de Informática Universidade Federal do Maranhão (UFMA) CEP: 65080-805 São Luís MA Brasil felipeomachado@gmail.com, adriano@laws.deinf.ufma.br, mario@deinf.ufma.br Abstract. Traditionally, P2P networks have used common computers, but more recently, with the widespread use of mobile devices, we note the growing trend of convergence of technologies in these devices, which should be accompanied by P2P networks. This article specifies and implements a P2P network architecture based on mobile devices running on the Android platform. It also developed an application for sharing multimedia content via streaming on this P2P network. Performance tests have shown that the connection speed and video coding rate were important factors on the response time and throughput of the system, and the CPU utilization varied from 20 to 50% depending on these factors. Resumo. Tradicionalmente, redes P2P têm funcionado em computadores, porém mais recentemente, com a disseminação do uso de dispositivos móveis, nota-se a crescente tendência de convergência de tecnologias nesses aparelhos, que deve ser acompanhada pelas redes P2P. Este trabalho especifica e implementa uma arquitetura de rede P2P baseada em dispositivos móveis operando sobre a plataforma Android. É também desenvolvida uma aplicação de compartilhamento de conteúdo multimídia via streaming sobre essa rede P2P. Testes de desempenho demonstraram que a velocidade de conexão e a taxa de codificação de vídeo foram fatores preponderantes sobre o tempo de resposta e a vazão do sistema, tendo a utilização da CPU variado de 20 a 50% conforme esses fatores. 1. Introdução As redes Peer-to-Peer (P2P) já fazem parte do cotidiano de muitas pessoas há mais de uma década. Surgiram inicialmente com o objetivo de compartilhar conteúdo entre usuários sem a necessidade de um servidor central, como no caso do paradigma clienteservidor. As redes P2P evoluíram rapidamente na direção do compartilhamento de conteúdo relacionado a entretenimento, como músicas, vídeos, jogos, etc., sendo frequentemente associadas à pirataria, visto que que muitos usuários compartilhavam, e ainda compartilham, os arquivos armazenados em seus discos sem a devida atenção à questão dos direitos autorais. Com este intuito de compartilhamento de arquivos, surgiram arquiteturas famosas como Napster, Gnutella e Kazaa. Outro uso das redes P2P consiste na utilização de ciclos ociosos das CPUs dos equipamentos conectados à rede, que passam a ser utilizados como nós de uma máquina 71

paralela virtual, distribuída na rede, como no caso do projeto SETI@HOME. E, ainda, as redes P2P podem ser utilizadas para o fornecimento de serviços multimídia, como transmissão de áudio e vídeo, quer sob demanda ou em tempo real, a exemplo do Skype e de Redes de Distribuição de Conteúdo (CDNs) como Akamai. Durante muito tempo, a maioria dos nós das redes P2P foram somente computadores pessoais de mesa ou notebooks. Atualmente, com a popularização do uso de smartphones, tablets e dispositivos móveis em geral, com poder de processamento sempre crescente, cada vez mais as redes P2P passam a ser utilizadas a partir de plataformas móveis. Contudo, o que se observa é que esses dispositivos normalmente atuam apenas como clientes da rede, simplesmente consumindo recursos, sem no entanto compartilhar o próprio conteúdo armazenado ou fornecer serviços. Em particular, a utilização de redes P2P para serviços de streaming de mídia tem recebido atenção considerável de pesquisadores da área, pois permite aos dispositivos funcionar como um meio de armazenamento distribuído, contribuindo, buscando e obtendo conteúdo multimídia de forma autônoma (Zhang & Feng, 2009). Sua grande vantagem, em relação à computação cliente/servidor, é possibilitar a colaboração direta entre os usuários, sem depender de servidores administrados por terceiros (Rocha et al., 2004). No que diz respeito ao desenvolvimento de aplicativos para dispositivos móveis, a plataforma Android vem obtendo bastante aceitação pela comunidade de desenvolvedores por ser baseada em ferramentas de código aberto e com código fonte disponível ao público em geral; possuir uma ampla documentação; ter um investimento inicial em hardware relativamente baixo; apresentar uma curva de aprendizado suave para a criação de aplicativos, por utilizar a linguagem de programação Java, bastante difundida e popular; além de possuir uma base de usuários bastante extensa e com grande potencial de crescimento, razões que tornam esta plataforma altamente atrativa para desenvolvedores e usuários. Este artigo propõe uma arquitetura de rede peer-to-peer, denominada P2PDroid, voltada ao compartilhamento de conteúdo multimídia entre dispositivos móveis interconectados por uma rede P2P. Descreve, ainda, um protótipo desta rede, implementado em dispositivos baseados no sistema operacional Android. Apresenta também um aplicativo denominado Playinbuddy, que torna automático e transparente o fornecimento e a utilização de conteúdo multimídia por streaming entre os diversos aparelhos conectados pela rede P2PDroid. Por fim, foi feita uma avaliação de desempenho da solução apresentada, a qual demonstrou a viabilidade da arquitetura aqui proposta. Uma arquitetura de rede P2P com essas funcionalidades permite a formação de redes ad hoc de forma descomplicada entre dispositivos móveis próximos entre si, sem necessidade dos mesmos estarem conectados a uma rede Wi-Fi infraestruturada ou mesmo de possuírem um endereço IP válido, conforme comprovaram os testes realizados. Como exemplos de cenários de uso, uma rede P2P poderia ser formada entre dispositivos móveis em uma quadra de esportes ou numa praça de alimentação de um shopping center, a fim de distribuir áudio e vídeo sob demanda entre usuários detentores de aparelhos com o aplicativo Playinbuddy instalado, aqui com fins de entretenimento. Usos semelhantes poderiam ser realizados num chão de fábrica ou em campo, por 72

exemplo, para disseminação de dados captados por sensores entre celulares próximos não conectados a um servidor central, dentre outras possibilidades. No estágio atual do trabalho, o protótipo da rede P2PDroid foi implementado utilizando o padrão Wi-Fi Direct, sendo utilizado o protocolo UPnP para entrega de conteúdo multimídia, o que demonstra a flexibilidade da arquitetura P2P descrita, podendo-se conceber sua portabilidade para sistemas embarcados que utilizem estes protocolos já testados ou outros equivalentes. O restante deste artigo está organizado como segue: a Seção 2 trata de alguns trabalhos relacionados à presente proposta. A Seção 3 discute brevemente a arquitetura do sistema operacional Android e de suas aplicações, enquanto a Seção 4 apresenta o padrão Wi-Fi Direct utilizado na implementação do protótipo da rede P2PDroid, a qual é detalhada na Seção 5. Na Seção 6, descreve-se a aplicação PlayingBuddy e são apresentados resultados de testes de desempenho realizados com a mesma. Finalmente, a Seção 7 discute as conclusões e trabalhos futuros. 2. Trabalhos Relacionados Encontram-se na literatura algumas outras soluções que permitem o streaming de conteúdo multimídia entre dispositivos móveis, em redes ad hoc domésticas. O AirServer é uma solução proprietária desenvolvida pela App Dynamic (Dynamic, 2011). Constitui-se como um receptor Airplay (protocolo proprietário desenvolvido pela Apple e o aplicativo permite que o usuário transmita fluxos de mídia a partir de seus dispositivos ios para computadores Mac rodando Moutain Lion ou Mavericks. Como exemplos de seu uso, permite que um professor transmita, a partir de seu ipad, por exemplo, o conteúdo de uma apresentação para um MacBook conectado a um projetor. É possível também transformar qualquer jogo para o sistema operacional ios em multiplayer, com até 16 conexões simultâneas. O AirServer é compatível com uma ampla variedade aplicativos de terceiros, tais como YouTube, Vevo, e Air Media Center constituindo-se como uma poderosa ferramenta de compartilhamento de conteúdo multimídia para redes domésticas, desde que todos os dispositivos sejam fabricados pela Apple ou compatíveis com seus protocolos, o que reduz drasticamente a interoperabilidade desta solução, além de torná-la demasiado cara para um certo perfil de usuário. O Bubble UPnP Server (Bubblesoft, 2011) é um servidor de conteúdo multimídia que utiliza o protocolo UPnP e também disponibiliza um aplicativo para dispositivos com sistema Android que permite que um smartphone seja capaz de se conectar ao servidor e reproduzir em tempo real o conteúdo multimídia disponibilizado pelo mesmo. Pode ser executado em qualquer plataforma com Java 1.6 ou superior, incluindo várias versões de Windows, MacOS X e Linux. Entretanto, a instalação e configuração desta solução não é automática e pode ser um tanto complexa para usuários leigos, além de que os dispositivos móveis podem desempenhar apenas o papel de receptores de conteúdo multimídia, que é transmitido a partir do servidor central. Destaca-se, ainda, o PS3 Media Server, um servidor de mídia UPnP compatível com DLNA (PS3, 2008). Escrito em linguagem Java, suporta os principais sistemas operacionais, com versões para Windows, Linux e MacOS X. Com esta solução, é possível transmitir, transcodificar e receber conteúdo multimídia diretamente do console 73

Playstation 3 ou Xbox 360, com pouca ou nenhuma configuração. É oferecida uma interface com o usuário amigável e intuitiva, assim como suporte a uma ampla gama de formatos de conteúdo de mídia. Como pode ser observado, as soluções levantadas pecam ora por exigir software ou hardware proprietário, encarecendo-as ou por permitir transmissão de fluxos multimídia em apenas um sentido (servidor/cliente), além de todos elas possuírem um ponto central, concentrador, nem que seja para fins de configuração inicial. Por outro lado, a rede P2PDroid de que trata este artigo tem configuração automática e imediata e, como será visto à frente, não exige a figura de um servidor central e permite que cada dispositivo desempenhe o papel de servidor ou cliente, conforme a necessidade. Ademais, a rede P2PDroid funciona sobre o sistema operacional Android, a mais popular plataforma para dispositivos móveis na atualidade, endossada por uma ampla gama de fabricantes e com apelo para os mais diferentes tipos de usuários e fins. 3. Plataforma Android Android é uma plataforma de software da Google e da Open Handset Alliance (OHA, 2013) que tem revolucionado o mercado global de telefones celulares. A arquitetura do sistema operacional Android é dividida em camadas (Figura 1), sendo a do Kernel Linux a que dá sustentação às outras, permitindo uma abstração entre o hadware e o software. É responsável ainda por serviços indispensáveis em qualquer sistema operacional, como o gerenciamento de memória e o escalonamento de processos. Figura 1. Arquitetura do Android (Android Developers, 2013). 74

A camada superior, a de Aplicação, é composta por softwares como navegadores de internet, clientes de e-mail, mapas, jogos e aplicações de terceiros, todos escritos utilizando a linguagem de programação Java em conjunto com os frameworks da segunda camada, que oferecem funcionalidades como acesso a arquivos, telefonia, informações de localização, notificações, alarmes etc. Estes frameworks utilizam as bibliotecas escritas em C/C++ fornecidas pela camada seguinte. Elas disponibilizam ao desenvolvedor um meio de acesso aos recursos do sistema, como o banco de dados SQLite, a API de gráficos 3D OpenGL, bibliotecas de mídia, um gerenciador de superfícies, dentre outros. As aplicações no Android, apesar de ser escritas em Java, não são executadas em uma Máquina Virtual Java (JVM) convencional, mas sim na máquina virtual Dalvik, nativa do sistema. A Dalvik VM é uma máquina virtual baseada em registradores, otimizada para aparelhos com pouca memória e projetada de forma que múltiplas instâncias possam ser executadas simultaneamente, sendo o sistema operacional responsável pelos serviços de escalonamento de processos, suporte a threads e gerenciamento de memória. A Dalvik também implementa sua própria biblioteca de classes, não sendo totalmente compatível com as especificações J2SE ou J2ME. Diferentemente da JVM convencional, da Oracle, a Dalvik não executa os bytecodes Java, que por sua vez são convertidos para arquivos.dex (Dalvik Executable) e compactados em um único pacote com extensão.apk (Android Package), que é a forma como as aplicações para Android são distribuídas. As aplicações Android dividem-se em quatro blocos básicos: Activities, Services, Content Providers e Broadcast Receivers. Uma Activity é um componente da aplicação que fornece uma tela com a qual os usuários podem interagir (a GUI, por assim dizer). Um aplicativo normalmente consiste de várias Activities. Um Service é um componente da aplicação que pode executar operações de longa duração em segundo plano e não fornece uma interface de usuário. Um aplicativo pode vincular-se a um serviço para interagir com ele, utilizando comunicação entre processos tradicional. Os Contens Providers gerenciam o acesso a um conjunto de dados estruturados, encapsulando-os e fornecendo mecanismos para definição de segurança de dados. Um provedor de conteúdo conecta um conjunto de dados com um código sendo executado em outro processo. Por exemplo, se o desenvolvedor necessitar acessar os contatos do telefone, é possível fazê-lo por meio do Content Provider específico. Por fim, o Broadcast Receiver é o componente que responde a alertas gerais do sistema, os quais podem ser gerados pelas Activities, Services ou outros. Por exemplo, o Intent (mensagem) SCREEN_OFF é gerado pelo sistema quando a tela é bloqueada e um Broadcast Receiver pode responder a esse alerta quando o mesmo for capturado pela aplicação. 4. O Padrão de Comunicação Wi-Fi Direct O padrão Wi-Fi Direct (Android Developers, 2013) é uma tecnologia recente que permite transformar qualquer aparelho Android em um ponto de acesso. É uma nova especificação criada pela Wi-Fi Alliance que possibilita criar redes adhoc entre dispositivos Wi-Fi com a mesma facilidade encontrada em conexões Bluetooth. Em vez de precisar conectar os 75

dispositivos a um ponto de acesso central, este novo protocolo transforma qualquer aparelho que possua a tecnologia Wi-Fi em um ponto de acesso em potencial (Figura 2). O padrão Wi-Fi Direct, pelas características a serem explanadas nesta seção, foi a tecnologia escolhida para implementação da comunicação entre os dispositivos conectados à rede P2PDroid (Seção 5), cuja especificação é genérica. 4.1 Arquitetura Figura 2. Proposta do Wi-Fi Direct. Em uma típica rede Wi-Fi, os clientes procuram e se associam a redes sem fio disponíveis, que são criadas e anunciadas por Pontos de Acesso (AP). Cada um desses dispositivos possui um conjunto diferente de funcionalidades e a grande novidade do Wi-Fi Direct é que esses papéis são especificados como dinâmicos, portanto um dispositivo Wi-fi Direct pode implementar tanto o papel de cliente quanto o de um AP (ou servidor). Esses papéis são, portanto, funções lógicas que podem até mesmo ser executadas em modo simultâneo pelo mesmo dispositivo. Os dispositivos que implementam Wi-Fi Direct comunicam-se estabelecendo Grupos P2P, os quais são funcionalmente equivalentes às redes tradicionais Wi-Fi com infraestrutura pré-definida. Como mostrado na Figura 3, o dispositivo que se torna o proprietário do grupo é chamado de P2P Group Owner (P2P GO) enquanto o dispositivo que atua como cliente é conhecido como P2P Client. A atribuição desses papeis, como já se disse, é feita de forma lógica e é dinâmica, o que torna a arquitetura bastante flexível, como é desejável em uma solução para redes P2P. Figura 3. Componentes P2P e topologia de uma rede Wi-Fi Direct. 76

4.2 A API Wi-Fi P2P A programação de aplicações que utilizem Wi-Fi Direct é feita por meio da API Wi-Fi P2P (Android Developers, 2013) que permite que dispositivos com Android 4.0 (API level 14) ou superior, com hardware apropriado, conectem-se diretamente a qualquer outro dispositivo, via Wi-Fi, sem necessidade de um ponto de acesso entre eles. Usando essa API, o desenvolvedor pode descobrir e conectar-se a outros dispositivos que suportem o Wi-Fi Direct e, então, comunicar-se com velocidade superior e a distâncias mais longas do que em uma conexão Bluetooth. Isso torna o Wi-Fi Direct especialmente útil para aplicações que compartilham dados entre usuários, tais como jogos multiplayer, aplicações de compartilhamento de fotos e multimídia. 5. A Rede P2P Droid Esta seção descreve a arquitetura de uma rede peer-to-peer para dispositivos móveis baseados no sistema operacional Android, denominada P2PDroid. A rede P2PDroid provê aos usuários uma infraestrutura básica de comunicação e compartilhamento de recursos e foi implementada utilizando a API Wi-Fi P2P Manager criada pela Google. Para que um dispositivo portátil Android possa se interligar à rede P2PDroid, tudo que o usuário precisa fazer é instalar nele um pequeno aplicativo denominado P2PDroid Client, desenvolvido para a versão 4.0 ou superior desse sistema operacional. Ele implementa as principais funcionalidades da rede P2PDroid e permite a comunicação e transferência de dados entres diferentes dispositivos que estejam funcionando sobre essa rede. 5.1 Arquitetura A rede P2PDroid define algumas operações básicas, essenciais para seu funcionamento e inspiradas na arquitetura de rede P2P Gnutella. São elas: Initialize(): Registra a aplicação cliente com o Wi-Fi Framework e deve ser chamada assim que a aplicação é iniciada. Esse registro é necessário para que a aplicação possa usar os recursos de Wi-Fi do dispositivo, como, por exemplo, ser notificada quando o estado do Wi-Fi mudar (ON/OFF) ou ao receber um pedido de conexão de outro dispositivo. DiscoverPeers(): Inicia a descoberta dos pares da rede. Essa operação é usada para iniciar a descoberta de pares (nós) ao alcance do dispositivo. RequestPeers(): Ao detectar algum dispositivo ao alcance, usando a operação DiscoverPeers(), solicita a cada um deles a lista de pares visíveis, a fim de que o par ingressante possa começar a formar sua própria visão da rede P2P já existente. Connect(): Inicia uma conexão par-a-par com um dispositivo. Envia um convite de conexão a outro dispositivo, esse podendo aceitar ou recusar o pedido. Disconnect(): Encerra uma conexão com outro dispositivo. Mais detalhes sobre a arquitetura e funcionamento da rede P2PDroid podem ser encontrados em (Machado, 2013), que são aqui omitidos por razão de espaço. 77

5.2 P2PDroid Client Usando a API Wi-Fi P2P citada acima, foi implementado um aplicativo que facilita a descoberta, conexão e troca de mensagens entre os dispositivos móveis interconectados. A arquitetura funciona de modo semelhante ao padrão Bluetooth, não sendo necessário que os dispositivos possuam um endereço IP, contudo a descoberta dos pares é limitada ao raio de abrangência do dispositivo envolvido. Em termos de hardware, o Wi-Fi Direct trabalha com o Wi-Fi do dispositivo; isso potencializa algumas características dessa arquitetura em relação a outras, como, por exemplo, o raio de abrangência para descoberta de pares, a velocidade de transferência de arquivos e a estabilidade da conexão, tornando-se assim mais robusta do que seus concorrentes (Bluetooth 3.0, por exemplo). O Cliente P2PDroid implementa as operações básicas definidas na Seção 5.1, usando a API Wi-Fi P2P que interage diretamente com o padrão Wi-Fi Direct e, no estágio atual de desenvolvimento, permite a descoberta automática de pares na rede e o compartilhamento de arquivos entre eles. A comunicação entre os nós da rede P2PDroid é realizada através de sockets, os quais podem operar no modo convencional ou seguro, conforme relatado em (Machado, 2013). A arquitetura P2PDroid foi implementada de forma extensível, de modo que é possível a partir deste ponto desenvolver diversos tipos de aplicações sobre sua infraestrutura, sendo uma delas descrita na Seção 6 a seguir. 6. Rede de Compartilhamento de Conteúdo Multimídia A fim de ilustrar as potencialidades da rede P2PDroid como plataforma de desenvolvimento de aplicações, foi especificada e implementada uma aplicação de compartilhamento de conteúdo multimídia entre os nós da rede. Esta rede, denominada de PlayingBuddy tem como objetivo permitir o compartilhamento de arquivos de áudio e vídeo, armazenados nos dispositivos conectados à rede P2PDroid, por meio de streaming, isto é, torna possível ouvir ou assistir ao conteúdo sem a necessidade de baixá-lo do nó de origem. Potencializa-se, assim, o uso da rede P2PDroid para fins de entretenimento doméstico, pois todo o conteúdo multimídia pode ser acessado a qualquer momento por qualquer dispositivo, sem a necessidade de qualquer tipo de configuração, ou seja, basta estar conectado a rede para receber e transmitir fluxos de mídia. No estágio atual, os pares da rede descobrem-se e conectam-se através da API Wi-Fi P2P utilizada para implementação da rede P2PDroid. Para a realização da comunicação multimídia, foi feita uma implementação em Java que utiliza o protocolo UPnP (UPnP, 2013), definido pela DLNA (DLNA, 2013), acessado através da API Cling. A rede P2PDroid funciona, portanto, como um overlay para interconexão e troca de informações de controle entre os pares da rede, sendo os fluxos multimídia enviados por streaming através do protocolo UPnP, amplamente utilizado em redes domésticas. 6.1 Arquitetura Na concepção da aplicação PlayingBuddy, foram definidos os seguintes pacotes: 78

com.playinbuddy.util - Encapsula as classes para resolução de tarefas corriqueiras como conversões de tipos de objetos, definição e gerenciamento de variáveis de escopo da aplicação, funções de callback, etc. com.playinbuddy.players - Encapsula as classes necessárias para a reprodução dos conteúdos de mídia requeridos (áudio e vídeo) nos dispositivos receptores. com.playinbuddy.mediaserver - Encapsula as classes necessárias à implementação das funções cliente/servidor de conteúdo de mídia UPnP. com.playinbuddy.activities - Encapsula as classes que gerenciam a interface com o usuário do aplicativo, além das chamadas aos serviços. com.playinbuddy.objects - Encapsula as classes que representam os objetos manipulados pela aplicação (Dispositivo e Conteúdo de Mídia). com.playinbuddy.adapters - Encapsula as classes que funcionam como adaptadores entre os dados e as visões (GridView, ListView e TabView) utilizadas. A Figura 4 ilustra o diagrama de classes do aplicativo PlayingBuddy desenvolvido: Figura 4. Diagrama de Classes do aplicativo PlayingBuddy No diagrama, observa-se que uma das principais classes é o MediaServer, do qual dependem as três activities (interfaces com o usuário) da aplicação (StartActivity, 79

DevicelistActivity e ChannelActivity). Este, por sua vez, é composto por um servidor HTTP (HttpServer) e por um serviço de diretórios (ContentDirectoryService). A classe ContentNode é uma generalização dos itens de mídia que podem ser encontrados nos dispositivos e compõe uma árvore de conteúdo (ContentTree) utilizada no serviço de diretórios. As classes AudioFragment e VideoFragment compõem a tela que representa o canal de mídia (ChannelActivity), que por sua vez agrega um adaptador de visualização em abas (CustomTabsPagerAdapter) e uma classe para o preenchimento dos dados nas visualizações em grade (CustomGridView) em cada aba. A finalidade de cada classe pode ser melhor entendida a partir da descrição do funcionamento do aplicativo PlayingBuddy na Seção 6.2. 6.2 Protótipo Foi implementado um protótipo da rede PlayingBuddy, relatado nesta seção, o qual pode passar por quatro estágios em seu ciclo de vida. O aplicativo, ao ser (1) iniciado no dispositivo móvel, carrega as informações necessárias ao funcionamento dos serviços de compartilhamento (endereços dos dispositivos, montagem do serviço de diretórios, etc.) e aguarda as ações do usuário através de sua tela principal (Figura 5). Figura 5. Tela inicial do aplicativo PlayingBuddy Em seguida, (2) é feita a descoberta dos dispositivos ao alcance, por meio do protocolo UPnP, os quais são listados na tela do dispositivo. A partir daí, (3) o usuário pode selecionar um determinado dispositivo e escolher dentre os itens de áudio e vídeo disponíveis, para reprodução via streaming. Nesta etapa, solicita-se a invocação do serviço de diretórios para montagem de uma árvore de conteúdo multimídia no dispositivo local. A Figura 6 ilustra a tela de descoberta de conteúdo multimídia no aplicativo. Finalmente, utilizando o player especifico para o tipo selecionado pode-se (4) ouvir um item de áudio ou assistir a um item de vídeo. 6.3 Avaliação de Desempenho Esta seção relata alguns testes de desempenho realizados sobre a rede PlayingBuddy a fim de determinar sua adequação para a transmissão de fluxos multimídia em um ambiente móvel. 80

6.3.1 Planejamento dos Experimentos Como cenário, considera-se um aparelho celular da fabricante Motorola modelo Razr i XT890 rodando a versão 4.1.2 do sistema Android e um tablet da fabricante Samsung Galaxy Tab 2 modelo GT-P3110 rodando a versão 4.0.3 do sistema Android, ambos conectados a uma rede Wi-Fi através de um Nano Station M5 que possibilita a limitação do oferecimento de banda. Figura 5. Descoberta de conteúdo multimídia disponível para streaming Como fatores que podem influenciar o resultado do experimento, tem-se a Codificação do vídeo (Fator A), a Velocidade da conexão (Fator B) e o Tipo do dispositivo (Fator C). Para cada fator são definidos dois níveis (valores distintos do fator) resultando em um experimento 2 3 conforme ilustrado na Tabela 1. Tabela 1. Planejamento fatorial do experimento (2 3 ). Quanto a codificação de vídeo, H.264 360p e H.264 720p como níveis para este fator representam vídeos com baixa e alta qualidade de imagem, respectivamente. A velocidade de conexão tem níveis definidos por uma rede 802.11b (até 11 Mbps) para redes com baixa taxa de banda e uma rede 802.11n (até 300 Mbps) para redes com alta taxa de banda. Por fim, como níveis para o tipo de dispositivo foram escolhidos, smartphone com capacidade de processamento e resolução de tela mais baixa e tablet com processamento e resolução de tela mais elevada. Cada experimento foi repetido cinco vezes e durou 30 segundos desde o início da reprodução do conteúdo. Importante frisar também que o aplicativo Playinbuddy sempre esteve executando em primeiro plano em cada dispositivo. 81

Como métricas de desempenho, foram utilizados o tempo de resposta (R), utilização (U), vazão (X) e taxa de erro (E). O tempo de resposta representa o intervalo entre o inicio das solicitações da entidade requisitante e o atendimento destas pela entidade provedora de conteúdo. A taxa de throughput (vazão) define o número de requisições que são atendidas por unidade de tempo. A utilização representa o uso dos processadores disponíveis em cada dispositivo do experimento. Por fim, a taxa de erro define o percentual de pacotes perdidos na rede. As medições foram feitas utilizando-se o utilitário Android Debug Bridge (ADB), que fornece um shell de depuração para o sistema operacional Android através de um cabo USB conectado ao dispositivo ou através de uma porta TCP/IP, permitindo executar em segundo plano comandos de monitoramento, como top e vmstat, enquanto o aplicativo Playinbuddy estiver em execução na tela principal do dispositivo. A coleta de dados se deu em intervalos regulares de 5 segundos. O sistema operacional Android fornece a maioria das estatísticas de desempenho nos arquivos de sistema armazenados no diretório /proc e os dados de desempenho são armazenados no diretório /proc/stat. 6.3.2 Resultados e Discussão Esta seção mostra e discute os resultados mais relevantes, assim como a influência dos diferentes fatores A, B e C, individualmente, nos resultados e também das combinações destes sobre as métricas avaliadas conforme mostrado na Tabela 2. Tabela 2. Influência dos fatores no desempenho do aplicativo. Nota-se que a velocidade de conexão (B) é o fator mais influente sobre o tempo de resposta, com percentual de 56,05% e também é responsável por parte importante da vazão (variação de 31,39%), juntamente com a taxa de codificação do vídeo (A), com influência de 27,64%, o que leva a uma influência conjunta desses dois fatores (AB) da ordem de 26,74% na vazão do sistema. A codificação do vídeo tem influência importante sobre a utilização da CPU (26,42%), a qual também apresenta certa dependência do tipo do dispositivo (10,71%), principalmente quando considerada conjuntamente com a codificação de vídeo (22,73%). O tipo do dispositivo (C) teve pouca influência nas métricas avaliadas quando considerado individualmente. Destacase também a influência da combinação dos fatores A e B em todas as variáveis de resposta (linha qab). Os percentuais de dependência obtidos para o erro (E) não têm muita relevância devido ao fato do erro aferido ter sido muito pequeno. 82

Foi realizado um estudo do efeito da codificação do vídeo no desempenho da rede (Figura 6). Observa-se que a utilização máxima da CPU atingida pela carga de trabalho com a codificação H.264 720p é de apenas 50%, estabilizando-se entre vinte a trinta por cento, enquanto que na codificação H.264 360p chega a 33%, estabilizando-se entre dez a vinte por cento. Isto mostra que a utilização da CPU na codificação H.264 720p é em média 50% maior do que na codificação H.264 360p. Também é possível inferir que o uso da aplicação não causa sobrecarga em ambas as codificações utilizadas, pois a Tabela 2 mostra que em média o serviço utiliza 30% da CPU dados os fatores e níveis definidos no experimento. Figura 6. Utilização da CPU. Embora não seja possível relatar aqui todos os resultados, os experimentos realizados demonstraram que a rede de compartilhamento de conteúdo multimídia desenvolvida necessita de um poder de processamento moderado por parte dos aparelhos utilizados e comporta-se de maneira satisfatória submetendo-se vídeos com alta e baixa qualidade. Os níveis de largura de banda são fundamentais para o bom desempenho da rede, importante destacar que o padrão mais comum atualmente, 802.11/n, a satisfaz completamente. Por fim, pode-se inferir que o uso de smartphones ou tablets possui pouca influência no desempenho da rede. 7. Conclusão Este trabalho descreveu uma arquitetura de rede peer-to-peer, denominada P2PDroid, especificada e implementada sobre dispositivos móveis baseados no sistema operacional Android. Esta rede foi definida de forma genérica, inspirada no protocolo Gnutella e como prova de conceito implementou-se uma versão utilizando a API Wi-Fi P2P, da Google, que funciona sobre o recente padrão Wi-Fi Direct de interconexão de dispositivos, que possui como vantagens a não dependência de uma rede Wi-Fi infraestruturada para a comunicação entre os dispositivos, os quais podem descobrir-se de forma automática, desde que estejam próximos. O padrão Wi-Fi Direct atinge velocidades superiores ao Bluetooth 3.0 e apresenta-se como uma solução viável a ser utilizada em entretenimento doméstico, como jogos e multimídia e já vem disponível em dispositivos Android 4.0 ou posteriores. 83

A rede P2PDroid, no seu estágio de desenvolvimento atual permite a descoberta e interconexão de dispositivos portáteis baseados em Android, em uma rede P2P não dependente de uma infraestrutura Wi-Fi. Além disso, permite a transferência de arquivos de dados entre os dispositivos conectados. Como exemplo de aplicação, foi desenvolvida sobre o P2PDroid uma solução de compartilhamento de recursos multimídia por streaming. Esta aplicação, denominada PlayingBuddy utiliza o protocolo UPnP para a troca efetiva do conteúdo multimídia e a rede P2PDroid serve como meio de interconexão dos dispositivos. A descoberta dos dispositivos se dá de forma rápida e instantânea e é possível tocar músicas e assistir a vídeos em outros dispositivos de forma contínua, sem necessidade de baixar o conteúdo para o dispositivo local. Testes de desempenho realizados demonstraram que a aplicação PlayingBuddy opera em diferentes tipos de dispositivo, a variadas taxas de codificação de mídia e tem um impacto de até 50% na utilização da CPU dos dispositivos envolvidos. Como trabalhos futuros, pretende-se produzir uma versão do aplicativo PlayingBuddy baseada no protocolo Wi-Fi Direct e desenvolver outros tipos de aplicações sobre a rede P2PDroid. Referências Android Developers. Acesso em 03 de Setembro de 2013, disponível em:http://developer. android.com/guide/topics/connectivity/wifip2p.html Bubblesoft UPnP server. Acesso em 01 de janeiro de 2014, disponível em:. http://www. bubblesoftapps.com/bubbleupnpserver/. Digital Living Network Alliance (DLNA). Acesso em 03 de Setembro de 2013, disponível em: http://www.dlna.org/. Dynamic Airserver 5.0. Acesso em 03 de dezembro de 2013, disponível em: http://www. airserver.com/. Machado, F. A. O. Aplicações Seguras Sobre Uma Rede Peer-To-Peer Baseada na Plataforma Android, Monografia de Graduação. UFMA, 2013. Open Handset Alliance (OHA). Acesso em 03 de Setembro de 2013, disponível em: http://www.openhandsetalliance.com/. Ps3 media server. Acesso em 10 de outubro de 2013, disponível em: http://www. ps3mediaserver. org/. Universal Plug and Play (UPnP). Acesso em 03 de Setembro de 2013, disponível em: http://upnp.org/specs/arch/upnp-arch-devicearchitecture-v1.1.pdf. 84