Redes Peer-to-Peer

Propaganda
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.
Download