Roteiro • Peer-to-Peer • Motivação, Histórico e Definição • Classificação de Aplicações • Topologia das redes • Caracteristicas não funcionais • O framework JXTA •Virtualização das Redes •ID’S, Credentials, Advertisements •Message Relay •Endpoints •Pipes •Protocolos JXTA • Demonstração de uso do JXTA Redes Peer-to-Peer Ana Flávia Godoi e Paulo Nei Sistemas Distribuídos Motivação Arquiteturas P2P permitem compatilhamento de Mestrado UFPR recursos computacionais com: • Escalabilidade (manter conectividade e performance); Histórico • Auto-organização com população transiente de nodos; • Adaptação a falhas de rede e de nodos; • Não-necessidade de um servidor central (sem overhead de sua administração); • Aceleração da comunicação entre processos e diminuição de custos para as instituições; A utilização de sistemas baseados em peer-topeer tem mostrado o verdadeiro potencial da Internet Histórico • A arquitetura cliente-servidor se tornou mais familiar. – Aplicações comerciais que requerem controle de acesso às informações: utilização de firewalls; – Estrutura das aplicações e serviços, incluindo a World Wide Web, FTP e outros; • Nos últimos anos, entretanto, as tecnologias peer-to-peer têm tido profundo efeito na Internet. – Pela forma de distribuição de informações e compartilhamento de recursos; Arquitetura cliente-servidor • Exemplo de arquitetura Cliente-Servidor: – as flechas representam o sentido da comunicação: Histórico • Em 1962, J.C.R.Licklider, do MIT descreveu a “Intergalactic Network”: – Uma rede de nodos interconectados, que se comunicavam diretamente entre si; – Deu origem ao Network Control Program (NCP): • primeiro protocolo de rede caracterizado como “host-host” : Precursor do TCP/IP Arquitetura cliente-servidor • Também chamada de arquitetura centralizada, é a mais comum na Internet; • Os servidores disponibilizam serviços e informações; os clientes requisitam esses serviços, quando necessário; • Nodos servidores e clientes executam tarefas completamente diferentes; Definições P2P é definido basicamente pelas características: • Compartilhamento de recursos diretamente entre nodos: – não necessidade de um servidor central. – um servidor central pode ser utilizado para tarefas específicas: boot, chaves para criptografia, etc. Definição das redes Peer-to-Peer • Habilidade para: – tratar conectividade variável e instabilidade; – adaptar-se automaticamente a populações transientes de nodos e a falhas em componentes; – manter a performance do sistema; Definição mais abragente Definições “Sistemas Peer-to-Peer são sistemas distribuídos que consistem de nodos interconectados, com capacidade de se auto-organizarem em topologias de rede, com o objetivo de compartilhar recursos como ciclos de CPU, armazenamento e bandwidth, capazes de se adaptar a falhas e acomodar populações transientes de nodos, enquanto mantém conectividade e performance aceitáveis, sem depender da intermediação ou suporte de uma autoridade (servidor) central.” • peer-to-peer puro se refere a sistemas totalmente distribuídos: nodos são equivalentes em funcionalidades e tarefas; [Theotokis & Spinellis 2004] – Falha para compreender sistemas com noção de supernodos (Kazaa); • Uma definição largamente aceita é a proposta em [Shyrky 2000] “Peer-to-Peer é uma classe de aplicações que obtém vantagem de recursos – armazenamento, CPU, conteúdo e presença humana - disponível nos nodos da Internet.” Classificação das Aplicações • Comunicação e Colaboração; • Sistemas de Bancos de Dados; • Suporte a Serviços de Internet; Classificação das Aplicações Peer-to-Peer • Computação Distribuída; • Distribuição de Conteúdo; Classificação das Aplicações • Computação Distribuída: – Objetivo é aproveitar o poder de processamento subutilizado dos nodos da Internet; – Essas tarefas exigem coordenação de um nodo central em tarefas como particionar e distribuir tarefas; – Exemplo: Seti@Home [SetiAtHome 2003]; – Grid Computing X Peer-to-Peer: convergência Classificação das Aplicações • Comunicação e Colaboração: – Sistemas que provêem infraestrutura para facilitar a comunicação direta entre peers – chats, instant-messaging aplications; • Sistemas de Bancos de Dados Distribuídos: – Baseados na infraestrutura de sistemas P2P; – Edutella: open source project que provê infraestrutura de banco de dados para aplicações peer-to-peer [Nejdl et al 2003]; • Suporte a Serviços de Internet: – Diferentes aplicações para suportar uma variedade de serviços de Internet; – proteção contra ataques de vírus; Peer-to-Peer X Grid Computing – Sistemas P2P, por outro lado, tem apresentado soluções que não buscam padrões para protocolos e infra-estrutura, para prover interoperabilidade. – Com a tendência das tecnologia Peer-to-Peer para aplicações cada vez mais complexas se espera que haverá uma convergência entre Peer-to-Peer e Computação em Grid. – O resultado será uma nova classe de tecnologias combinando elementos de ambas: • Escalabilidade, auto-adaptação, recuperação diante de falhas e infra-estrutura persistente e padronizada para interoperabilidade Peer-to-Peer X Grid Computing • Ambos são abordagens para computação distribuída, com foco emcompartilhamento de recursos em larga-escala; • Grid está baseada em infraestrutura de serviços padronizados; • À medida que cresce, Grid necessita de soluções para prover auto-organizaçao, tolerância a falhas, escalabilidade, etc: – características de sistemas P2P; [Foster & Iamnitchi] Classificação das Aplicações • Distribuição de Conteúdo: – Os sistemas de distribuição de conteúdo podem ser: • relativamente simples; • Mais sofisticados: criam locais de armazenamento distribuído de informações, para poder manuzeá-las de forma mais segura e eficiente; – Ex: Napster, Kazaa [Kazaa 2003], Gnutella [Gnutella 2003] Classificação das Aplicações • Distribuição de Conteúdo: – Maioria dos sistemas Peer-to-Peer são de distribuição de conteúdo; – Envolve sistemas e infraestrutura para troca de dados entre usuários; • Sistemas se referem a aplicativos para uso para distribuição de conteúdo; • Infraestrutura: frameworks - provê a base para os aplicativos P2P (fornecem serviços de rede, tolerância a falhas, etc); Topologia da rede • Arquitetura das redes P2P independe da arquitetura física da rede; • As redes P2P podem ser implementadas criando-se uma “rede overlay” para os aplicativos utilizarem; • A topologia das redes peer-to-peer se divide em 3 categorias: [Theotokis & Spinellis] Peer-to-Peer: Topologias – Puramente descentralizado; – Parcialmente centralizado; – Híbrido descentralizado; Topologia da rede – Puramente descentralizada: Topologia da rede • Puramente descentralizada: – Todos os nodos da rede podem realizar as mesmas tarefas; – Não há coordenação centralizada de dessas tarefas; – Cada nodo é responsável por sua própria administração e manutenção; – Gnutella [Gnutella 2003]: constrói uma rede própria e permite que usuários realizem troca de arquivos; Topologia da rede • Parcialmente centralizada: Topologia da rede • Parcialmente centralizada: – Tem a base como puramente centralizado, mas há a presença de supernodos; – Supernodos: agem como nodo central de uma subrede. Neles são armazenados índices para consulta pelos peers; – Quando um supernodo falha, ele é substituído automaticamente e dinamicamente; – Kazaa, Edutella [Nejdl et al. 2003], Gnutella mais recentemente; Topologia da rede • Híbrido descentralizado: Peer-to-Peer: Propriedades não funcionais – Há um servidor central que mantém índices e outras informações para facilitar a interação dos peers; – A troca de arquivos é feita diretamente entre os nodos (peers); – Apesar disto, este servidor é um ponto que deixa o sistema mais suscetível a falhas em geral e ataques; – Este tipo de topologia está excedendo o conceito de peer-to-peer: pode não ter escalabilidade • Napster, que mantém uma lista estática de nodos servidores) Propriedades não funcionais Propriedades não funcionais • Características não funcionais: – Segurança; – Escalabilidade; – Performance; – Capacidade de gerenciamento de recursos; – Agrupamento semântico de informações; A topologia da rede, a estrutura de gerenciamento dos dados, e outras propriedades do sistema afetam as características funcionais. O que é JXTA? • Apesar dos sistemas P2P serem sistemas distribuídos, nem todos os sistemas distribuídos facilitam a computação P2P • Sistemas P2P têm um conjunto comum de necessidades • JXTA provê um conjunto de API’s para prover as funcionalidades necessárias • Em essência, JXTA é uma biblioteca de desenvolvimento P2P JXTA Virtualização das Redes • Celular envia mensagem para o PDA • Ambos têm endereço IP dinâmico • Asserção: “Endereço IP identifica unicamente uma entidade” => falha Virtualização das Redes • TCP/IP tradicional => DNS (Domain Name System) é usado para resolver os nomes amigáveis • Mas, P2P não pode ter a mesma asserção sobre a infra-estrutura de rede cliente-servidor tradicional • Em particular, não pode assumir a presença de um diretório de nomes centralizado Virtualização das Redes • Nodo => identidade única (endereço IP) • Endereço IP estático • Endereço IP dinâmico • O endereço IP determina o roteamento para um mensagem Virtualização das Redes • Solução: construir uma rede virtual, independente da topologia física Escritório JXTA Avenida Sete de Setembro, 4698 Quinto Andar Curitiba • Endereço físico (IP ou Ethernet MAC) => endereço amigável (www.jxta.org) Virtualização das Redes Virtualização das Redes • Late Binding: capacidade de atrasar a ligação entre o endereço IP e um identificador • P2P => identificadores curtos (dispositivos desconectam freqüentemente) • Crucial para telefones móveis e P2P • Mudança freqüente no identificador do peer => diretório centralizado não estabiliza • Mais notável capacidade JXTA: facilita late binding dos recursos da rede Virtualização das Redes O Escritório JXTA muda de lugar todo mês Virtualização das Redes • Assinala identificador para um recurso • Resolve a ligação entre o identificador virtual e físico em tempo de requisição • Um nodo é identificado de forma independente do endereço IP • Um mecanismo liga o identificador virtual ao endereço IP sempre que uma mensagem é enviada ao nodo • O mecanismo de resolução é independente de um diretório de nomes centralizado (como DNS) ID’S, Credentials, Advertisements • Identity (Identidade) • Não identifica somente peers • Qualquer recurso de importância: – – – – dados código grupos de peers canais virtuais de comunicação ID’S Credentials Advertisements • IDs => URNs (Universal Resource Names) ID’S, Credentials, Advertisements • • • • Advertisement (anúncio) Descrição do recurso É um documento XML Inclui: – ID único – Credential – Data de validade – Outras informações ID’S, Credentials, Advertisements • Credential (credencial) • Informação verificando um recurso em termos humanos • IDs => atribuídas pelo sistema JXTA • Credentials => atribuídas pelas pessoas • Confiabilidade ID’S, Credentials, Advertisements ID’S, Credentials, Advertisements • Arquitetura JXTA facilita a propagação de perguntas na rede • Rede JXTA localiza recursos por meio de advertisements • Peer envia pergunta => chega a todos peers no multicast radius (não precisa roteador) • Peer cria advertisement e publica na rede • Perguntas se propagam pela rede até encontrarem um advertisement • Propaga para uma rede maior Message Relay • Mecanismo de pergunta: você quer achar a resposta perguntando pra todo mundo que conhece! La Vita È Bella Quem fez o papel de Dora? Message Relay Message Relay Message Relay • Message relay (Mensagem transmitida em cadeia) • Aumenta o conjunto de peers que podem responder uma pergunta • Rendezvous Peer (rendezvous = ponto de encontro) – Relay Peer que facilita a transmissão da mensagem além do multicast radius • Rendezvous Peer conhece outros rendezvous peers, formando uma rede rendezvous Message Relay Message Relay Seu amigo Roberto Benigni sabe quem fez o papel de Dora – Você quer enviar a pergunta pra ele, mas só conhece seu nome • Você pode usar um Router Peer – Constrói e mantém rotas para outros peers • Rota é composta por hops (pulos) • Cada hop tem um ID • Diferentes das rotas dos roteadores IP Message Relay Message Relay Seu amigo Roberto Benigni fala apenas italiano! • Gateway peer • Transmissão de mensagens em protocolos heterogêneos (um peer tem HTTP, outro somente TCP) • Peers separados por firewalls Message Relay • Qualquer peer pode assumir responsabilidades relay • Aumenta confiabilidade e robustez • Relay peer pode implementar cache (de respostas, de rotas, etc) Message Relay Dora => Nicoletta Braschi Endpoints Cartão de visitas de uma pessoa: – Telefone, endereço, e-mail, fax, celular... • Um peer pode ser alcançável por um número de endereços virtuais ou endpoints • Endpoint advertisement informa o tipo de protocolo suportado Endpoints • Por que usar endpoints? • Mudanças no estado do peer • Um endpoint pode não estar sempre disponível • Peer pode usar somente um protocolo específico (requisitos de segurança, p. ex.) Endpoints Endpoints Pipes • Um canal de comunicação entre dois peers tem uma ID • Os pontos finais do canal são identificados pelos endpoints (independente do endereço IP) • Se o endereço IP muda? A rede JXTA ajusta o roteamento da mensagem • Dois endpoints podem usar diferentes protocolos Pipes • Cada pipe tem um identificador JXTA • Sistema resolve o identificador em um endereço IP, seguindo o princípio de late binding • Comunicação bidirecional: precisa dois pipes • Um pipe pode transmitir para múltiplos destinos Pipes Pipes • Pipe (cano) • Canal de comunicação virtual • Peers podem trocar mensagens usando – Mensagens simples – Propagação de perguntas • Mas pipes são a principal abstração para comunicação direta Pipes Pipes • Pipes não são confiáveis (condições da rede) • Confiabilidade pode ser garantida por uma camada de software (garantir integridade da mensagem) • Também podem ser seguros (usando criptografia na mensagem) Protocolos JXTA • Operações da rede virtual são definidas em termos de protocolos • Se dois peers querem se comunicar, só precisam entender o protocolo • Conseqüência: Peers podem – Ser implementados em diferentes linguagens – Ser executados em diferentes tipos de máquinas – Transmitir mensagens em diferentes camadas de protocolos (TCP, HTTP, Bluetooth) Protocolos JXTA Protocolos JXTA • Estruturas de dados XML • Não precisa que peer tenha capacidade total de processamento XML • Peer com pouco recurso: pré-compila mensagens na representação binária (não precisa processar XML) Protocolos JXTA Peer Resolver Protocol (PRP) • Protocolo fundamental • Especifica o mecanismo de perguntaresposta Protocolos JXTA • Protocolos são expressos em termos de troca de mensagens • Em algum ponto deve traduzir a mensagem (bind) na linguagem • Bindings: Java, C, C++, Perl, Python, Smalltalk ... • Protocolo independente da linguagem Protocolos JXTA • Sete protocolos definidos • Peer não precisa entender todos • Mensagens são pares pergunta-resposta • Respostas assíncronas Protocolos JXTA Protocolos JXTA • Outros protocolos que precisam de mecanismo pergunta-resposta usam PRP • Pergunta não é endereçada ao peer, mas a um handler (tratador) • Peer registra um handler, que pode responder perguntas • Perguntas e respostas podem se perder Protocolos JXTA Protocolos JXTA • XML schema da resposta • XML schema da pergunta <xs:element name="ResolverResponse“ type="ResolverResponse"/> <xs:element name="ResolverQuery“ type="jxta:ResolverQuery"/> <xs:complexType name="ResolverQuery"> <xs:element name="Credential" type="xs:anyType" minOccurs="0"/> <xs:element name="SrcPeerID" type="JXTAID"/> <xs:element name="HandlerName" type="xs:string"/> <xs:element name="QueryID" type="xs:string" minOccurs="0"/> <xs:element name="Query" type="xs:anyType"/> </xs:complexType> <xs:complexType name="ResolverResponse"> <xs:element name="Credential" type="xs:anyType" minOccurs="0"/> <xs:element name="HandlerName" type="xs:string"/> <xs:element name="QueryID" type="xs:string" minOccurs="0"/> <xs:element name="Response" type="xs:anyType"/> </xs:complexType> Protocolos JXTA • Estrutura de uma rota: <?xml version="1.0" encoding="UTF-8"?> <jxta:EndpointRouter> <Src> identidade da fonte </Src> <Dest> identidade do destino </Dest> <TTL> time to live </TTL> <Gateway> seqüência ordenada de gateways </Gateway> <...................> <Gateway> seqüência ordenada de gateways </Gateway> </jxta:EndpointRouter> Protocolos JXTA • Estrutura de uma mensagem de roteamento <?xml version="1.0" encoding="UTF8"?><jxta:EndpointRouterQuery> <Credential> credencial </Credential> <Dest> id do destino </Dest> <Cached> true: resposta pode ficar na cache false: resposta não pode ficar na cache </Cached> </jxta:EndpointRouterQuery> Protocolos JXTA Endpoint Routing Protocol (ERP) • Especifica roteamento de mensagens • Lista de hops da fonte até destino • Relay peer: router peer • Router conhece o caminho: responde com uma lista de hops Protocolos JXTA • Cada peer deixa um trace (marca) na mensagem • Trace ajuda roteadores a lembrar das rotas • Peer guarda rota na cache • Útil também para detectar loops e mensagens duplicadas Protocolos JXTA Protocolos JXTA • Roteador responde a pergunta com: <?xml version="1.0" encoding="UTF-8"?> <jxta:EndpointRouterAnswer> <Credential> credencial </Credential> <Dest> id do destino </Dest> <RoutingPeer> Id do roteador que conhece uma rota </RoutingPeer> <RoutingPeerAdv> Advertisement do roteador </RoutingPeerAdv> <Gateway> seqüência ordenada de gateways </Gateway> < ...................> <Gateway> seqüência ordenada de gateways </Gateway> </EndpointRouterAnswer> Protocolos JXTA Outros protocolos... • ERP garante alto grau de sucesso • Não garante eficiência • Peers mais inteligentes podem implementar algoritmos especializados, para otimizar a descoberta de rotas Protocolos JXTA Rendezvous Protocol (RP) • Define como as perguntas se propagam pela rede rendezvous • Propagação limitada a um peer group (definido no advertisement do rendezvous) Protocolos JXTA Peer Information Protocol (PIP) • Permite troca de informações em tempo de execução: – Tempo de disponibilidade do peer (uptime) – Número de mensagens processadas num período • Permite software de monitoramento da rede • Pode ser estendido, adicionando elementos ao XML Protocolos JXTA Peer Discovery Protocol (PDP) • Propicia a descoberta de recursos, por meio dos advertisements • Mensagem inclui – Tipo de advertisement – Chave XML – Valor para a chave Protocolos JXTA Pipe Binding Protocol (PBP) • Define a construção de um pipe • Pipe tem advertisement, que define seu tipo, assim como uma ID Protocolos JXTA • Protocolo define etapas para entrar no grupo: – Fase de pedido – Fase de junção • Peer referencia um autenticador • Autenticação pode ser feita: – Base de dados – Perguntas para o peer – Qualquer outra forma Conclusão Nesta apresentação mostramos algumas definições sobre peer-to-peer, suas aplicações, características e propriedades básicas. Falamos também sobre o JXTA. Essa biblioteca de programação Peer-to-Peer mostrou a aplicação de alguns conceitos vistos. Protocolos JXTA Peer Membership Protocol (PMP) • Particionamento da rede • Caso físico (segurança, serviços...) • Grupo define o escopo das perguntas: • Padrão: pergunta propaga em busca de advertisement no grupo • Questões de segurança Protocolos JXTA Referências Bibliográficas • Nejdl, W. et al. 2003. Edutella: A p2p networking infrastructure based on rdf. In Proceedings of the 12th International Conference on Word Wide Web. Budapest, Hungrary • Oram, A. Peer to Peer: Harnessing the Power of Disruptive Technologies. Primeira Edição. O'Reilly. Mar 2001 • SetiAtHome 2003. Site do projeto seti@home. http://setiathome.ssl.berkeley.edu. • Shirky, C. 2000. What is p2p... and what isn’t. Na rede, disponível online em http://www.orreillynet.com/pub/a/ p2p/2000/11/24/shirky1-whatisp2p.html. O’Reilly. • Theotokis, S.A., Spinellis, D. ACM Computing Surveys, Vol. 36, No., December 2004, pp.335-371. Referências Bibliográficas • Bookshier, D., et al. JXTA: Java™ P2P Programming, Sams Publishing. Mar 2002. • Flenner, R. et al. Java™ P2P Unleashed. Sams Publishing. Sep 2002. Cap.16. • Foster, I. 2000. Internet computing and the emerging grid. Nature Web Matters. • Foster, I., and Iamnitchi, A. 2003. On death, taxes, and the convergence of peer-to-peer and grid computing. In Proceedings of 2nd International Workshop on Peer-to-Peer Systems (IPTS’02). Berkeley, CA. • Gnutella 2003. Site do projeto Gnutella: http://www.groove.net • Kazaa 2003. Site do projeto Kazaa. http://www.kazaa.com.