Title: Project%20JXTA
 1Project JXTA 
 2Outline
- Introduction 
 - JXTA Architecture 
 - JXTA Concepts 
 - JXTA Protocols 
 - JXTA Search
 
  3What is Project JXTA?
- JXTA is a set of open, generalized P2P protocols 
that allow any connected device on the network 
(from cell phone to PDA, from PC to server) to 
communicate and collaborate as peers.  - Its goal is to develop basic building blocks and 
services to enable applications for peer groups  - Platform, Programming Language, Transport 
Protocol independent  - a framework with a set of standards that supports 
p2p apps  - JXTA is not an application, it does not define 
the type of the applications 
  4What is Project JXTA?
- P2P is juxtaposed to client-server or Web-based 
computing  - The JXTA protocols standardize the manner in 
which peers  - Discover each other 
 - Self-organize into peer groups 
 - Advertise and discover network services 
 - Communicate with each other 
 - Monitor each other 
 - Hence, implementation is left to developer 
 - The protocols can be implemented in Java, C/C, 
Perl, etc.  - The protocols can be implemented on top of 
TCP/IP, HTTP, Bluetooth, HomePNA, or other 
transport protocols  - JXTA protocols defines the minimum required 
network semantic for peers to form/join a virtual 
network  
  5JXTA Virtual Network 
 6Why Project JXTA?
- The primary goal is to provide a platform with 
basic functions necessary for a P2P network. 
(Mentioned earlier)  - JXTA technology seeks to overcome potential 
shortcomings in many of the existing P2P systems  - Interoperability 
 - Platform independence 
 - Ubiquity (that is, any device with a digital 
heartbeat) 
  7JXTA Architecture 
 8JXTA Architecture Layers 
 9Platform Layer (JXTA Core)
- It encapsulates minimal and essential primitives 
that are common to P2P networking  - discovery 
 - transport (including firewall handling) 
 - the creation of peers and peer groups 
 - security primitives
 
  10Services Layer
- It includes network services that may not be 
absolutely necessary for a P2P network, but are 
common in P2P environments  - searching and indexing 
 - directory 
 - storage systems 
 - file sharing 
 - distributed file systems 
 - resource aggregation and renting 
 - protocol translation 
 - authentication 
 - PKI (Public Key Infrastructure) 
 
  11Application Layer
- It includes implementation of integrated 
applications such as  - P2P instant messaging 
 - document and resource sharing 
 - entertainment 
 - content management and delivery 
 - P2P email systems 
 - distributed auction systems
 
  12JXTA Components (Brief)
- JXTA network consists of interconnected peers 
 - peers self-organize into peer groups that provide 
a common set of services  - peers advertise their services. Advertisements 
enable other peers on the network how to connect 
to, interact with peers services  - peers use pipes to send messages to one another. 
Pipes are similar to message queues (asynchronous 
and unidirectional message transfer)  - messages are simple XML documents whose envelope 
contains routing, digest and credential 
information  - Pipes are bound to endpoints, such as TCP/IP port 
and associated IP address 
  13JXTA Core Specification
- Implementations that wish to be JXTA compliant 
must implement all of the JXTA Core specification 
  14JXTA Standard Services
- Implementing these services will provide greater 
interoperability and functionality 
  15JXTA Concepts 
 16Peers
- any network device that implements one or more of 
JXTA protocols  - each operates independently and asynchronously 
 - publish one or more network interfaces for use 
with JXTA protocols  - Each published interface is advertised as peer 
endpoint  - Peer endpoints (TCP port of an IP address) are 
used to establish direct point to point 
connections 
  17Peer Groups
- a collection of peers that agreed upon a common 
set of services  - peers may belong to more than one group 
 - By default, the first group that is instantiated 
is Net Peer Group (All peers belong to this 
group)  - JXTA protocols describe how peers may publish, 
discover, join and monitor peer groups they do 
not dictate when or why peer groups are created  - each group can establish its own membership policy
 
  18Peer Groups
- Search requests are propagated within the group 
 - groups also form a hierarchical parent-child 
relationship, in which each group has one parent  - The advertisement for the group is published in 
the parent group in addition to the group itself 
  19Peer Groups
- A peer group provides peer group services 
 - JXTA defines core set of peer group services and 
additional services can be developed  - In order for two peers interact via a service, 
they must be both in the same group  - JXTA Protocols specify the format for these peer 
group services  - Each service implement one or more of the 
protocols 
  20Peer Groups
- The core peer groups services provided by JXTA 
Implementation  - Discovery Service for discovering resources such 
as peers, peer groups, pipes and services, 
implements Peer Discovery Protocol  - Membership Service used by current members to 
reject or accept a new membership application  - Access Service For example, a peer receiving the 
request provides the requesting peers credentials 
and information about the request being made to 
determine if the access is permitted  - Pipe Service create and manage pipe connections 
between the peer group members, implements Pipe 
Binding Protocol  - Resolver Service used to send generic query 
requests to other peers (the status of service, 
state of a pipe endpoint) implements Peer 
Resolver Protocol  - Monitoring Service allow one peer to monitor 
other members of the same group, implements Peer 
Information Protocol 
  21Network Services
- A service is a capability running inside a peer 
group. The service may be running on all peers, 
or just a few within the group.  - A service denotes a set of functions that a 
provider offers  - A service can be widely accessible such that a 
peer can just use it or special code may be 
needed to access the service  - There are multiple implementations of service 
 - The process of finding, downloading and 
installing a service is similar to search for a 
Web page (get content, install plug-in) 
  22Network Services
- Once a service is installed and activated, pipes 
may be used to communicate with the service  - Discovery service, routing service are example of 
some default services. Discovery Service provides 
access to Peer Discovery Protocol  - Services implement one or more of the JXTA 
protocols  - Services are always associated with a group 
 - The services that a group support are listed in 
peer group ad  - Difference from Web Services you can download it 
and run it, you can invoke it from another place, 
it can be anything. () 
  23Network Services
- Peers cooperate and communicate to publish, 
discover and invoke network services  - Peers discover services via Peer Discovery 
Protocol  - Two levels of network services 
 - Peer Services service is accessible only on the 
peer publishing that service. If peer fails, 
service also fails. Multiple instances can be run 
on different peers but published individually  - Peer Group Services composed of collection of 
instances (potentially cooperating each other) of 
the service on multiple peers. If one fails, 
collective service is not effected. The service 
is published as part of the peer group 
advertisement. When a new service is implemented 
it is added to the services list of the group 
  24Network Services (Invocation)
- Service invocation is outside the scope of JXTA 
 - JXTA is designed to interoperate and compatible 
with any Web service standards WSDL, uPnP, RMI  - JXTA Protocols uses Module Ads but any other 
service description can be used  
  25Modules
- an abstraction, used to represent any piece of 
code that implements a behaviour in the JXTA 
world, for example Network Services  - used to define the code to be executed 
 - The code can be a Java class, a Java jar, a DLL, 
a set of XML messages or a script  - For example, when joining a new group, the peer 
must instantiate group specific services. The 
modules framework enables the representation and 
advertisement of platform-independent behaviours, 
and allows peers to describe and instantiate any 
type of implementation of a behaviour  
  26Modules
- Modules are definitions of services and 
applications  - The module ads enable JXTA peers to describe a 
behaviour in a platform-independent way  - The module abstraction includes 
 - Module Class primarily used to advertise the 
existence of a behaviour  - Module Specification used to access a module. 
(Contains all the information to invoke the 
module). In the case of a JXTA enabled service, 
contains the pipe advertisement (because sending 
a message is enough to invoke it). There can be 
multiple specification for a given class. 
(similar to interface part of WSDL) defines 
network compatibility. documentation needed to 
create conforming implementations  - Module Implementation implementation of a given 
module specification. There can be multiple 
implementation for a given specification. 
(similar to implementation part of WSDL) 
  27Modules
- Each of the three components have associated ads 
 - e.g., JXTA Discovery Service 
 - unique ModuleClassID, identifying it as a 
discovery service  its abstract functionality  - multiple specifications, one may use different 
strategies to achieve the discovery 
  28JXTA-Enabled Services
- services that are published using Module Spec Ad 
 - A Module Spec Ad may specify the pipe ad that can 
be used by another peer to invoke the service  - The service can be invoked remotely or first 
download the code then execute it  - A Module Spec Ad may also contain references to 
two other services which can be an authenticator 
and local proxy for the service 
  29Pipes
- Pipes are virtual connection between peers 
 - Pipes are the JXTA abstraction of network 
connections. Pipes have names and exist 
independently in the peer group.  - JXTA peers use pipes to send messages to one 
another  - asynchronous, unidirectional message transfer 
 - indiscriminative, support the transfer of any 
object  - Pipe endpoints, input endpoint and output 
endpoint (different from peer endpoints which are 
available peer network interface, e.g. TCP port 
of an IP address) 
  30Pipes
- Peer and Pipe endpoints are bound dynamically at 
run time via Pipe Binding Protocol  - This implies that a pipe can be moved around and 
bound to different peers, hence, when a peer is 
crashed, it can be replaced by another peer 
taking over the existing pipe to keep the 
communication going  - I think, the dynamicity of the network can be 
handled in this way  
  31Pipes
-  Applications use Pipe Service to create pipe 
endpoints associated with a pipe ad. The Pipe 
service uses pipe ad to identify the pipe and 
resolve the input and output endpoints 
  32Pipes
- Point-to-point pipes connects exactly two pipe 
endpoints  - Propagate pipes connects one output pipe to 
multiple input pipes. All propagation is within 
the peer group  - Secure unicast pipes point-to-point pipes with 
secure communication channel 
  33Messages
- basic unit of data exchange 
 - ordered sequence of named and typed contents 
(elements), thus a message is a set of name/value 
pairs  - elements contain namespaces, name, type, 
signature, digest and content  - content can be arbitrary type 
 - two representations for messages 
 - XML (hence SOAP or XML-RPC can be used) 
 - binary
 
  34Advertisements
- All JXTA resources (peers, groups, pipes, 
services) are represented by advertisement (XML)  - Peers discover resources by searching for their 
corresponding ads by Peer Discovery Protocol 
  35Advertisements
- JXTA protocols define the following ads types 
 - Peer ad name, peerID, available endpoints, 
run-time attributes, groupID (in JXTA Core)  - Peer Groups ad name, peerGroupID, description, 
specification, services, service parameters (in 
JXTA Core)  - Pipe ad id, type (propagate, etc.), describe the 
type of pipe  - Module Class ad existence of module class, name, 
description, ID (in JXTA Core)  - Module Spec ad (primary use) provide references 
to the documentation needed to create conforming 
implementations. (secondary use) to make running 
instances usable remotely, by publishing 
information such as pipe ad (in JXTA Core)  - Module Impl ad implementation of a 
specification. name, ModuleSpecID, code, package, 
parameters (in JXTA Core) 
  36Advertisements
- Content ad describes content that can be shared 
in a peer group. file, byte array, code, process 
state  - Peer Info ad hold specific information about the 
current state of the peer, such as, inbound and 
outbound message count, time last message 
received, etc.  - Rendezvous ad describes a peer acts as 
rendezvous peer for a given group 
  37Peer Advertisement
- ltxselement name"PA" type"jxtaPA"/gt 
 -  ltxscomplexType name"PA"gt 
 -  ltxssequencegt 
 -  ltxselement name"PID" type"JXTAID"/gt 
 -  ltxselement name"GID" type"JXTAID"/gt 
 -  ltxselement name"Name" type"xsstring" 
minOccurs"0"/gt  -  ltxselement name"Desc" type"xsanyType" 
minOccurs"0"/gt  -  ltxselement name"Svc" type"jxtaserviceParams
" minOccurs"0" maxOccurs"unbounded"/gt  -  ltxssequencegt 
 -  lt/xscomplexTypegt 
 - PID peerID 
 - GID groupID 
 - Name name 
 - Desc Description 
 - Svc Lists what the peer provides to the group 
services as data e.g., all accessible end-point 
addresses are published in association with the 
Endpoint Service, or the certificate is published 
with Membership service. These parameters are 
supplied to the services  
  38Peer Advertisement (Example) 
 39Peer Group Advertisement
- ltxselement name"PGA" type"jxtaPGA"/gt 
 -  ltxscomplexType name"PGA"gt 
 -  ltxssequencegt 
 -  ltxselement name"GID" type"jxtaJXTAID"/gt 
 -  ltxselement name"MSID" type"jxtaJXTAID"/gt 
 -  ltxselement name"Name" type"xsstring" 
minOccurs"0"/gt  -  ltxselement name"Desc" type"xsanyType" 
minOccurs"0"/gt  -  ltxselement name"Svc" type"jxtaserviceParam"
 minOccurs"0" maxOccurs"unbounded"/gt  -  lt/xssequencegt 
 -  lt/xscomplexTypegt 
 - GID group ID 
 - MSID Specification ID that this group uses. The 
ID is used to locate a module that references the 
services the group uses  - Name name 
 - Des description 
 - Svc optional list of MCID. For example, 
services, e.g. Membership Service  
  40Module Class Advertisement
- ltxselement name"MCA" type"jxtaMCA"/gt 
 -  ltxscomplexType name"MCA"gt 
 -  ltxssequencegt 
 -  ltxselement name"MCID" type"jxtaJXTAID"/gt 
 -  ltxselement name"Name" type"xsstring" 
minOccurs"0"/?  -  ltxselement name"Desc" type"xsanyType" 
minOccurs"0"/gt  -  lt/xssequencegt 
 -  lt/xscomplexTypegt 
 - MCID module class Id 
 - name name of the module, used for search 
 - Desc description, used for search 
 
  41Module Class Advertisement (Example)
- ltjxtaMCA xmlnsjxta"http//jxta.org"gt 
 -  ltMCIDgt 
 -  urnjxtauuid-587B29A1AA9341FAA7C2BE16B2C05E6F05
  -  lt/MCIDgt 
 -  ltNamegt 
 -  JXTAMODJXTA-EX1 
 -  lt/Namegt 
 -  ltDescgt 
 -  Tutorial example to use JXTA module 
advertisement Framework  -  lt/Descgt 
 - lt/jxtaMCAgt
 
  42Module Specification Advertisement
- ltxselement name"MSA" type"jxtaMSA"/gt 
 - ltxscomplexType name"MSA"gt 
 - ltxssequencegt 
 -  ltxselement name"MSID" type"jxtaJXTAID"/gt 
 -  ltxselement name"Vers" type"xsstring"/gt 
 -  ltxselement name"Name" type"xsstring" 
minOccurs"0"/gt  -  ltxselement name"Desc" type"xsanyType" 
minOccurs"0"/gt  -  ltxselement name"Crtr" type"xsstring" 
minOccurs"0"/gt  -  ltxselement name"SURI" type"xsanyURI" 
minOccurs"0"/gt  -  ltxselement name"Parm" type"xsanyType" 
minOccurs"0"/gt  -  ltxselement ref"jxtaPipeAdvertisement" 
minOccurs"0"/gt  -  ltxselement name"Proxy" type"xsanyURI" 
minOccurs"0"/gt  -  ltxselement name"Auth" type"jxtaJXTAID" 
minOccurs"0"/gt  - lt/xssequencegt 
 - lt/xscomplexTypegt 
 - CRTR Creator 
 - SUI Spec URI that permits to retrieve a document 
containing the specification  - Parm Arbitrary parameters to be interpreted by 
each implementation  - PipeAdvertisement Pipe Ad used to communicate to 
the module  
  43Module Specification Advertisement (Example)
- ltjxtaMSA xmlnsjxta"http//jxta.org"gt 
 -  ltMSIDgt 
 -  urnjxtauuid-587B29A1AA9341FAA7C2BE16B2C05E6F95
A4FB83225E40A1BC2C93D80A3AAF1D06  -  lt/MSIDgt 
 -  ltNamegtJXTASPECJXTA-EX1lt/Namegt 
 -  ltCrtrgtsun.comlt/Crtrgt 
 -  ltSURIgthttp//www.jxta.org/Ex1lt/SURIgt 
 -  ltVersgtVersion 1.0lt/Versgt 
 -  ltjxtaPipeAdvertisement xmlnsjxta"http//jxta.o
rg"gt  -  ltIdgt 
 -  urnjxtauuid9CCCDF5AD8154D3D87A391210404E59BE4
B888209A2241A4A162A10916074A9504  -  lt/Idgt 
 -  ltTypegtJxtaUnicastlt/Typegt 
 -  ltNamegtJXTA-EX1lt/Namegt 
 -  lt/jxtaPipeAdvertisementgt 
 - lt/jxtaMSAgt 
 
  44Module Implementation Advertisement
- ltxselement name"MIA" type"jxtaMIA"/gt 
 -  ltxscomplexType name"MIA"gt 
 -  ltxssequencegt 
 -  ltxselement name"MSID" type"jxtaJXTAID"/gt 
 -  ltxselement name"Comp" type"xsanyType"/gt 
 -  ltxselement name"Code" type"xsanyType"/gt 
 -  ltxselement name"PURI" type"xsanyURI" 
minOccurs"0"/gt  -  ltxselement name"Prov" type"xsstring" 
minOccurs"0"/gt  -  ltxselement name"Desc" type"xsanyType" 
minOccurs"0"/gt  -  ltxselement name"Parm" type"xsanyType" 
minOccurs"0"/gt  -  lt/xssequencegt 
 -  lt/xscomplexTypegt 
 - MSID Module Spec ID, the specification being 
implemented  - Comp environment in which this implementation 
may be implemented  - Code in case of a java impl., it contains class 
name. Other cases it can contain entire code  - PURI Package URI, package containing the code 
 - Prov Provider 
 - Desc Description 
 - Parm arbitrary parameters to be interpreted by 
the implementation  
  45Module Implementation Advertisement (Example)
- ltjxtaMIA xmlnsjxta"http//jxta.org"gt 
 -  ltMSIDgturnjxtauuid-DEADBEEFDEAFBABAFEEDBABE00000
0010206lt/MSIDgt  -  ltCompgt 
 -  ltEfmtgtJDK1.4lt/Efmtgt 
 -  ltBindgtV1.0 Ref Impllt/Bindgt 
 -  lt/Compgt 
 -  ltCodegtnet.jxta.impl.peergroup.ShadowPeerGrouplt/Co
degt  -  ltPURIgthttp//www.jxta.org/download/jxta.jarlt/PURI
gt  -  ltProvgtsun.comlt/Provgt 
 -  ltDescgt 
 -  Default NetPeerGroup reference implementation. 
 -  lt/Descgt 
 - lt/jxtaMIAgt 
 
  46Pipe Advertisement
- ltxselement name"PipeAdvertisment" 
type"jxtaPipeAdvertisment"/gt  -  ltxscomplexType name"PipeAdvertisement"gt 
 -  ltxssequencegt 
 -  ltxselement name"Id" type"jxtaJXTAID"/gt 
 -  ltxselement name"Type" type"xsstring"/gt 
 -  ltxselement name"Name" type"xsstring" 
minOccurs"0"/gt  -  lt/xssequencegt 
 -  lt/xscomplexTypegt 
 - Id JXTA id 
 - Type unicast, unicast secure or propagate 
 - name name
 
  47Pipe Advertisement (Example)
- ltjxtaPipeAdvertisement xmlnsjxta"http//jxta.or
g"gt  -  ltIdgt 
 -  urnjxtauuid-9CCCDF5AD8154D3D87A391210404E59BE4
B888209A2241A4A162A10916074A9504  -  lt/Idgt 
 -  ltTypegt 
 -  JxtaUnicast 
 -  lt/Typegt 
 -  ltNamegt 
 -  JXTA-EX1 
 -  lt/Namegt 
 - lt/jxtaPipeAdvertisementgt
 
  48Security
- JXTA peers operate in a role-based trust model, 
in which an individual peer acts under the 
authority granted to it by another trusted peer 
to perform a particular task  - Five basic security requirements 
 - confidentially content of the message is not 
disclosed to unauthorized (encryption and signed 
by certificate)  - authentication sender is who s/he claims to be 
(credentials)  - authorization the sender is authorized to send a 
message (credentials)  - data integrity message was not modified in 
transit (Message digest)  - refutability (encryption and signed by 
certificate)  - A credential is a token, used to identify a 
sender, used to verify a senders right to send a 
message to a specified endpoint  - A credential is obtained after authentication 
(Membership Service)  - Groups use authentication and credentials to 
control access and enable security 
  49Network Architecture 
 50Network Organization
- Peers may join or leave the network at any time 
and routes may change frequently  - Four kinds of peer 
 - minimal peer send receive message, does not 
cache ads, does not route messages (PDA or cell 
phone)  - simple peer send receive message, cache ads, 
reply to discovery request if it is in cache, do 
not forward the discovery request (most peers)  - Rendezvous peer in addition to simple peers, 
forward discovery messages. Any simple peer can 
configure itself as rendezvous. It has a list of 
other known rendezvous peers and a list of peers 
that are using it as rendezvous. It forward 
discovery request (if it can not found in its 
cache) to other rendezvous also to the peers that 
are using it. A message has a TTL of seven hops.  - Relay peer information about the routes to other 
peers and routes messages to other peers. A peer 
first look at its local cache for its route info, 
if it isnt found, the peer asks relay peer. 
Relay peers spool messages for unreachable peers. 
  51Rendezvous Peers
-  In JXTA 2.0 adv queries no more propagated to 
edge peers  -  A query is forwarded to an edge peer only when a 
matching index is found  -  The propagation in Rendezvous peers 
 -  SRDI is used by edge peers to index their adv on 
rendezvous peers  -  Rendezvous peer has a list of other rendezvous 
peers (RPV  Rendezvous Peer View) 
  52JXTA Protocols 
 53Protocols
- Peer Discovery Protocol (PDP) advertise 
resources (peers, peer groups, services, pipes) 
and discover resources (in JXTA Standard 
Services)  - Peer Information Protocol (PIP) obtain status 
info from other peers (in JXTA Standard Services)  - Peer Resolver Protocol (PRP) enables peers to 
send generic queries to other peers, allows peer 
services to define and exchange any arbitrary 
information (in JXTA Core)  - Pipe Binding Protocol (PBP) used by peers to 
establish pipes to others (in JXTA Standard 
Services)  - Endpoint Routing Protocol (ERP) used by peers to 
find routes. route is an ordered sequence of 
relay peers (in JXTA Core)  - Rendezvous Protocol (RVP) used by peers to 
propagate messages within a peer group (in JXTA 
Standard Services)  
  54Protocols
- enable developers to build and deploy 
interoperable services  - ALL ARE ASYNCHRONOUS 
 - Each of them is independent of the others 
 - A peer is not required to implement all of the 
JXTA protocols to be a JXTA peer  - The PRP and ERP must be implemented by a peer to 
addressable 
  55Peer Discovery Protocol
- PDP is default discovery protocol 
 - Custom discovery services can be implemented to 
leverage PDP  - Rendezvous peers provide mechanism of sending 
requests from one known peer to the next 
  56Discovery Query Message
-  Type 0, 1, 2 
 -  Threshold Max number of ads that each peer 
provide  -  PeerAdv ad of the requestor 
 -  Attribute, Value constraining the search space
 
  57Discovery Query Example
- ltjxtaDiscoveryQuerygt 
 -  ltTypegt2lt/Typegt 
 -  ltThresholdgt1lt/Thresholdgt 
 -  ltAttrgtNamelt/Attrgt 
 -  ltValuegtsiduslt/Valuegt 
 -  ltPeerAdvgt 
 -  lt?xml version"1.0"?gt 
 -  lt!DOCTYPE jxtaPAgt 
 -  ltjxtaPA xmlnsjxta"http//jxta.org"gt 
 -  ltPIDgt 
 -  urnjxtauuid- 59616261646162614A7874615032
503304BD268FA4764960AB93A5D7F15044503  -  lt/PIDgt 
 -  ... remainder omitted for brevity ... 
 -  lt/jxtaPAgt 
 -  lt/PeerAdvgt 
 - lt/jxtaDiscoveryQuerygt 
 
  58Peer Information Protocol
- Once a peer is located, its capabilities and 
status is queried (such as network traffic)  - First a ping message is sent to the peer, and 
peerinfo (uptime, peer ad, resource peerID, 
target peerID) message is returned in response. 
  59Peer Resolver Protocol
- permits the dissemination of generic queries to 
handlers within a peer group and identify 
responses  - each query is addressed to a specific handler 
 - The handler name defined the particular semantics 
of the query and its responses (handler names are 
the name of the module/service)  - The query may be received by any number of peers 
in the group and processed if such a handler name 
is defined on that peer  - PIP and PDP are built using PRP. 
 - PRP uses Rendezvous Protocol to disseminate the 
queries  - e.g., enables peers to define queries to find 
service information such as state of the service, 
the state of a pipe endpoint 
  60Resolver Query Message
- this message is used to send resolver query to 
the named handler on one or more peers  - ltxselement name"ResolverQuery" 
type"jxtaResolverQuery"/gt  -  ltxscomplexType name"ResolverQuery"gt 
 -  ltxsallgt 
 -  ltxselement ref"jxtaCred" minOccurs"0"/gt 
 -  ltxselement name"SrcPeerID" type"jxtaJXTAID"/gt
  -  lt!-- This could be extended with a pattern 
restriction --gt  -  ltxselement name"HandlerName" 
type"xsstring"/gt  -  ltxselement name"QueryID" type"xsstring"/gt 
 -  ltxselement name"HC" type"xsunsignedInt"/gt 
 -  ltxselement name"Query" type"xsanyType"/gt 
 -  lt/xsallgt 
 - lt/xscomplexTypegt 
 - Cred credential of the sender 
 - HandlerName destination of the query 
 - SrcPeerId requesting peer Id 
 - QueryID query Id 
 - HC specifies the number of hops the query has 
been through (incremented by each peer that 
forwards this query)  - Query Contains the query 
 
  61Resolver Query (example) 
 62Resolver Response Message
- ltxselement name"ResolverResponse" 
type"ResolverResponse"/gt  -  ltxscomplexType name"ResolverResponse"gt 
 -  ltxsallgt 
 -  ltxselement ref"jxtaCred" minOccurs"0"/gt 
 -  ltxselement name"HandlerName" 
type"xsstring"/gt  -  ltxselement name"QueryID" type"xsstring"/gt 
 -  ltxselement name"Response" type"xsanyType"/gt 
 -  lt/xsallgt 
 - lt/xscomplexTypegt 
 - jxtaCred The credential of the respondent. 
 - HandlerName Specifies how to handle the 
response.  - QueryID The query identifier of the query to 
which this is a response.  - Response The responses.
 
  63Pipe Binding Protocol (PBP)
- used by peers to bind a pipe ads to pipe 
endpoints  
  64Pipe Resolver Message
- used by the Pipe Resolver to find an input pipe 
endpoint bound to the same pipe ad  - In answer messages, all of the peers on which the 
input pipe is known to be bound  
  65Endpoint Routing Protocol (ERP)
- enable one peer to find route information from 
relay peers  
  66Rendezvous Protocol
- responsible for propagating messages within a 
peer group  - RVP is used by PRP and PBP to propagate messages
 
  67Rendezvous Advertisement
- describes a peer that acts as a rendezvous peer 
for a given group  - these ads are published so that other peers that 
are looking for rendezvous peers can find them 
  68Discovery Service (From Examples)
- Creates an application, creates a pipe 
advertisement and opens an input pipe to that 
pipe, waits.. Another peer discover the pipe ad, 
creates an output pipe to the pipe..  - It can be extended 
 - Default discovery service parameters 
 - peerID sender Id 
 - type peer, group or advertisement 
 - attribute attribute name to narrow the query 
(must match an element name in the associated XML 
document)  - value value of the attribute
 
  69Membership Service (From Examples)
- The service allows a peer to establish an 
identity within a peer group  - Once identity established, a credential is 
available that allows the peer to prove that it 
rightfully has that identity 
  70JXTA Service (From Examples)
- publish Module Class ad 
 - add a pipe ad to Module Spec ad and publish it 
 - Other peers discover the Module Spec ad and using 
the pipe ad they can communicate with the service 
(Ama gonderdigin mesajin icinde ne var. Bunu PRP 
ile belirleyebilirsin hatta WSDL de 
kullanabilirsin, sen kendin bu protocolleri 
uygulayan peerlar yaziyorsun) 
  71JXTA Search
- JXTA Search is an open network framework based on 
the JXTA framework for distributed information 
routing that extends the JXTA framework  
  72Objective
- to provide a common distributed query mechanism 
for devices effectively p2p-ing the Web via JXTA  - Like our work on JADE. They wrapped JXTA peers
 
  73JXTA Search Network
- Communication over the JXTA Search Network is via 
Query Routing Protocol  - QRP defines mechanisms for sending, responding 
queries as well as meta-data for nodes in the 
network  - consists of the following participants 
 - JXTA Search Information Providers JXTA peers or 
Web Servers responds to QRP requests  - JXTA Search Consumers JXTA peers or Web sites 
with HTTP client interface to JXTA  - JXTA Search Hub handles message routing between 
consumers and providers. Providers register to hub 
  74JXTA Search Network
- Consumers send requests to the JXTA Search 
Network via the nearest JXTA Search hub  - Hub decides which of the provider should receive 
the query  - Hub sends the query to the provider, receives the 
responses and send them back to the consumer 
  75JXTA Search Network
- JXTA Search provides efficient mechanism for 
distributing queries across a wide network of 
peers (wide search)  - Deep search that is the content in a particular 
peer is also handled  
  76Architecture 
 77Architecture
- JXTA Search Provider Service 
 - JXTA Search Consumer Service 
 - JXTA Search Registration Service sends requests 
for registration to the hub and maintains the 
registration file for the provider  - JXTA Search Hub Service 
 - JXTA Search Router routes queries, collects 
results and returns to the consumer  - JXTA Search Resolver matches queries to providers
 
  78An example network 
 79Design Goals
- Simplicity Any client and server can be 
incorporated  - Structure All queries to the JXTA Search Network 
are XML messages conforming to a queryspace in 
which providers register templates describing the 
structure of queries they are accepting  - Extensibility arbitrary queryspaces can be used 
 - Scalability 
 
  80Queryspaces
- Like XML namespaces, queryspaces do not 
necessarily reference to the actual content, they 
are simply identifiers used by providers and 
consumers to find each other  - JXTA Search protocol makes no assumptions about 
the syntax (no validation) or semantics of 
queryspaces 
  81Queryspaces
- Queryspaces should incorporate 
 - Structure DTD or XML-Schema 
 - Semantics Provider and Consumers must also agree 
on the meaning of exchanged messages  - the protocol simply ensures that the provider 
receive queries that match their queryspaces 
  82QRP (Query Message)
- ltrequest xmlns http//search.jxta.org 
 - xmlnst http//search.jxta.org/text 
 - query-uuid 1C8DAC3036A811D584AEC2C23 
 - query-space http//search.jxta.org/text gt 
 -  lttquerygt 
 -  ltttextgt 
 -  sunw 
 -  lt/ttextgt 
 -  lt/tquerygt 
 - lt/requestgt 
 - Meaning should be anything
 
  83QRP (Response Message)
- ltresponses xmlns http//search.jxta.org 
 - xmlnst http//search.jxta.org/tickerqs 
 - query-uuid 1C8DAC3036A811D584AEC2C23 gt 
 -  ltresponsegt 
 -  ltdatagt 
 -  ltttickergt 
 -  SUNW 
 -  lt/ttickergt 
 -  lttpricegt 
 -  20.59 
 -  lt/tpricegt 
 -  lt/datagt 
 -  lt/responsegt 
 - lt/responsesgt
 
  84QRP (Registration)
- ltregister xmlns http//search.jxta.org gt 
 -  lttitlegtJXTA Stock Quote Providerlt/titlegt 
 -  ltlinkgthttp//search.jxta.orglt/linkgt 
 -  ltdescriptiongtGiven a ticker symbol, returns a 
15-minute delayed quote  -  lt/descriptiongt 
 -  lt! the URL or pipe ID of the provider --gt 
 -  ltquery-servergtjxta// 
 -  59616261646162614A757874614D5047CF403C5700D44AE68
F9FB626DD3F18E500000000000000000000000000000000000
0000000000000000000000000401  -  lt/query-servergt 
 -  ltquery-space uri"http//search.jxta.org/text"gt 
 -  ltpredicategt 
 -  ltquerygt 
 -  lttextgtsunw aol orcllt/textgt 
 -  lt/querygt 
 -  lt/predicategt 
 -  lt/query-spacegt 
 - lt/registergt
 
  85Router (JXTA Router)
- Opens an output pipe to the provider end point 
 - Sends the message to the provider end point using 
the pipe  - Accepts responses from providers on a dedicated 
input pipe 
  86Messages
- The messages are arbitrary XML, enabling the 
network to provide implicit support for any XML 
protocol to be carried as payload 
  87Some implementations
- CORE JXTA Protocols are implemented for Perl, C, 
Python, Smalltalk, Tini  - Services XML-RPC for JXTA, SOAP for JXTA, 
p2p-email, RMI for JXTA, Web services for JXTA.. 
(Most of them are not complete) (optional P2P 
services that run on the JXTA Platform)