Redes não estruturadas I 1 ricardo.pereira@inesc-id.pt IST 28-9-2009 1 imagens criadas por Rüdiger Schollmeier and Jörg Eberspächer (Technische Universität München) para o livro Peer-to-Peer Systems and Applications, Springer LNCS 3485
1 2 3 Gnutella 0.6 Desvantagens
modelo P2P centralizado Entidade central representa ponto único de falha Entidade central pode representar custo signicativo, a ser suportado por alguém Entidade central pode ser bootleneck (CPU, largura de banda, armazenamento) Entidade central controla toda a rede
Sistemas P2P não estruturados Sistemas descentralizados Sistemas auto-organizáveis Conteúdo e descrição permanece nos nós que o fornecem Distribuído aleatoriamente pela rede Nós ligam-se a qualquer ponto da rede, gerando uma estrutura aleatória Rede serve para sinalização e procura Troca de conteúdo out-of-band
Sistemas P2P não estruturados Nós são servidores e clientes (server + client -> servent) Nós participam activamente na gestão da rede overlay Nós são identicados por GUID (General Unique ID) criado através de hash de valor único ou aleatório) Rede overlay constituída por ligações TCP entre pares Nós são consumidor e fornecedores de recursos mas também routers da rede overlay Nós podem ser removidos sem que haja perda de funcionalidade (pode haver de conteúdos)
Exemplo de rede não estruturada
da rede overlay Independente e sem relação com a rede física Pode incluir hierarquia Pode ser rede completamente aleatória, podendo ser modelada por grafos aleatórios Segue um esquema de endereçamento e encaminhamento distinto do do IP
Entrada na rede (bootstrapping) Protocolos geralmente não especicam bootstrapping Para entrar na rede é necessário conhecer pelo menos um par já ligado Existem várias possibilidade para encontrar pares já ligados: Conhecer endereço de servidor sempre ligado DNS dinâmico (várias respostas) Anycast Cache: ligar a pares conhecidos na sessão anterior Difusão: canais multicast ou broadcast em redes locais Não há registo, apenas entrada na rede
do Partilha de cheiros sem qualquer sistema centralizado Remoção de pares não afecta funcionalidade Pares juntam-se à rede, ligando-se, por TCP, a pares de uma lista pré-denida ou usando uma cache das sessões anteriores (independente do protocol) Não há registo, apenas entram na rede Encaminhamento reactivo, utilizando ooding Ligações entre pares são estáveis (tirando saídas) Dois tipos de mensagens, descoberta de pares e procura de conteúdo Transmissão de cheiros entre os pares por HTTP Rede com topologia aleatória e sem qualquer relação com rede física Oferece algum anonimato
História do Gnutella Marco 2000, versão 0.4 Criado por Justin Frankel e Tom Pepper, como software open source. Trabalhavam na Nullsoft, uma divisão da AOL. Retirado prontamente! Primavera de 2001 Lançada versão 0.6 para atacar problemas de escalabilidade.
Exemplo de rede
Encaminhamento de questões Algoritmo de ooding TTL para limitar difusão e impedir ciclos GUID por cada mensagem Memória evita ciclos Contador de hops limita tamanho TTL
Questão Como encaminhar ecientemente as respostas?
Encaminhamento de respostas Respostas usam mesmo GUID que perguntas Também incluem TTL e Hop counter Pares recordam de onde veio a mensagem com a questão Respostas são enviadas para o par que enviou a questão
Medição de rede real
Mensagens Ping/Pong Utilizadas para descobrir pares. Par que entra na rede difunde ping. Todos os pares que recebem ping respondem com pong, indicando o seu endereço IP, porto, número de cheiros partilhados, número de KB partilhados e GUID Query/Query Hit Para encontrar um cheiro, o par difunde uma mensagem query, onde indica a velocidade mínima e um conjunto de keywords. Os nós que contém cheiros que correspondem à interrogação enviam uma mensagem query hit, onde indicam: o seu IP, porto e GUID, velocidade da ligação, e para cada cheiros um hash MD5, o tamanho e o nome.
Exemplo ping
Exemplo query
Tráfego de sinalização muito signicativo, limitando escala Nós com menor largura de banda são bottlenecks Topologia longe de ser a óptima em termos de desempenho Não é possível ter uma visão global da rede/cheiros (TTL) Desfasamento da topologia real resulta em grandes atrasos Desfasamento da topologia real pode provocar várias passagens pelo mesmo link
Gnutella 0.6 Desvantagens Objectivo principal aumentar escalabilidade Reduzir o tráfego de sinalização Aumentar a visibilidade da rede Introduzem níveis hierárquicos Objectivo é diminuir o peso do tráfego de sinalização mantendo a abilidade
Gnutella 0.6 Desvantagens principais Introduz um nível adicional (hierarquia a 2 níveis) Superpeers: ligam a 50 a 100 Leafnodes e a outros superpeers Leadnodes: apenas ligados a superpeers Pares passam a efectuar registo junto do seu superpeer Deixa de ser apenas reactivo passando a ser também proactivo Flooding restrito ao nível de superpeers
Gnutella 0.6 Desvantagens Eleição de superpeers Par entra na rede ligando-se a um superpeer É necessário eleger um novo superpeer quando: Um superpeer abandona a rede Um superpeer tem demasiados leafnodes Um superpeer tem poucos leafnodes Eleição baseada na capacidade (cpu, armazenamento), largura de banda e disponibilidade (uptime) dos peers
Topologia da rede Gnutella 0.6 Desvantagens
Menos ligações Gnutella 0.6 Desvantagens
Ping/pong Gnutella 0.6 Desvantagens Ao entrar na rede, par emite ping para car a conhecer outros superpeers Envia ping ao superpeer Superpeer responde com mensagens pong de outros superpeers, que tem memorizadas Superpeer difunde ping a intervalos regulares para actualizar a sua cache Pings apenas circulam na rede de superpeers
Procedimento de registo Gnutella 0.6 Desvantagens Ao ligar ao superpeer, o par informa-o do conteúdo que partilha Utilizadas mensagens Route-table-update Memória do superpeer pode ser incrementada e limpa ao longo da sessão Enviado hash de 32b de cada uma das keywords que descrevem o conteúdo partilhado Mensagem pode ser comprimida
Query Gnutella 0.6 Desvantagens Par envia query para superpeer Superpeer difunde query para outros superpeers Superpeer apenas envia query para leafnodes que sabe possam dispor do conteúdo (através das keywords)
Exemplo ping Gnutella 0.6 Desvantagens
Desvantagens Gnutella 0.6 Desvantagens Tráfego de sinalização continua a ser signicativo Não obter resposta não garante que conteúdo não exista Distribuíção assimétrica da carga (superpeers)
Trabalho de casa Gnutella 0.6 Desvantagens Ler documentação peersim.
Fim Gnutella 0.6 Desvantagens Dúvidas?