Sistemas Peer-to-Peer Prof. Bruno Crestani Calegaro Curso de Ciência da Computação ELC1018 - Sistemas Distribuídos 1
Sistemas Peer-to-Peer (P2P) Prevêem a colaboração de muitos hosts usando dados e recursos disponíveis em computadores pessoais e servidores Principal problema de projeto: Distribuição de muitos objetos em muitos hosts com subsequente acesso/localização eficiente. Middlewares exploram: Técnicas de atribuição de resolução de nomes Roteamento Replicação de dados Técnicas de segurança Usos mais frequentes de aplicativos P2P Compartilhamento de arquivos Distribuição de informações 2
Principais características Usuário contribui com recursos para o sistema Todos os nós tem as mesmas capacidades e responsabilidades Seu funcionamento não depende de um coordenador/centralizador Pode explorar anonimato para provedores e usuários Uso de algoritmo eficiente para distribuir e recuperar dados com equilíbrio da carga de trabalho Proprietários dos recursos não garantem sua disponibilidade 3
As 3 gerações do P2P Napter para troca de música Aplicativos de compartilhamento de arquivos com escalabilidade, TF, e anonimato Freenet, Gnutella, Kazaa, BitTorrent Middlewares P2P Pastry, Tapestry, CAN, Chord e Kademlia 4
Napster Serviço de armazenamento e recuperação de informações Compartilhamento de músicas Objetivo: download de arquivos de música digital Usuários fornecem arquivos Usa índices centralizados e replicados Índices mantém endereços de rede dos hosts Consistência entre réplicas não é garantida Projeto considera caráter local da rede número de passos entre cliente e servidor Gargalos: descoberta e endereçamento de objetos 5
Napster: compartilhamento de arquivo P2P com um index centralizado e replicado 6
Características especiais Aplicação: Arquivos de música nunca são atualizados Não é exigida garantia de disponibilidade Segurança: Mecanismos de comunicação favorecem anonimato Arquivos cifrados podem conter informações sigilosas ou proibidas e provedor pode alegar desconhecimento Roteamento de requisições e resposta pode ocultar a fonte (caminho tortuoso) Conteúdo de arquivos podem ser distribuídos em vários nós dispersando responsabilidades 7
Middleware P2P Desafios gerais: Garantir acesso rápido à recursos Garantir acesso seguro a recursos (disponibilidade) Segunda geração de sistemas P2P: Índices particionados e distribuídos Algoritmos de manipulação de índices específicos por sistema Questão principal: como localizar os objetos de forma rápida? 8
Middleware P2P Requisitos Permitir que clientes localizem e se comuniquem com recursos individuais, independente da distribuição Capacidade de adicionar e remover hosts e recursos à vontade Oferecer uma interface de programação amigável/simples Escalabilidade global Balanceamento de carga Posicionamento aleatório de recursos Réplicas dos recursos muito utilizados Otimização das iterações locais entre peers Acomodar a disponibilidade dinâmica de hosts Segurança dos dados em um ambiente com confiança heterogênea Anonimato, capacidade de negação e resistência a censura 9
Distribuição de informação num roteamento sobreposto (overlay) Região de roteamento a partir de A Região de roteamento a partir de D C A D Object: B Node: Roteamento a partir de B OBS: Para rotear, cada nó mantém informações sobre localização de nós e objetos (replicação) Região de roteamento a partir de C 10
Middleware: Roteamento sobreposto Principal tarefa: Servidor de localização, ou seja, dado uma requisição e um GUID o roteamento sobreposto deve encontrar o nó que contém o objeto e entregar a requisição. Outras tarefas: Um nó deve poder calcular um GUID e anunciá-lo a camada de roteamento sobreposto. Clientes devem poder solicitar a remoção de objetos. Nós devem poder entrar e sair do serviço. Serviço deve buscar réplica mais próxima. 11
Middleware: Roteamento sobreposto Um GUID é um hash de todo ou parte do objeto (identificador exclusivo). Para alcançar disponibilidade o middleware distribui o dado ou tuplas <GUID,dado> Também conhecido como Pastry: Distributed Hash Table (DHT) Dado armazenado em r hosts com número próximo ao GUID Tapestry: Distributed Object Location and Routing (DOLR) Dado armazenado no host onde cliente deseja publicá-lo. 12
Pastry: Interface de Programação Básica para uma Distributed Hash Table (DHT) put(guid, data) Submete dados ao middleware. Dados são distribuídos (replicados). A DHT é atualizada para garantir localização. remove(guid) Exclui todas as referências para o GUID e para os dados associados. value = get(guid) Os dados associados ao GUID são recuperados de um dos nós responsáveis por eles (que contém uma réplica). 13
Tapestry: Interface de Programação Básica para um Dist. Object Location and Routing (DOLR) publish(guid) Publica objeto correspondente ao GUID. unpublish(guid) Torna objeto correspondente ao GUID inacessível. sendtoobj(msg, GUID, [n]) Seguindo o paradigma OO envia uma mensagem ao objeto (requisição). O parâmetro opcional [n] indica o número de réplicas do objeto que se deseja alcançar. 14
Roteamento baseado em prefixo Usado no Pastry e Tapestry Determina rotas para distribuição de mensagens com base nos valores dos GUIDs Restringe busca do próximo nó na rota aplicando máscara binária. A cada hop, mascara seleciona número cada vez maior de dígitos hexadecimais do GUID. Clientes consultam serviços de indexação para obter GUIDs a partir de nomes comuns. 15
Pastry Infra-estrutura de roteamento de mensagens Utilizado no: PAST, um sistema de arquivos Squirrel, um serviço P2P para uso de cache web Usa GUIDs de 128 bits Usa função de resumo segura SHA-1 Usa um esquema de roteamento circular 16
Roteamento Circular Simples (ineficiente) 65A1FC 0 FFFFF...F (2 128-1) D471F1 D467C4 D46A1C D13DA3 Os pontos representam nós ativos. O espaço é circular. O diagrama ilustra o roteamento de uma mensagem do nó 65A1FC para o nó D46A1C usando apenas informações do conjunto de folhas de tamanho 8 (l = 4). Tipo não escalável de roteamento Não usado na prática. 17
Primeiras 4 linhas de uma tabela de roteamento do Pastry 18
Algoritmo de roteamento do Pastry Para manipular uma mensagem M endereçada para um nó D (onde R[p,i] é o elemento na coluna i, linha p da tabela de roteamento): 1. Se (L -l < D < L l ) { // destino dentro do conjunto de folhas ou é o nó corrente 2. Encaminha D para L i com GUID mas próximo a D ou ao nó corrente A 3. } senão { // usa tabela de roteamento para enviar M para GUID mais próximo 1. Localiza linha p, o comprimento do prefixo comum mais longo de D e A 2. Localiza coluna i, o (p+1) iésimo dígito hexadecimal de D 3. Se (R[p,i] null) { 4. encaminha M para R[p,i] // nó com um prefixo comum mais longo 5. } senão { // não existe nenhuma entrada na tabela de roteamento 6. encaminha M para qualquer nó em L, ou R, com um prefixo comum de comprimento p, mas com um GUID numericamente mais próximo. 1. } 11.} 19
Exemplo de roteamento no Pastry 0 FFFFF...F (2 128-1) D471F1 D467C4 D46A1C D462BA D4213F D13DA3 Roteamento de uma mensagem do nó 65A1FC para D46A1C. Com uma tabela adequadamente preenchida a mensagem pode ser enviada em ~ log 16 (N) hops. 65A1FC 20
Integração de Hosts Protocolo de associação Cada novo nó X calcula GUID (hash do nome) X envia join para vizinho A (vizinho próximo - rtt) A envia join(x) via Pastry para Z, onde Z é numericamente mais próximo de X Todos os nós A B... Z enviam parte relevante da tabela de roteamento para X X monta sua tabela com base no que recebe X0=A0; X1=B1;...; Xn=Zn X envia seus conteúdos para todos os nós folha (as mesmos nós folha de Z) para que incluam X 21
Falha ou saída de host Um nó falho quebra a rota Para detectar falhas, Pastry envia periodicamente mensagens de pulsação (heartbeat) Para garantir TF, nós podem enviar mensagens com semântica pelo menos uma vez. Reenviam mensagens várias vezes até receberem ack. 22
Tapestry Implementa tabela de resumo distribuída Como Pastry, usa roteamento baseado em prefixo Proprietário do recurso mantém recursos publicados Tapestry cria réplicas com o mesmo GUID 23
Roteamento do Tapestry Rotas Tapestry para 4377 4377 Raiz para 4378) Caminho do publish 4228 43FE 437A Mapeamento de localização para 4378 Rotas realmente Feitas pelos send(4378) 4378 Phil s books E791 4664 4B4F 4361 57EC 4A6D AA93 4378 Phil s books Replicas do arquivo Phis s books (G=7378), publicadas nos nodos 4228 e 4378. O nodo 4377 é o raiz do documento 4378. 24
Outras abordagens para restringir buscas no roteamento overlay Chord baseia-se na diferença numérica entre os GUIDs do nó selecionado e do destino. CAN baseia-se na distância de um hiperespaço d-dimencional onde nós estão. Kademlia usa operação XOR dos pares de GUIDs como métrica de distância 25
AGUID Organização de armazenamento dos objetos OceanStore certificate VGUID of current version version i+1 VGUID of version i root block d1 d2 d3 BGUID (copy on write) version i Version i+1 has been updated in blocks d1, d2 and d3. The certif icate and the root blocks include some metadata not shown. All unlabelled arrows are BGUIDs. indirection blocks data blocks VGUID of version i-1 d1 d2 d3 d4 d5 26
Tipos de identificadores usados no OceanStore Name Meaning Description BGUID block GUID Secure hash of a data block VGUID version GUID BGUID of the root block of a version AGUID active GUID Uniquely identifies all the versions of an object 27
Arquitetura do sistema Ivy Iv y node Application Application DHash serv er DHash serv er Iv y serv er DHash serv er DHash serv er Modif led NFS Client module Kernel DHash serv er 28
Diferenças entre roteamento IP e roteamento overlay para P2P Escala Equilíbrio da Carga Dinâmica da Rede (adição/exclusão de objetos/nós) IP O Ipv4 é limitado a 2³² nós endereçáveis. O espaço de nomes Ipv6 é muito mais generoso(2 128 ), mas nas duas versões os endereços são estruturados hierarquicamente e grande parte do espaço é previamente alocado de acordo com os requisitos administrativos As cargas sobre os roteadores são determinadas pela topologia de rede e pelos padrões de tráfegos vigentes As tabelas de roteamento IP são atualizadas de forma assíncrona, com base nos melhores esforços, com constantes de tempo na ordem de uma hora Roteamento em nível de aplicativo Os sistemas peer-to-peer podem endereçar mais objetos. O espaço de nomes do GUID é muito grande e plano (>2 128 ), podendo ser ocupado de forma muito mais completa Os objetos podem se posicionar aleatoriamente e com isso os padrões de tráfego não tem nada a ver com a topologia de rede 29
Diferenças entre roteamento IP e roteamento overlay para P2P Tolerância a falhas Identificação do Destino Segurança e anonimato IP A redundância é projetada na rede IP por seus gerentes, garantindo tolerância da falha de conectividade de um único roteador ou cabo. A replicação com fator de multiplicação n é dispendiosa Cada endereço IP é mapeado em exatamente um nó destino O endereçamento só é seguro quando todos os nós são confiáveis. O anonimato dos proprietários de endereços não pode ser obtido Roteamento em nível de aplicativo Rotas e referências de objeto podem ser replicados por um fator n, garantindo a tolerância de n falhas de nós ou conexões As mensagens podem ser direcionadas para a réplica mais próxima de um objeto destino A segurança pode ser obtida, mesmo em ambientes de confiança limitada. Um grau limitado de anonimato pode ser fornecido 30
Referencias Bibliográficas COULOURIS, G. AT AL. Sistemas Distribuídos Conceito e Projeto. Bookman, 2007. 4º Ed. Capítulo 10 31