JXTA Protocolos PIP e PBP Franklin Felipe Wagner Márcio Dalle Lucca
Peer Information Protocol PIP
O que é? - Permite que os peers obtenham a informação de status dos peers previamente descobertos. - Uptime e quantidade de tráfego processada pelo par. - Futuro: monitoração. Peer Information Protocol
- O PIP fica numa camada acima do Peer Resolver Protocol. - PIP é um protocolo opcional do JXTA. - Nenhuma, uma ou múltiplas respostas podem ser recebidas a qualquer pergunta. Peer Information Protocol
- Peer 1 manda um Peer Info Query Message para um peer especifico (2) - Os peer´s recebem a msg e comparam o Peer ID da mensagem. - se for igual o seu (2), respondem para o peer source com uma Peer Infor Response Message - Senão, não faz nada (12) Exemplo de PIP
Mensagens: - Peer Info Query Message - Peer Info Response Message Peer Information Protocol
... Peer Info Query Message
Peer Info Response Message
Peer Info Response Message
- net.jxta.protocol diferente de - net.jxta.impl.protocol - PeerInfoQueryMessage e - PeerInfoResponseMsg Peer Information Protocol
Pipe Binding Protocol PBP
- Pipes são utilizados para troca de mensagens entre peers. - Antes de ser utilizado, um pipe precisa estar ligado a dois endpoints, para que os peers criem input e outputs pipes e então formem um Pipe. - O processo de ligar um pipe a um endpoint é definido pelo Pipe Binding Protocol Introdução
Definição: Interface de rede nativa provida por um peer. Utilização: Produzir, enviar, receber e usar mensagens através da rede. Endpoint
Outros serviços JXTA são construídos em cima de endpoints, direta ou indiretamente. Existem duas maneiras de acessar a rede P2P sem utilizar diretamente os endpoints: - Através do serviço Resolver - Através do uso de Pipes Endpoint
Um Pipe é formado quando dois endpoints querem se comunicar. Ele provê conexão entre um endpoint remetente e um ou mais endpoints destinatários. Embora o JXTA especifique outros tipos de Pipe, o único requerido é o Pipe unidirecional e assíncrono. Pipe
Pipe: formação
- O Peer1 cria um input pipe de um Pipe Advertisement e espera mensagens chegarem. - O Peer2, querendo mandar mensagens para o Peer1 usando o mesmo Pipe Advertisement, precisa criar um output pipe. Para isso ele envia uma PB Query Message para todos os seus peers e rendezvous peers conhecidos. - Peer1, ao receber a PB Query Message do Peer2, checa seu cache de pipes para ver se bate. Se sim, ele responde com uma PB Answer Message contendo seu Peer Advertisement. - Peer2 recebe de PB Answer Message e extrai a informação de endpoint do Peer Advertisement. Com ela ele cria um output pipe. Feito isso, o Peer2 pode mandar mensagens para o Peer1. Pipe: formação
... Pipe Advertisement
ID: ID único do Pipe. Type: JxtaUnicast - comum, JxtaUnicastSecure - comum com TLS, JxtaPropagate - provê conexão entre endpoints remetentes e múltiplos destinatários. Name: Nome simbólico do Pipe, que pode ser usado pelo Discovery service para descobrir o Pipe Advertisement. Pipe Advertisement
Percebe-se que o Pipe Advertisement não possui Peer ID. Isso é definido para que vários peers possam prover acesso a um serviço utilizando o mesmo Pipe Advertisement. E é por isso que os pipes precisam ser resolvidos com o PBP. Quando um peer quer enviar dados usando um pipe, ele precisa encontrar um peer que já ligou um pipe com o mesmo Pipe ID a um endpoint e que está esperando por dados. Pipe Advertisement
O PBP define duas mensagens para permitir que um peer resolva um pipe: - Pipe Binding Query Message - Pipe Binding Answer Message Mensagens
Query... PB Query Message
MsgType: pode ser Query ou Answer, nesse caso é Query. PipeId: ID do Pipe Type: Corresponde ao campo Type do Pipe Adv., pode ser JxtaUnicast, JxtaUnicastSecure ou JxtaPropagate. Cached: Opcional. Define se o peer usa seu cache de Pipes resolvidos pra responder à query. Peer: Opicional. Especifica um único Peer ID para responder a query. PB Query Message
Answer... false... PB Answer Message
MsgType: Answer Found: Opcional. Serve para indicar se foi encontrado o Pipe ID. Por default é considerado que sim. PeerAdv: Quando encontrado o Pipe ID correto, a resposta é enviada com o PeerAdv. do peer que o possui. PB Answer Message
- Quando o Peer1 cria o input pipe, nada é mandado pela rede. Ele simplesmente começa a esperar no seu endpoint local por mensagens que possuam o Pipe ID especificado no Pipe Adv. - O Pipe Adv. não necessariamente precisa ser comunicado através da rede. Embora o Pipe Adv. é normalmente descoberto através do Discovery service, ele pode ser codificado na aplicação ou pode ser trocado usando o Resolver service. - Binding significa a troca de mensagens PB para formar um pipe. Para criar um input pipe, não é necessário fazer o binding, ou seja, não são enviadas mensagens. - Os endpoints que na verdade são responsáveis por enviar e receber dados. O Pipe só auxilia na identificação de quais endpoints estarão trocando mensagens pela rede. Esclarecimentos
Dúvidas? Referências: