Descoberta de Serviços em Ambientes Móveis Lindonete Gonçalves Siqueira Mauro Carvalho Lopes Silva Conteúdo Introdução MNCRS SLP JINI Moca Bibliografia Lindonete Siqueira - Mauro Lopes 2 Introdução Aumento na utilização de dispositivos móveis redução de peso, consumo e volume. Portabilidade - > mobilidade. Lindonete Siqueira - Mauro Lopes 3 Introdução Um dispositivo móvel necessita conhecer os serviços que estão disponíveis em uma rede. Lindonete Siqueira - Mauro Lopes 4 Introdução Problema: necessidade de configurar o dispositivo e conhecer a localização dos respectivos recursos. Solução: componente no sistema que realize esta tarefa. Conhecer os recursos existentes. Selecionar um recurso pretendido, abstraindo detalhes como localização A este componente chamamos: Descoberta de Serviços. Lindonete Siqueira - Mauro Lopes 5 MNCRS MNCRS Work Group - elaborou uma especificação denominada: Mobile Network Computer Reference Specification (MNCRS), onde é definido o que é um Mobile Network Computer e onde propõe um conjunto de padrões para interação entre aplicações, servidores e protocolos de rede. Lindonete Siqueira - Mauro Lopes 6 Especificação MNCRS O modelo proposto divide-se em dois níveis: Nível superior, que consiste numa API, através da qual as aplicações interrogam a localização dos serviços. Nível inferior, que consiste num protocolo que recebe as interrogações do nível superior, envia a rede, processa-as e retorna ao nível superior, onde por sua vez são repassadas a aplicação. Lindonete Siqueira - Mauro Lopes 7 Especificação MNCRS Lindonete Siqueira - Mauro Lopes 8 Especificação MNCRS Esta divisão garante: Os fabricantes de aplicações tem uma interface comum para seu desenvolvimento. Os fornecedores de serviços sabem que seus serviços disponibilizados podem ser usados por clientes móveis. Lindonete Siqueira - Mauro Lopes 9 Especificação MNCRS Acesso à rede e suporte a mobilidade Acesso a rede através de um endereço IP válido para aquela rede. DHCP – permitindo aos dispositivos móveis obterem dinamicamente um endereço IP Problema: deslocamento entre sub-redes. Protocolo Mobile IP. Lindonete Siqueira - Mauro Lopes 10 Service Location Protocol (SLP) Protocolo padronizado para localização de serviços em ambiente de rede baseado em IP Preconizado pelo IETF. Processo automatizado. SLP fornece mecanismos necessários para a descoberta de serviços na rede, sem a necessidade de conhecer a localização dos mesmos e de configuração manual. Lindonete Siqueira - Mauro Lopes 11 Service Location Protocol (SLP) A arquitetura possui 3 entidades: UA (User Agent) – trabalham em função de um aplicação cliente que pretende localizar um serviço. SA (Server Agent) - trabalham em funçao de um serviço, anunciando sua disponibilidade. * DA (Directory Agent) – funciona como uma central que armazena informações referentes a localização e disponibilidade dos serviços. Lindonete Siqueira - Mauro Lopes 12 Interação entre os componentes do SLP Lindonete Siqueira - Mauro Lopes 13 Arquitetura do SLP A comunicação entre os componentes é feita sobre TCP/IP e pode funcionar de duas formas: Ponto a ponto (unicast) Multicast Lindonete Siqueira - Mauro Lopes 14 Arquitetura do SLP Localização de serviços Lindonete Siqueira - Mauro Lopes 15 Arquitetura do SLP Anuncio de serviços Lindonete Siqueira - Mauro Lopes 16 Arquitetura do SLP Anuncio de serviços AS envia uma mensagem – Registro de Serviço ao AD. Mensagem - > URL do serviço. Sintaxe = serviço:<tipo>://<endereço>. Se serviço deixa de ser disponível, o seu AS envia a mensagem – Fim de Registro de Serviço – ao AD que eliminam esse registro. Lindonete Siqueira - Mauro Lopes 17 Arquitetura do SLP Localização de um DA. Redução de mensagens na rede. Como localizar um AD? Configuração estática. DHCP. Localização ativa. Localização passiva. Lindonete Siqueira - Mauro Lopes 18 Arquitetura do SLP Localização de um DA. Lindonete Siqueira - Mauro Lopes 19 JINI Sistema de localização de serviços, de propriedade da Sun Microsystems. Baseado na arquitetura Java. Funciona sob o mesmo paradigma do SLP. Tira proveito da possibilidade de trafegar código executável pela rede utilizando RMI para acessar o serviço. Lindonete Siqueira - Mauro Lopes 20 JINI Ao necessitar de um serviço o cliente efetua o download de um objeto proxy Java, um código executável pela JVM, capaz de invocar, remotamente, métodos na entidade que oferece o serviço, e ainda enviar dados necessários ao cumprimento da tarefa. Lindonete Siqueira - Mauro Lopes 21 Arquitetura Lindonete Siqueira - Mauro Lopes 22 Arquitetura Cada serviço oferece uma funcionalidade que pode ser acessada através de interfaces definida pelo serviço. Cada dispositivo pode agir como cliente ou servidor, dependendo se ele está requisitando ou providenciando serviço. Lindonete Siqueira - Mauro Lopes 23 Arquitetura Lookup Service Discovery Encontrar o Lookup Service Join Lindonete Siqueira - Mauro Lopes 24 Arquitetura Registrando um Serviço - 1 Lindonete Siqueira - Mauro Lopes 25 Arquitetura Registrando um Serviço - 2 Lindonete Siqueira - Mauro Lopes 26 Arquitetura Registrando um Serviço - 3 Lindonete Siqueira - Mauro Lopes 27 Arquitetura Registrando um Serviço - 4 Lindonete Siqueira - Mauro Lopes 28 Arquitetura Buscando um serviço - 1 Lindonete Siqueira - Mauro Lopes 29 Arquitetura Buscando um serviço - 2 Lindonete Siqueira - Mauro Lopes 30 Arquitetura Buscando um serviço - 3 Lindonete Siqueira - Mauro Lopes 31 Jini Leasing Um serviço é alugado para um cliente por um quantidade de tempo fixa. Quando expira esse tempo o cliente renova o aluguel pra continuar acessando o serviço. O aluguel expira pra todos os usuários quando o serviço não está disponível. Lindonete Siqueira - Mauro Lopes 32 Exemplo: Sistema Infotronic do Chrysler Cruiser 2000 – EUA. Lindonete Siqueira - Mauro Lopes 33 Exemplo: Sistema Infotronic do Chrysler Cruiser 2000 – EUA. Lindonete Siqueira - Mauro Lopes 34 Exemplo: Uma impressora pode se conectar a uma rede e divulgar seus serviços. Pode ainda divulgar mudanças de estado. Uma câmera digital nessa mesma rede pode achar a impressora e solicitar a impressão de fotos num determinado formato. Lindonete Siqueira - Mauro Lopes 35 SLP X JINI JINI SLP Interface de Serviços Java, RMI, mover objetos entre JVM Interface – brigde SLP/JINI Qualquer linguagem Arquiteturas semelhantes Lindonete Siqueira - Mauro Lopes 36 MOCA Ambiente de Programação e Run-time para dispositivos de computação móvel. Um framework component baseado em componentes de software chamados Serviços Devido a portabilidade este foi escrito em JAVA. Lindonete Siqueira - Mauro Lopes 37 Características do MOCA 100% JAVA Permite a descoberta dinâmica e download de serviços publicados por dispositivos vizinhos Pouco consumo de memória (lazy loading) As aplicações podem residir localmente ou ser descarregadas da rede (software dinâmico) Uso extensivo da JVM Alto grau de transparência de localização Lindonete Siqueira - Mauro Lopes 38 Arquitetura dos Serviços O MOCA fornece um serviço de framework que dá suporte ao desenvolvimento e execução de aplicações em dispositivos de computação móvel Diferença entre Serviço e Aplicação Serviços Componente de software que encapsula funções específicas e fornece uma interface para estas funcionalidades Podem ser acessados por Aplicações ou outros Serviços Podem ser locais (Cache de arquivos locais) ou remotos (serviço de impressão) Lindonete Siqueira - Mauro Lopes 39 Arquitetura dos Serviços Aplicação Um programa escrito em Java que declara um método main e é distribuído em um ou mais arquivos de classe As aplicações usam serviços através das interfaces fornecidas Cada aplicação possui um único grupo de threads e um espaço de nome privado O acesso aos serviços podem ser limitados através de políticas de segurança Lindonete Siqueira - Mauro Lopes 40 Arquitetura dos Serviços Lindonete Siqueira - Mauro Lopes 41 Serviço de Registro Elemento central da Arquitetura do MOCA Realiza dois papeis Atua como uma central de repositório de serviços Encapsula as políticas de gerenciamento do ciclo de vida dos serviços Realiza o registro, atualização, resolve e exclui serviços Descritor de Serviço: Nome da Interface Nome da Implementação URL (opcional) Lindonete Siqueira - Mauro Lopes 42 Serviço de Registro Para obter um Serviço Um objeto pede ao Serviço de Registro realizar um lookup A entrada mínima requerida é o nome da interface do serviço O Serviço de Registro retorna a referencia para uma implementação do objeto cujo a interface foi requerida O requerente pode acessar o Serviço via os métodos disponibilizados na interface O Serviço de Registro não faz distinção entre serviços locais ou remotos Lazy Loading Período de Validade Lindonete Siqueira - Mauro Lopes 43 Serviços Essenciais É um subconjunto dos serviços gerenciados pelo MOCA Os Serviços Essenciais são usados por serviços customizados ou application class carregadas. Sem os Serviços Essenciais o MOCA não tem como carregar serviços adicionais ou aplicações São implementados como uma extensão da JVM São carregados junto com o processo de carregamento das classes do JAVA e existe no espaço de nome da JVM Lindonete Siqueira - Mauro Lopes 44 Serviços Essenciais Existem 3 Serviços Essenciais Cache de Arquivo Local Carregamento de Arquivos Gerenciamento de Aplicações Cache de Arquivo Local Gerencia um repositório de arquivos .class do Java, associados aos serviços e aplicações correntemente carregados no dispositivo Implementado no topo do sistema de arquivos local do dispositivo O esquema de substituição do conteúdo da cache pode adotar ambas as políticas (implícita ou explicita) Sem o serviço de cache o MOCA não consegue carregar qualquer serviço ou aplicação Lindonete Siqueira - Mauro Lopes 45 Serviços Essenciais Carregamento de Arquivos Usado para carregar arquivos da Rede É considerado um serviço pseudo-essencial Dispositivos em modo desconectado Inabilidade de descobrir e descarregar qualquer serviço ou aplicação Gerenciamento da Aplicação Gerenciamento do ciclo de vida da aplicação Utilizado para para criar, suspender ou destruir aplicações Para cada aplicação o Gerente de Aplicações aloca e gerencia um grupo de threads Uso de um espaço de nome privado para isolar aplicações e limitar o conjunto de serviços visíveis pela Aplicação Lindonete Siqueira - Mauro Lopes 46 Serviços de Aquisição Sem uma maneira conveniente de distribuir ou adquirir um componente, o Modelo de Componentes terá pouca chance de ser usado Um Serviço é composto de duas partes Interface – arquivo de classe da interface Implementação – arquivos de classe da implementação No MOCA o carregamento de serviços é realizado pelo Serviço de Carregamento de Classes O carregamento de um Serviço é realizado em um processo de duas fases Lindonete Siqueira - Mauro Lopes 47 Serviços de Aquisição Primeira Fase Ao Serviço de Carregamento de Classe é solicitado a carregar um arquivo de classe de interface do serviço requerido Uso do Repositório de Interfaces Segunda Fase Os arquivos de classe da implementação do serviço requerido são carregados Localização dos arquivos de implementação URL – usado para serviços descobertos dinamicamente Serviço de Nomes para traduzir nomes de interfaces e implementações em URL Lindonete Siqueira - Mauro Lopes 48 Serviços de Aquisição Arquivos de Classe de Implementação e Interfaces devem fazer parte pacotes Java específicos Todas as interfaces estão em um pacote service.interfaces Service.interface.MinhaInterface – arquivo de classe da interface Service.MinhaInterface – arquivo de classe de implementação Lindonete Siqueira - Mauro Lopes 49 Serviços de Aquisição Lindonete Siqueira - Mauro Lopes 50 Serviços de Descoberta MOCA fornece mecanismos que permitem a dispositivos móveis descobrir serviços em dispositivos vizinhos Alto grau de transparência na localização de serviços A descoberta de um serviço de impressão provido por uma impressora vizinha Aplicações MOCA podem adaptar os dispositivos móveis ao ambiente O Serviço de Descoberta no MOCA é baseado no Modelo Multicast Serviços exportados são representados por um descritor de Serviço Lindonete Siqueira - Mauro Lopes 51 Serviços de Descoberta Lazy Strategy – Ajuda a minimizar o consumo de memória e o overhead na rede Período de Validade – semelhante ao Garbage Collection em uma JVM O Serviço de descoberta no MOCA é implementado por dois serviços opcionais Broadcaster Listener Broadcaster – lista de serviços exportados Listener – monitora o broadcast Lindonete Siqueira - Mauro Lopes 52 Serviços de Descoberta Lindonete Siqueira - Mauro Lopes 53 Segurança Devido a sua natureza portável e habilidade a dinamicamente descarregar código, dispositivos de computação móvel são particularmente suscetíveis a ataques Modelo de segurança provido pelo Java é inadequado para controlar o acesso aos recursos em um dispositivo móvel MOCA dividiu o código descarregado em duas categorias Serviços Aplicação Lindonete Siqueira - Mauro Lopes 54 Segurança Serviços são confiáveis Usa Encriptação e Assinatura Digital Acesso aos recursos do dispositivo determinado por uma política que associa direitos com assinatura de código Aplicações são não confiáveis Usa serviços para garantir acesso aos recursos Acesso a serviços é determinado por uma política que associa direitos com categorias de aplicações Lindonete Siqueira - Mauro Lopes 55 Segurança Lindonete Siqueira - Mauro Lopes 56 Serviços de Atualização MOCA suporta atualização dinâmica da implementação dos serviços Interface de Serviços devem ser imutáveis Reescrever uma aplicação devido a mudança de uma interface Implementação dos Serviços disponíveis podem ser atualizadas a qualquer momento Adaptadores de Serviços são utilizados para suportar a atualização dinâmica Para atualizar uma implementação, o Serviço de Registro simplesmente associa o Adaptador com a nova implementação Lindonete Siqueira - Mauro Lopes 57 Serviços de Atualização Lindonete Siqueira - Mauro Lopes 58 Cenário Exemplo de como os dispositivos móveis podem descobrir serviços demonstrando de forma prática como esse processo ocorre Neste cenário veremos como ocorre: A Descoberta de um serviço O Registro dos Serviços Lazy Loading Strategy Período de Validade Lindonete Siqueira - Mauro Lopes 59 Sumário de características Lindonete Siqueira - Mauro Lopes 60 Bibliografia Artigos Marcus Amorim Leal, Jini e Redes Espontâneas , PUCRio, Introdução à Computação Móvel – 2001. Carlos Rodrigo Souza Santos, JINI: Uma arquitetura UFMA, 2003. Raul Gupta; Sumeet Talwar; Dharma P. Agrawal, de computação distribuída baseada na plataforma Java, Jini Home Networking: A Step toward Pervasive Computem, IEEE, 2002. Lindonete Siqueira - Mauro Lopes 61 Bibliografia Artigos Bruno F. Souza, A vida, o Universo e Tudo Mais JINI 2.0 Segurança em Aplicações, Revista Java Magazine. Edição 11. Rui F. Pereira; Mário J. Silva, Descoberta de Serviços em Ambientes Móveis , Faculdade de Ciências da Universidade de Lisboa. Alexandre A. Pires; Otto Carlos M. B. Duarte, Segurança em Localização de Serviços. Lindonete Siqueira - Mauro Lopes 62 Bibliografia Site The Jini Product Home Page, disponível na www em http://java.sun.com/jini. Sun Microsystems. http://www.ime.usp.br/~lmap/mestrado.html http://www.ececs.uc.edu/~srao/projects/am cpaper.pdf Lindonete Siqueira - Mauro Lopes 63