sexta-feira, 14 de março de 2008

Um modelo de arquitetura em anel baseado na implementação Pastry


Introdução ao artigo

Com o surgimento da abstração Distributed Hash Table (DHT) foram resolvidos alguns problemas das redes p2p como localização de nós e de arquivos. Esse mecanismo sugere que um nó ativo fornece primitivas para enviar uma mensagem a uma chave. Cada nó mantém uma tabela de roteamento, formada pelor Id’s dos nós mapeados a seus endereços IP. A rede é organizada de forma que cada nó mantenha uma pequena tabela de roteamento de tamanho constante. Alguns sistemas de implementação do DHT são CAN, Chord, Kademlia, Pastry e Tapestry.

O objetivo deste artigo é propor uma infra-estrutura que forneça uma solução para alguns problemas que não são atingidos pelos sistemas acima, como por exemplo, publicação, recuperação e Binding de serviços. Publicação e recuperação fornecem mecanismos que permitem que o usuário busque e instale apenas serviços de seu interesse e Binding provê todo o código necessário para instalação de um serviço em outro nó.

Os sistemas atuais citados acima são ineficazes para estes problemas, uma vez que, exigem que cada nó da rede suporte o mesmo conjunto de aplicações e que elas estejam pré-instaladas em todos os nós.

O artigo usa a implementação Pastry como exemplo de protocolo p2p estruturado.

Pastry

Pastry direciona mensagens para o nó o qual o id é numericamente mais perto da chave de destino numa estrutura circular que podemos chamar de anel. Cada nó mantém um conjunto de folhas e uma tabela de roteamento. Cada folha no conjunto possui o endereço para o próximo nó no sentido horário. A tabela de roteamento é organizada em 32 linhas e 16 colunas de maneira que o número de nós populados na tabela seja apenas logaritmo de 16 na base n.
Em um procedimento normal de roteamento, um nó pastry direciona a mensagem para o nó onde o id compartilha com a chave de destino um prefixo que é pelo menos um dígito mais longo que o compartilhado pela chave e o id do nó que está enviando. Se não houver nenhum nó que possua um id com essa característica, a mensagem é direcionada para o nó que compartilha o prefixo com a chave tão longo quanto o do nó que está enviando.

Para cada serviço é fornecido um service id, e quando um nó descobre que está numericamente perto da chave de destino, segundo o mecanismo citado acima, ele entrega a mensagem para o serviço local que corresponde ao service id da mensagem. Isso permite a realização de cache nos nós intermediários por onde passa a mensagem destinada a um serviço.

O anel Universal

Primeiramente cada nó deve obter um id fornecido por uma entidade de controle, após isso, para cada id é atribuído um certificado, uma chave pública e uma privada para garantir a segurança. Em seguida cada nó precisa obter o endereço do seu nó de contato no anel. Através de um multicast de endereço IP ou outras formas de flooding controlado.

Serviços

O primeiro serviço oferecido é o de armazenamento persistente de pares chave-arquivo para um acesso eficiente aos arquivos através de suas chaves. Esse serviço apoiará o armazenamento de informações sobre outros serviços, como o código necessário para rodar e a lista de nós que fornecem um determinado serviço.

O segundo é um multicast de serviço em nível de aplicação.

O terceiro é a busca distribuída por serviços, que permite que usuários façam uma busca textual pelo serviço desejado através de palavras-chave.

O quarto serviço é a publicação e descoberta de serviços, onde cada serviço criado possuirá um certificado de serviço que conterá um nome e uma descrição textual de cada serviço, além disso, esse certificado também terá um conjunto de code keys onde cada code key identificará uma implementação diferente do serviço criado.

Opinião

A arquitetura proposta permite a publicação, a descoberta e a vinculação de serviços através de máquinas interligadas em um “anel universal” de forma que não seja mais necessário que todas as máquinas tenham disponibilidade para rodar todo o conjunto de aplicações e nem que estas aplicações estejam pré-instaladas em todas as máquinas. Isso facilita o uso de serviços de forma que uma pessoa dotada de um celular possa executar processos extremamente necessários em um dado momento, porém, custosos para dispositivos móveis.

O artigo deixou um pouco a desejar no que diz respeito às entidades gerenciadoras responsáveis pelos certificados citados acima, como elas reconheceriam uma falha em um dos nós ou o impacto da entrada e da saída de um nó no anel, e ainda, a arquitetura tem como alvo a implementação Pastry, e não ficou explicitado como seria o seu comportamento com outras implementações do DHT como o Chord ou o CAN.


Fonte : M. Castro, P. Druschel, A-M. Kermarrec and A. Rowstron, "One ring to rule them all: Service discovery and binding in structured peer-to-peer overlay networks", SIGOPS European Workshop, France, September, 2002. [ pdf.zip ].

Link: http://research.microsoft.com/~antr/pastry/pubs.htm (O terceiro artigo desta página).

Thiago R. Nunes / 105040501
Sistemas Distribuidos
UCAM

Tapestry

Tapestry

Usando apenas ligações ponto-a-ponto e recursos descentralizados, o Tapestry é uma infra- estrutura de roteamento e de cobertura de posição que fornece um roteamento independente da localização de mensagens diretamente a uma cópia mais próxima de um objeto ou serviço. O tapestry pode ostentar características como o balanceamento de carga, fault-resilience, robustez, escalabilidade e auto-organização.
Arquitetura de roteamento
Usando a localização Plaxton as metas do mecanismo de roteamento do Tapestry são adaptativas, auto-gerenciáveis e fault-resiliance. A arquitetura de roteamento do Tapestry eficientemente “roteia” requisições mesmo na presença de falhas nos nós ou uma carga alta na rede. Através do uso de aleatoriedade ele realiza o roteamento localmente e carrega a distribuição. O Tapestry vai lidar com os problemas da rede desviando se das rotas com falhas, removendo nós sobrecarregado por um serviço, transparentemente mascarando componentes com falhas e rapidamente adaptando a topologia de comunicação às circunstâncias que dependem dos tipos de problemas encontrados.
Por ter suas rotas fortemente ligadas ao mecanismo Plaxton, é apropriado discutir o que é basicamente o método Plaxton para que se possa entender o mecanismo de roteamento do Tapestry.
Arquitetura de roteamento do Plaxton
O mecanismo de roteamento do Plaxton possui em cada nó mapas de roteamento locais chamados mapas de vizinhança (neighborhood maps) que incrementalmente “roteiam” as mensagens cobertas ao local de destino (destination ID). Cada nó possui um mapa de vizinhaça com múltiplas camadas. Cada camada possui um número de entradas igual à base do ID, onde uma de i entradas de uma das j camadas é a ID e o local mais próximo do nó. Na intenção de achar o próximo nó, procura-se nos n+1 níveis do mapa, e verifica-se a entrada correspondente ao valor do próximo dígito no local de destino. Usando este método de roteamento num “namespace” de tamanho n e usando ID de base b pode-se garantir que em no máximo hops lógicos um nó pode ser achado no sistema, assumindo que cada nó tenha um mapa de vizinhança consistente.
Como todos os mapas de vizinhança em cada nó assumem que a predição de dígitos de cada nó sempre “casa” com o sufixo do nó atual, ele só precisa manter um tamanho constante b de entradas em cada nível da rota:
NeighborMapSize = (entries/map) * (# of maps) = b *


Esse trecho sobre Tapestry foi tirado do link abaixo. Um link muito bom que descreve um visão geral dos algoritmos de implementação DHT, além de diversas seções a respeito de várias áreas da tecnologia e arquitetura Peer-to-Peer (P2P).

http://www.gta.ufrj.br/grad/04_1/p2p/

KADEMLIA

Proposto por Petar Maymounkov e David Mazèries, Sistema de armazenamento e busca P2P. Totalmente descentralizado

A Rede

Para ingressar na rede, é necessário conhecer o IP de um nó participante.
Cada nó recebe um ID calculado através da aplicação de uma função de hash no seu IP.
Cada arquivo recebe uma Chave, obtida através da função de hash.
Os IDs e chaves possuem 160 bits.
Os pares identificam a localização do arquivo. Os pares são distribuídos aos nós, de acordo com a proximidade com os seus Ids. A distância entre dois identificadores (chaves ou IDs) é calculada com o XOR interpretado como um inteiro.

K-Listas

Cada nó mantém listas de contatos de outros nós. O nó mais recente fica na cauda da lista. A cada mensagem trocada as listas são atualizadas

Protocolo

É formado por 4 RPC’s (Remote Procedure Calls); find_node, find_value, store, ping. A busca é recursiva

Busca

Ex: Um nó deseja encontrar uma chave y.
● Ele busca em suas k-listas os IDs mais próximos desta chave.
● Ele envia então o pedido aos nós. Se algum deles possui o arquivo a busca acaba.
● Se não, os nós enviam o pedido aos nós de ID mais próximo de suas k-listas.

http://www.cic.unb.br/~bordim/TD/Arquivos/G02_Slides.pdf

Marcele Barreto Soares

mat: 104040495


Protocolo Chord

Um problema chave que toda a aplicação peer-to-peer enfrenta é a localização eficiente de qualquer nó. O artigo abaixo relata sobre o Chord que é um protocolo distribuído para a resolução daquele problema.A função do protocolo Chord é saber como localizar as keys (chaves), como novos nós juntam-se ao sistema e como se recuperar de falhas (ou evitá-las).Chord aumenta a capacidade de escalabilidade evitando que cada nó saiba sobre todos os outros. Um nó Chord precisa saber apenas algumas informações de roteamento sobre outros nós. Pelo fato da informação ser distribuída, um nó é capaz de resolver a função hash comunicando-se com outros nós.

Link: http://pdos.csail.mit.edu/chord/papers/paper-ton.pdf

Postado por: Maycon Lopes

Plataforma JXTA

Para transformar o uso P2P em uma solução madura, os desenvolvedores precisam tirar seus esforços da programação das redes e protocolos P2P para a criação de aplicações em uma base sólida e bem definida. Para isso, os desenvolvedores precisam de uma linguagem comum que permita que os peers se comuniquem e exerçam as funcionalidades básicas de uma rede P2P.

Mensagens: Mensagens são objetos enviados entre peers JXTA, ou seja é a unidade básica de troca dedados entre peers. Mensagens são enviadas e recebidas por serviços de dutos e por pontos de fim (endpoint). Tipicamente aplicações utilizam serviço de dutos para criar, enviar e receber mensagens. Em geral as aplicações não necessitam do uso direto de serviços de pontos de fim (endpoint).Mensagem é essencialmente um conjunto chave/valor, seu conteúdo pode ser de tipos arbitrários e cada plataforma de software descreve como uma mensagem é convertida de uma estrutura de dados nativa (como exemplo objetos da linguagem Java ou C) para uma representação conhecida por toda arquitetura JXTA.

Segurança: Redes P2P dinâmicas como JXTA necessitam um suporte para diferentes níveis de segurança de acesso aos recursos. Peers JXTA operam em modelos baseados em papéis, no qual diferentes peer se integram na rede e cada um possui níveis de privilégio diferentes, o qual podem executar diferentes tarefas. Cinco são os princípios básicos de segurança necessários: sigilo; autenticação; autorização; integridade dos dados; refutabilidade.

Identificadores (IDs): Peers, grupos de peers, dutos e outros recursos JXTA precisam ser univocamente identificados. O JXTA ID é um identificador único de uma entidade. Algumas entidades que precisam ser unicamente identificadas são: peers, grupos de peers, dutos e conteúdos. URNs (Uniform Resource Names) são utilizados para expressar JXTA IDs, sendo que estes servem como identificadores independentes. Estes identificadores são representados em arquivo texto no formato XML reconhecido por toda plataforma JXTA.

Opinião:
JXTA pode não ser a solução melhor ou mais eficiente para implementar uma aplicação P2P qualquer.Entretanto, JXTA provê a mais bem modelada plataforma para produzir aplicações P2P que tenham a flexibilidade necesária para crescer no futuro.A capacidade de alavancar outros serviços P2P e permitir o vasto crescimento de comunidades P2P são os valores centrais da plataforma JXTA.

Link: http://minerva.ufpel.edu.br/~agostini/pesquisa/TI_Image.pdf
http://200.18.98.97/intranet/documentos/papers/sbrc2005/2005/WP2P/P2P%2003.pdf

Jefferson Moura
105040029

Algoritmo Pastry

Pastry é uma superposição e roteamento de rede para a implementação de uma tabela hash distribuída semelhante à chord. Devido à sua natureza descentralizada não há nenhum ponto de falha e qualquer nó da rede pode sair a qualquer momento sem avisar com pouca ou nenhuma chance de perda de dados. O protocolo é bootstrapped fornecendo-o com o endereço IP de um peer já na rede e, em seguida, no roteamento da tabela é dinamicamente construído e reparado. O protocolo é também capaz de usar um roteamento métrico fornecido por um programa, tais como ping ou traceroute, para determinar as melhores rotas para serem guardados na tabela hash.
O que diferencia Pastry dos demais algoritmos DHTs é a superposição e roteamento de rede construída em cima do conceito DHT. Isto permite perceber a escalabilidade e tolerância à falha das demais redes, que reduz o custo geral de roteamento de um pacote de um nó para outro, evitando a “inundação” de pacotes.
Pode ser aplicado como um sistema de arquivos distribuídos, um sistema de assinatura e publicação, ou de qualquer outro sistema, que pode ser reduzido para armazenar e recuperar valores mais tarde.
Lorraine Oliveira da Silva

quinta-feira, 13 de março de 2008

Algoritmo KADEMLIA

Um serviço de localização de réplicas é um componente essencial em um sistema de gerência de dados para grades. É através dele que referências para arquivos são indexadas e distribuídas em grande escala, permitindo que aplicações intensivas em dados tenham vantagens no uso de técnicas de replicação. Este trabalho tem o objetivo de identificar o impacto do uso de diferentes algoritmos Peer-to-Peer estruturados no desenvolvimento de um serviço de localização de réplicas para grades. Duas técnicas (caching e nodos virtuais) para a otimização da distribuição dos dados foram empregadas. O algoritmo Kademlia apresentou os melhores resultados em todos os testes.Como os gráficos postados no artigo, é nítida a proximidade do algoritmo KADEMLIA com o ponto ideal entre total de mapeamentos e número de nós...

FONTE:http://gppd.inf.ufrgs.br/wsppd/2006/downloads/artigos/dsgomes-impacto-artigo.pdf

VLW!!