Peer 2 Peer (P2P)
Resumo Introdução História Caracteristicas Exemplos Arquitetura Distribuição Vertical vs Distribuição Horizontal Segurança Conclusão
O que é P2P?
Introdução Tipo de arquitetura de rede onde os computadores tem capacidade e responsabilidades equivalentes; Diferente da rede cliente / servidor, onde o cliente e o servidor possuem responsabilidades diferentes; Esses computadores cooperam entre si, formando um sistema único; Ora esses computadores são clientes, ora eles são servidores;
História O surgimento do P2P vem da tendência natural da evolução dos sistemas que vem criando redes cada vez maiores; O primeiro uso da expressão Peer-to-Peer foi em 1984, com o desenvolvimento do projeto Advanced Peer-to- Peer Networking Architecture da IBM na era mainframe. Esta arquitetura, era baseado no Systems Network Architecture (SNA) uma arquitetura proprietaria para comunicação entre computadores;
História Os principais pontos da ANNP eram: Controle da rede distribuida; Seleção automatica de rotas, reconfiguração e troca de informações; Definição e auto-registro de recursos da rede; Vejam que ela não tem nada haver com compartilhamento de arquivos; O Napster, primeiro sistema de compartilhamento de arquivo do mundo, difundiu esse tipo de arquitetura;
Caracteristicas Auto-organização: não há um coordenador do grupo; toda a coordenação é distribuída; Adaptabilidade: rede se ajusta ao ambiente, mesmo que ocorram falhas; Escalabilidade: rede cresce em escala facilmente; não há ponto de estrangulamento; Comunicação direta entre os pares: se opõe ao tradicional modelo cliente-servidor, já que cada nó pode fornecer ou obter recursos;
Caracteristicas Rede sobreposta: os proprios nós roteam os dados de outros nós;
Utilização Compartilhamento de arquivos, imagens, músicas, vídeos, etc; Atualização de sistemas operacionais e de software aplicativo; Gerenciamento de redes e sistemas; Processamento distribuído; Sincronização de bancos de dados; Difusão de informações; etc.
Exemplos
Exemplos Napster Criado por Shawn Fanning em 1999; Foi utilizado para facilitar o compartilhamento de músicas; Utilizava servidor central (replicado) para efetuar a procura de arquivos na rede; Transferência de arquivos era feita diretamente entre os (peers) clientes; É importante frisar que o Napster atualmente é um serviço de compra de músicas pela Internet;
Exemplos Kazaa Desenvolvidor por Sharman Networks (o mesmo criador do Skype) em 2000; Utilizada arquitetura hierárquica, onde tempos os Nós Comuns (NC) e Super Nós (SN); Rede composta por diversos (SN) que atua como Mini-Servidores utilizados para armazenar informações sobre arquivos compartilhados pelos NC; SN mantém conexões com outros SN;
Exemplos DNS O DNS é um sistema de gerenciamento de nomes hierárquico e distribuído visando resolver nomes de domínios em endereços de rede (IP); os nomes de hosts residentes em um banco de dados pode ser distribuído entre servidores múltiplos, diminuindo assim a carga em qualquer servidor; Em virtude do banco de dados de DNS ser distribuído, seu tamanho é ilimitado e o desempenho não degrada tanto quando se adiciona mais servidores nele.
Exemplos DNS
Arquitetura Centralizada dado
Arquitetura Descentralizada dado dado dado dado
Arquitetura Híbrida dado dado dado dado Coordenador
Distribuição Vertical vs Distribuição Horizontal Cliente A Cliente B Servidor... Cliente N Nó podemos ter todas as partes do programa (Visual, Logica e Dado) dentro do mesmo servidor. Desvantagem: o computador tem um certo número de computadores; Solução: ter mais servidores;
Distribuição Vertical vs Distribuição Horizontal Distribuição Vertical Cliente A Cluster Cliente B... V1 V2 V3 L1 DB1 DB2 Cliente N V4 Na distribução vertical, nós temos um ou mais servidores para cada parte do sistema; Ex. Os servidores V1, L1 e DB1 estão relacionados com o Visual, a Lógica e o Dado, respectivamente, do sistema;
Distribuição Vertical vs Distribuição Horizontal Distribuição Vertical Cliente A Cluster Cliente B... V1 V2 V3 L1 DB1 DB2 Cliente N V4 Caso uma parte do sistema seja mais requisitada do que outra, eu posso duplica-la; Ex., o Visual do sistema é mais requisitado do que a Lógica e, por isso, tem mais servidores;
Distribuição Vertical vs Distribuição Horizontal Distribuição Vertical Cliente A Cluster Cliente B... V1 V2 V3 L1 DB1 DB2 Cliente N V4 Vantagem: facilita o gerenciamento; Destanvagem: servidores mais robustos para trabalhar especificamente para uma tarefa;
Distribuição Vertical vs Distribuição Horizontal Distribuição Horizontal Cliente A Servidor 1 Cluster Servidor 5 Cliente B... Cliente N Servidor 2 Servidor 3 Servidor 4 Servidor 6 Servidor 7 Servidor 8 Na Distribuição Horizontal, você tem vários servidores com uma parcela do sistema (Visual, Lógica e Dado); Por exemplo, cada servidor por representar um modulo do sistema (ex. Modulo venda);
Distribuição Vertical vs Distribuição Horizontal Distribuição Horizontal Cliente A Servidor 1 Cluster Servidor 5 Cliente B... Cliente N Servidor 2 Servidor 3 Servidor 4 Servidor 6 Servidor 7 Servidor 8 Esses servidores trabalham locamente com as informações que tem e, caso precise, requisita outros servidores; Ou seja, eles são cliente e servidor ao mesmo tempo (entre eles) fundamento de P2P;
Distribuição Vertical vs Distribuição Horizontal Distribuição Horizontal Cliente A Servidor 1 Cluster Servidor 5 Cliente B... Cliente N Servidor 2 Servidor 3 Servidor 4 Servidor 6 Servidor 7 Servidor 8 Vantagem: máquinas menos robustas podem ser utilizadas, alta escalabilidade; Desvantagem: demora para atender uma requisição que depende de outros servidores (aumenta a latencia);
Estruturada vs Não Estruturada Estruturadas A topologia da rede de sobreposição é controlada; Contéudo é depositado não em nós aleatórios mas em localizações específicas, o que tornará eventuais consultas mais eficientes; Não estruturada A construção da rede de sobreposição é baseado em algoritmos aleatórios. Cada nó manterá uma lista de vizinhos mas esta lista é construída de modo aleatório; Da mesma maneira, os dados são depositados aleatoriamente nos nós.
Estruturada vs Não Estruturada Estruturadas Existem diversas formas de estruturar uma rede P2P, entre elas são o DHT, Sistemas Chord e Rede CAN. Para ilustrar uma P2P estruturada, iremos usar o DHT; Utiliza uma tabela Hash Distribuída (Distributed Hash Table - DHT) para organizar os nós; Os nós e os itens de dados recebem uma chave/identificadores aleatória; O sistema deve implementar um esquema determinístico que mapeie exclusivamente a chave de um item de dado para o identificador de um nó; A rede P2P permite o armazenamento e recuperação escaláveis de pares {chave,valor} através da rede de sobreposição.
Estruturada vs Não Estruturada Estruturadas (DHT)
Estruturada vs Não Estruturada Não Estruturada Redes P2P não estruturadas utilizam algoritmos aleatórios para construir uma rede de sobreposição; Da mesma forma, itens de dados são depositados aleatoriamente em nós; Consequentemente, quando um nó precisa localizar um item de dado específico, ele deve inundar a rede com uma consulta de busca; Uma consulta a um item de dado para os quais o sistema não mantenha uma grande quantidade de réplicas deve ser enviada para uma grande quantidade de nós, o que é ineficiente.
Estruturada vs Não Estruturada Super Nós A medida que uma rede não estruturada cresce, pode-se tornar difícil a localização de itens de dados já que não há um modo determinístico para se rotear a mensagem; Muitos sistemas mantẽm nós especiais que armazenam um índice de itens de dados, denominados superpares; Superpares são organizados em uma rede P2P, o que resulta em uma organização hierárquica.
Estruturada vs Não Estruturada Super Nós
Segurança A segurança é um componente essencial para qualquer sistema de computação. Navegar pelas redes P2P pode ser não muito seguro, pois existem várias ameaças e preocupações dentro da rede.
Segurança Ameaças e Preocupações Downloads interrompidos; Nós maliciosos enviam dados corrompidos, vírus, etc; Arquivos falsos na rede; Propagação de arquivos infectados sem conhecimento disso (Backdoors); o Permite fácil acesso. Bugs e/ou Softwares mal configurados Exposição a sofrer recursos legais ao compartilhar arquivos protegidos por direitos autorais.
Segurança Soluções Validação da integridade do arquivo (ex. usando hash ou md5); Validação do usuário na rede ou identificação do usuário; Maioria possui sistemas de criptografia para proteção; Evita direcionar downloads para usuário com baixa reputação.
Temas Frameworks: Protocolos: JXTA OpenFT Windows peer-to-peer Networking XNap Redes: Kademlia Outras Coisas P2P Anônimo Overnet Gnutella e Gnutella2 Kad Network
Referências Barcellos, A. M. P.; Gaspary, L.P. Segurança em redes P2P : princípios, tecnologias e desafios E outros sites...