Redes Peer-to-Peer
Ana Flávia Godoi e Paulo Nei
Sistemas Distribuídos
Mestrado UFPR
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
MotivaçãoArquiteturas P2P permitem compatilhamento de
recursos computacionais com:
• Escalabilidade (manter conectividade e performance);
• 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-to-peer tem mostrado o verdadeiro potencial da
Internet
Histórico
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
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
• 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;
Arquitetura cliente-servidor
• Exemplo de arquitetura Cliente-Servidor:– as flechas representam o sentido da
comunicação:
Definição das redes Peer-to-Peer
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.
• 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ções
• peer-to-peer puro se refere a sistemas totalmente distribuídos: nodos são equivalentes em funcionalidades e tarefas;– 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.”
Definição mais abragente
“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.”
[Theotokis & Spinellis 2004]
Classificação das Aplicações Peer-to-Peer
Classificação das Aplicações
• Comunicação e Colaboração;
• Sistemas de Bancos de Dados;
• Suporte a Serviços de Internet;
• Computação Distribuída;
• Distribuição de Conteúdo;
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;
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
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;
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
[Foster & Iamnitchi]
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);
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]
Peer-to-Peer: Topologias
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]– Puramente descentralizado;– Parcialmente centralizado;– Híbrido descentralizado;
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
–Puramente descentralizada:
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
• Parcialmente centralizada:
Topologia da rede
• Híbrido descentralizado: – 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)
Peer-to-Peer: 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.
Propriedades não funcionais
JXTA
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
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
• 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
• Solução: construir uma rede virtual, independente da topologia física
Escritório JXTAAvenida Sete de Setembro, 4698Quinto AndarCuritiba
• Endereço físico (IP ou Ethernet MAC) => endereço amigável (www.jxta.org)
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
• P2P => identificadores curtos (dispositivos desconectam freqüentemente)
• Mudança freqüente no identificador do peer => diretório centralizado não estabiliza
O Escritório JXTA muda de lugar todo mês
Virtualização das Redes
• Late Binding: capacidade de atrasar a ligação entre o endereço IP e um identificador
• Crucial para telefones móveis e P2P
• Mais notável capacidade JXTA: facilita late binding dos recursos da rede
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)
Virtualização das Redes
ID’SCredentialsAdvertisements
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
• IDs => URNs (Universal Resource Names)
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
• Advertisement (anúncio)• Descrição do recurso• É um documento XML• Inclui:
– ID único– Credential– Data de validade– Outras informações
ID’S, Credentials, Advertisements
• Rede JXTA localiza recursos por meio de advertisements
• Peer cria advertisement e publica na rede
• Perguntas se propagam pela rede até encontrarem um advertisement
ID’S, Credentials, Advertisements
• Arquitetura JXTA facilita a propagação de perguntas na rede
• Peer envia pergunta => chega a todos peers no multicast radius (não precisa roteador)
• Propaga para uma rede maior
Message Relay
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 (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
Message Relay
Dora => Nicoletta Braschi
Message Relay
• Qualquer peer pode assumir responsabilidades relay
• Aumenta confiabilidade e robustez• Relay peer pode implementar cache (de
respostas, de rotas, etc)
Endpoints
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
EndpointsEndpoints
• 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.)
Pipes
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
• 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
• 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 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)
Pipes
Protocolos JXTA
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 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
• 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
• Sete protocolos definidos• Peer não precisa entender todos
• Mensagens são pares pergunta-resposta• Respostas assíncronas
Protocolos JXTA
Peer Resolver Protocol (PRP)• Protocolo fundamental• Especifica o mecanismo de pergunta-
resposta
Protocolos JXTAProtocolos 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• XML schema da pergunta
<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>
Protocolos JXTA• XML schema da resposta
<xs:element name="ResolverResponse“ type="ResolverResponse"/>
<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
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
• 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
• 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
• Estrutura de uma mensagem de roteamento
<?xml version="1.0" encoding="UTF-8"?><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
• 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
Protocolos JXTA
• ERP garante alto grau de sucesso• Não garante eficiência
• Peers mais inteligentes podem implementar algoritmos especializados, para otimizar a descoberta de rotas
Outros protocolos...
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
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
Pipe Binding Protocol (PBP)
• Define a construção de um pipe• Pipe tem advertisement, que define seu
tipo, assim como uma ID
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 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
• 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
Protocolos JXTAConclusã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.
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.
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.