Conceitos Básicos

Internet

Aplicações
- Freenet
- Gnutella
- Napster

Tecnologias de base

MANET

Conclusões

Referências

Links

FAQs

Contatos
William Roger wroger90@ig.com.br


Introdução às Redes Peer-to-Peer (P2P)

Publicado em 11 de junho de 2003
Última revisão em 11 de junho de 2003


Tecnologias de base "Core technologies"

As tecnologias de base "Core technologies" [Geof01] ou serviços P2P incluem ações de gerenciamento , troca de mensagens, segurança , agrupamento de 'clientes', registro de arquivos ( ou objetos de forma geral) , busca e acesso.

Entre os projetos tecnológicos em desenvolvimento estão o justaposto "Juxtapose" JXTA e o Jini da Sun Microsystems , ambos semelhantes sendo que detalharemos o JXTA [Nico02] pela ênfase que esse tem em agrupamento e segurança.

JXTA é um projeto de código aberto suportado pela Sun Microsystems e iniciou em 2001 de acordo com as idéias de Bill Joy e Mike Clary. Atualmente JXTA suporta TCP/IP e HTTP como protocolos de transporte enquanto o suporte a outros está em desenvolvimento. A versão 1.2.1 inclui implementações características de segurança como algoritmos de encriptação entre outras o que faz dele uma alternativa interessante para redes sem fio.

A arquitetura do JXTA divide-se em três camadas , JXTA núcleo "Core", JXTA serviços e JXTA aplicações. A funcionalidade básica reside no núcleo enquanto as duas camadas acima são mais específicas para a aplicação.

Antes de proceguirmos é interessante esclarecer alguns termos a serem utilizados:

  • Par "Peer" : qualquer dispositivo conectado à rede que implemente um ou mais protocolos JXTA;

  • Grupo de pares "peer group": um conjunto de pares com interesse comum;

  • Duto "pipe": conexão virtual unidirecional e assíncrona entre pares ou entre um par e múltiplos outros pares.
  • No aspecto de "transporte" JXTA não possui um protocolo próprio. Usa mas não define como único protocolos tipo TCP ou HTTP. Suas mensagens são entregues como datagramas sem confirmação para um destinatário endereçado por um determinado URI (Uniform Resource Identifier)[RFC 2396].

    Todas as entidades (recursos) , como os pares, grupos de pares, dutos ou serviços são descritos por anúncios "advertisements". Estes anúncios são documentos XML estruturados. Os anúncios são estrutura de metadados que se referem ao documento WSDL (Web services description languages).

    Voltando às camadas JXTA podemos detalhar pelo segunte diagrama [Nico02] :

    Núcleo JXTA "Core" é responsável pelo nível básico de operação e comunicação. Esta camada inclui protocolos e provê mecanismos de segurança. Ela equivale ao 'kernel' de um sistema operacional e controla o grupamento de pares, os dutos de pares e a monitoração de pares. Além disso ela é a responsável pelos mecanismos de segurança e já na versão 1.0 implementa um conjunto de primitivas de segurança para o suporte das soluções de segurança correspondentes às camadas de serviço e aplicação. Detre elas pode-se destacar:

  • Funções de Hash para algoritmos de encriptação direta e indireta;

  • Estrutura de autenticação modelada após PAM ( " plugable authentication module");

  • Entrada baseada Senha;

  • Mecanismos de controle de acesso baseado sobre os grupos;

  • Mecanismos de transporte seguro.
  • Serviços JXTA suporta as funções de alto nível como a procura , compartilhamento, indexação , e "caching". Esta camada possibilita a colaboração independente de plataforma.

    Aplicação JXTA esta camada tem acesso tato à camada de serviço quanto à camada núcleo. Exemplos de aplicação seriam : gerenciamento de conteúdo, busca de compartilhamento, computação distribuída e mensagem instantânea.

    JXTA também possui diversos protocolos cada par de acordo com a tarefa deve implementar apenas os requeridos não todos, eles não representam uma estrutura em camadas.

    Protocolo de par destino "peer endpoint protocol"(PEP)
    Este é o protocolo de roteamento do JXTA é utilizado para encontrar uma rota entre dois pares. Definindo rota como uma sequência de nós da rede P2P do par ao par destino. PEP trabalha independentemente do protocolo de transporte da rede subjacente PEP ignora a existência de "firewalls" e redes lógicas feitas sob IP NAT ( Network Address Translator).

    Protocolo de resolução de par "peer resolver protocol" (PRP)
    É o mecanismo pelo qual um par pode enviar um inquisição 'query' genérica a outros pares. Ele é um protocolo de respostas a inquisições. Cada inquisição contém um único ID que será o mesmo da resposta.

    Protocolo de descoberta de par "peer discovery protocol"(PDP)
    É utilizado para encontrar qualquer recurso publicado necessariamente nos 'anúncios'.

    Protocolo de ligação de pares "pipe binding protocol"(PBP)
    É utilizado para estabelecer dutos de conexão entre os pares.

    Protocolo de informação de pares "peer information protocol"(PIP)
    É utilizado para modificar o estado "status" de informação entre pares. Sobre temporização, inclusão, carga de tráfego, entre outras informações.

    Protocolo de associação de pares "peer membership protocol" (PMP)
    É o mecanismo pelo qual os pares podem se organizar em grupos. Os pares utilizam o PMP para se juntar ou abandonar determinados grupos. Um único par pode pertencer a vários grupos. A descoberta de grupos pode ser feita utilizando-se o PDP.

    Além dessas características o modelo de rede JXTA conta com alguns pares de funções mais específicas , caracterizando-se por uma arquitetura P2P híbrida conforme definição da seção 1 deste trabalho.

    Esses pares chamam-se "pares rendezvous" os redezvous tem capacidade de armazenar os anúncios ou encaminhar requisições ou ambos. Eles são utilizados por exemplo para descobrir anúncios ou fazer a ponte entre diferentes segmentos de rede mesmo que esses estejam sob diferentes protocolos de transporte. Não confundir com roteamento de mensagens. Este é provido pelas camadas inferiores da rede utilizadas pelo JXTA. Além disso os pares redezvous podem fazer um túnel de informações através de "firewalls" e segmentos que utilizam NAT.

    Os pares comuns descobrem a lista inicial de pares redezvous através de um algoritmo de "bootstrap". Os pares redezvous mantém um relacionamento entre si e podem encaminhar requisições entre si.

    Conforme estudos e testes realizados em [Nico02] o JXTA tem condições de servir de base para o desenvolvimento de aplicações P2P tanto para a Internet quanto para redes móveis.

    << Anterior -- Topo -- Próxima >>