PEER-TO-PEER SYSTEMS
Léo Françoso Dal Piccol Sotto
Victor De Cia Costa
Introdução
● Sistemas peer-to-peer têm como objetivo apoiar serviços
distribuídos e aplicações úteis usando dados e recursos de
computação disponíveis nos computadores que estão
presentes na rede.
● É uma arquitetura de computação distribuída onde os nós
participantes alternam entre clientes e servidores. Em teoria,
cada nó é idempodente, compartilhando recursos, sem um
servidor central.
Definição
Algumas características de sistemas peer-to-peer:
● Seu projeto garante que cada usuário contribui com recursos
para o sistema.
● Embora possam diferir nos recursos que contribuem, todos os
nós em um sistema de peer-to-peer têm as mesmas
capacidades e responsabilidades funcionais.
● Sua operação correta não depende da existência de qualquer
sistemas administrados centralmente.
Uma rede P2P em que nós interligados
(pares) compartilham recursos entre si,
sem o uso de um sistema administrativo
centralizado.
Uma rede com base no modelo cliente-
servidor, onde os clientes individuais
solicitam serviços e recursos a partir de
servidores centralizados.
Definição (continuação)
Definição
● Os nós em um sistema peer-to-peer formam uma Overlay
Network.
● Uma questão fundamental para o seu funcionamento eficiente
é a escolha de um algoritmo para a colocação de dados em
hosts, e o subsequente acesso a eles → Roteamento
(continuação)
Vantagens
● Como não há servidor central, não há ponto único de falha.
● Escalabilidade para suportar novos nós (um nó que entra
contribui para a rede).
● Capacidade de auto-adaptação dos nós.
● Dados em mais nós → Maior acessibilidade
Desvantagens
● Contúdos pouco populares podem ser mais difíceis de serem
encontrados, pois é fornecido por menos nós.
● Complexidade. Algumas arquiteturas de Overlay podem exigir
protocolos e algoritmos mais complexos, quando comparado a
sistemas cliente-servidor.
Arquiteturas - Centralização
● Puramente Descentralizadas● Parcialmente Centralizadas● Híbridas
● Na prática, muitas aplicações usam algum tipo de centralização para tarefas como inicialização (lista com nós atuais, por exemplo, Gnutella).
Arquiteturas – Estruturação
● Não estruturadas● Estruturadas
Segurança
● Existência de vulnerabilidade em sistemas peer-to-peer
● Possíveis ataques:● Incorrect Lookup Routing● Incorrect Routing Updates● Incorrect Routing Network Partition● Envio de dados corrompidos● Envio de malwares
Categorias
● Existem diferentes categorias de sistemas peer-to-peer.
● Compartilhamento de arquivos (BitTorrent, Napster, Gnutella)
● Multimedia (Peercasting, Skype, Spotfy)● Compartilhamento de processamento● ...
Arquitetura Híbrida (não-estruturada)
Um servidor de diretório central mantém um índice de metadados para todos os
arquivos na rede.
● Simples● Busca eficiente
● Ponto Único de Falha● Menos escalabilidade
● Exemplos: Napster, Publius
Arquitetura Híbrida (não-estruturada)
Não há coordenação central das atividades da rede. Os usuários
se conectam diretamente uns aos outros através de uma aplicação
de software que funciona tanto como um cliente e um servidor
(usuários são referidos como um servents).
Mensagens
Ping, Pong, Query, Query Hit
Arquitetura Puramente Descentralizada
Arquitetura Puramente Descentralizada
● Supernós – Nós responsáveis por uma parte da rede
● Queries são mandadas para os supernós apenas
● Eleição automática de supernós em caso de falha
● Exemplo: Kazaa
Arquitetura Parcialmente Centralizada
Arquitetura Estruturada
A Overlay é organizada em uma topologia específica, e o protocolo garante que qualquer nó pode eficientemente procurar na rede um arquivo / recurso, mesmo se o recurso é extremamente raro. (Utilizando uma DHT para localizar e identificar os nós)
Chord
● Chord é um protocolo para sistemas peer-to-peer, que usa Tabelas
Hash Distribuídas (DHT).
● Os nós possuem uma tabela de encaminhamento distribuído sob a
forma de um círculo identificador no qual todos os nós estão
mapeados, e uma finger table associada.
● Busca log(n)
CAN
● Protocolo que também usa DHT
● CAN – Content Adressable Network
● Usa um espaço Cartesiano de coordenadas n-dimensional para
implementar a tabela de localização e de encaminhamento distribuído,
em que cada nó é responsável por uma zona no espaço de
coordenadas.
● Função mapeia chave K para ponto P.
● Nós guardam chaves (chave K, valor V).
CAN
CAN
● Quando um novo nó entra, uma zona é dividida.
● O novo nó manda um JOIN para um nó em determinada zona, e eles
dividem essa zona.
● As tabelas de roteamento devem ser atualizadas.
● Cada nó envia mensagens de update aos vizinhos.
Referências
● http://en.wikipedia.org/wiki/Peer-to-peer
● Stephanos Androutsellis-Theotokis, Diomidis Spinellis, A Survey of
Peer-to-Peer Content Distribution Technologies, disponível em
http://www.spinellis.gr/pubs/jrnl/2004-ACMCS-p2p/html/AS04.html