Arquitetura de uma Rede JXTA
Este artigo descreve de forma didática a estrutura básica de uma rede de comunicações P2P ("peer-to-peer", ponta-a-ponta).
1.1. – Introdução
A tecnologia JXTA é uma plataforma de
desenvolvimento computacional e de redes que foi desenhada para
resolver diversos problemas na computação distribuída moderna,
especialmente na área conhecida como P2P (cf. GONG, 2001, pg. 1).
O projeto de JXTA foi direcionado para a
criação de um framework independente de linguagens de programação
e protocolos de transporte, que possa ser implementado em qualquer
dispositivo conectado a rede IP ou não IP (cf. SUN, 2005).
Neste artigo, serão apresentados os conceitos
básicos da arquitetura P2P e a estrutura da plataforma JXTA.
1.2. – Arquitetura P2P
A tecnologia P2P é caracterizada pela
distribuição de responsabilidades/serviços por todos os nós da rede,
diferente da arquitetura Cliente-Servidor que concentra as
responsabilidades/serviços no Servidor (cf. TELES, 2006).
Os nós P2P assumem o papel de cliente e
servidor ao mesmo tempo, promovendo escalabilidade e confiabilidade a
arquitetura. A escalabilidade provém do fato de que o número de
recursos é proporcional ao número de clientes, o que é falso na
arquitetura Cliente-Servidor. A confiabilidade é advinda da falta de um
ponto único de falhas.
Os nós P2P participam ativamente do provimento
de serviços e de informação. Assim o P2P permite que máquinas
individuais forneçam serviços a seus pares, sem relações hierárquicas,
disponibilizando aos integrantes as mesmas responsabilidades e
capacidades (cf. TELES, 2006).
Aplicações P2P são favorecidas por essa troca
de serviços entre os nós da rede, que facilita o compartilhamento de
informações e recursos entre os peers. Exemplos de aplicações P2P são:
compartilhamento de arquivos, sistemas de mensagens instantâneas,
sistemas de colaboração e computação distribuída.
1.2.1. – Modos de Comunicação entre Peers
Segue abaixo os modelos básicos de comunicação
entre peers:
- Ponto-a-Ponto – conexão direta, enviando a mensagem ao peer especificado.
- Broadcast – utilizada em subnets, a mensagem é enviada uma única vez a todos os membros da rede. É utilizada no processo de descoberta de peers e serviços.
- Multiponto – parecido com o broadcast, mas cópias da mensagem são enviadas dentro da rede e repassadas para outras redes. É baseada em múltiplas conexões Ponto-a-Ponto. Não garante a entrega de mensagens simultânea aos peers desejados e é não determinística.
1.2.2. – Topologias de Redes P2P
Existem três topologias para redes P2P:
- Pura – é uma rede sem nó central e nem hierarquia. É caracterizado por ter peers que são capazes de se conectar e comunicar com qualquer outro peer da rede. Existem mecanismos de busca e divulgação de serviços sem o auxilio de um nó central.
- Híbrida - existe uma diferença de relevância entre os nós, um grupo de nós ou um nó central realiza tarefas de controle e indexação de informações. Os outros nós ainda são livres para comunicar diretamente entre si.
- Centralizado – os peers se conectam a um nó central, onde publicam suas informações e serviços. O nó central ao receber uma solicitação a encaminha ao peer de sua lista que possa respondê-la. O restante da solicitação é realizada entre os dois nós, sem intervenção do nó central.
1.2.3 – Benefícios da Arquitetura P2P
Em uma arquitetura P2P os nós dos usuários
comunicam e cooperam diretamente entre si, a pouca necessidade de uma
infra-estrutura centralizada o que traz uma série de benefícios. Dentre
eles podemos destacar alguns listados por MAIBAUM & MUNDT (2002,
p.2):
- Confiabilidade – sistemas P2P são mais confiáveis, quando vários peers implementam o mesmo serviço. Eles ainda evitam o problema de uma única rota que pode se tornar congestionada ou indisponível;
- Performance – sistemas P2P possuem melhor performance e requerem menores larguras de banda;
- Melhor utilização dos Recursos Compartilhados – se um peer não precisa de um recurso especial, ele pode oferecê-lo a outros peers;
- Segurança – P2P suporta comunicação fim-a-fim através de canal seguro.
1.3. – Plataforma JXTA
A plataforma JXTA é composta de três camadas,
como exposto na figura 1. As camadas são:
- JXTA Core – encapsula as primitivas mínimas e essenciais que são comuns a todas as aplicações P2P. O que inclui os blocos componentes dos mecanismos chaves de aplicações P2P, incluindo descoberta de recursos, transporte, criação de peers e grupos de peers, e as primitivas de segurança (cf. SUN, 2006, p. 10);
- JXTA Services – suporta funções de alto-nível como buscas, compartilhamento de arquivos e recursos, indexação e caching (cf. MAUBAIM & MUNDT, 2002, p. 3);
- Aplicação – faz uso das camadas anteriores para suportar aplicações P2P mais complexas, como: gerenciamento de conteúdo, busca compartilhada, computação distribuída e mensageiros instantâneos.

1.3.1. – Componentes da Plataforma JXTA
Uma rede JXTA consiste em um conjunto de nós
interconectado, chamados peers. Peers podem se auto-organizar em grupos
de peers, que podem prover serviços em comum.
Os serviços são divulgados utilizando
anúncios, que são documentos XML que descrevem os componentes básicos
da rede: peers, grupos de peers, pipes e serviços. Os anúncios permitem
que outros nós da rede possam saber da existência do servidor provido e
como se pode ter acesso ao mesmo.
Os peers JXTA utilizam pipes, canais virtuais
de comunicação unidirecionais, para enviar mensagens entre si.
Segue abaixo uma descrição dos conceitos mais
importantes de JXTA encontrados em SUN (2006):
- Peers – são dispositivos conectados a rede que implementam um ou mais protocolos JXTA. Peers incluem sensores, celulares, PDAs, como também PCs e servidores. Cada Peer possui um endereço único e divulga um endpoint que permite que outros peers estabeleçam conexões ponto-a-ponto. Peers geralmente são configurados para espontaneamente descobrir outros peers na rede e formar relacionamentos chamados de grupos de peers;
- Grupo de Peers – é uma coleção de peers que provem serviços em comum, possui endereço único na rede e suas próprias políticas de adesão ao grupo;
- Rendezvous – são peers com a capacidade de armazenar anúncios, ou encaminhar mensagens ou ambas. Eles são usados na descoberta de anúncios e para ligar dois segmentos diferentes de redes;
- Serviços de Rede – Peers cooperam e comunicam entre si para descobrir, divulgar e invocar serviços de rede. Serviços podem ser pré-instalados ou carregados da rede;
- Módulos – são abstrações usadas para representar pedaços de código que implementam comportamentos no mundo JXTA, peers podem aprender novos comportamentos quando adere a um novo grupo;
- Pipes – são mecanismos unidirecionais e assíncronos de transferência de dados e mensagens;
- Mensagens – são objetos trocados entre peers JXTA podem ser documentos XML ou representações binárias.
1.3.2. – Protocolos JXTA
JXTA define seis protocolos, os peers são
obrigados a implantar pelo menos um. A Figura 2 mostra a pilha de
protocolos.

Abaixo segue breve descritivos das
funcionalidades dos protocolos JXTA encontrados em MAUBAIM & MUNDT
(2002):
- Peer Endpoint Protocol (PEP) – é responsável pelo roteamento em JXTA, descobre rotas entre peers. Uma rota é a seqüência de nós de um endpoint para outro, mas não tem ligação direta com o termo rotear dos protocolos de transporte. O PEP trabalha de forma transparente em relação à camada de transporte de rede. PEP ignora firewalls e a presença de redes lógicas construídas com NAT;
- Peer Resolver Protocol (PRP) – é o mecanismo pelo qual um peer pode enviar uma requisição genérica a outro. Cada requisição possui um identificador único, que é retornado na resposta da solicitação;
- Peer Discovery Protocol (PDP) – é utilizado na descoberta de recursos anunciados. PDP usa os rendezvous para descobrir os anúncios;
- Peer Binding Protocol (PBP) – é usado para estabelecer pipes entre peers;
- Peer Information Protocol (PIP) – é usado na troca de informações de estado dos peers, que podem incluir carga de tráfego, tempo ativo e outras;
- Peer Membership Protocol (PMP) – é o mecanismo pelo qual peers se auto-organizam em grupos. PMP coordena as ações de adesão e saída de peers dos grupos.
1.4. – JXTA e Sistemas Embarcados
JXTA é uma especificação de um framework para
aplicações P2P que não depende de linguagens de programação ou
protocolos de transporte. Isso abre espaço para várias implementações
de JXTA utilizando diferentes tecnologias.
Um dos projetos de maior destaque da
comunidade JXTA é a versão para pequenos dispositivos baseada na
arquitetura do Java Micro Edition. O que abre espaço para o uso da
plataforma em aplicações embarcadas.
Ainda existem algumas iniciativas de usar JXTA
para gerenciamento de redes de sensores inteligentes, como mostrado por
SILVA(2004). É difícil para um dispositivo embarcado de menor porte,
como alguns sensores inteligentes, implementar os protocolos de JXTA,
mas pode-se utilizar um aplicativo desktop como gateway de uma rede de
sensores com menor poder computacional ou de comunicação. Dessa forma é
possível interligar diversas redes de sensores e realizar a descoberta
automática de recursos, comunicação entre sensores e outras
funcionalidades que o JXTA permite.
1.5. – Conclusão
A tecnologia JXTA é uma plataforma genérica
para aplicações P2P em expansão. Diversos trabalhos acadêmicos e
comerciais estão em desenvolvimento por uma comunidade de
desenvolvedores bastante atuantes.
Com certeza, com o intenso aumento dos
dispositivos móveis surgirá a necessidade de aplicações mais dinâmicas,
que poderão usufruir de todos os benefícios de JXTA.
1.6. – Referências
- GONG, Li. JXTA: A Network Programming Enviroment. IEEE Internet Computing: maio, 2001.
- MAIBAUM, Nico. MUNDT, Thomas. JXTA: A Technology Faciliting Mobile Peer-to-Peer Networks. Mobility and Wireless Acess Workshop, 2002.
- SILVA, Michael da. Self Organized, Fault Tolerant, Peer-to-Peer Management of SNMP Devices, 2004. Disponível em: www.scs.carleton.ca/~arpwhite/documents/honoursProjects/michael-da-silva-summer-2004.pdf
- SUN. Project JXTA: Java Programmer Guide. Sun Microsystems. Disponível em : http://www.jxta.org.docs/JxtaProgGuide_v2.pdf
- TELES, Carlos Pedroso. JMED: Uma Arquitetura Peer-to-Peer para aplicações em telemedicina, Fortaleza, 2006. Dissertação de Mestrado em Engenharia de Teleinformática apresentada ao Departamento de Engenharia de Teleinformática da Universidade Federal do Ceará.
Otávio Alcântara
Otávio Alcântara é Tecnólogo em Telemática pelo CEFET-CE e
especializado em desenvolvimento de software em tempo real para
sistemas embutidos .

