Transcript JXTA
JXTA
Selo TE 2005
Introduction
What is JXTA (pronounced Juxta)
Jxta – an open, network computing
platform designed for peer-to-peer (P2P)
computing
Provides a base P2P infrastructure over
which other P2P applications can be built
Originally conceived by Sun Microsystems
Designed with the participation of experts
from academia and industry
Jxta P2P Software Architecture
Jxta Three Layer Cake
JXTA
applications
JXTA
services
JXTA
core
Jxta community applications
Jxta community services
Peer groups
Sun Jxta
applications
Sun Jxta -indexing
Services – searching
Peer pipes
Peer
Shell
--------Peer
commands
Peer monioring
Security
Any peer on the extended Web
Jxta Layers
Platform - Minimal and essential primitives
Services - Network / Web services
Peer & peer group discovery
Communication
Monitoring
Security
Indexing,searching
Directory storage systems
Distributed file systems
Applications
Instant messaging
Content management
Distributed auction systems
P2P email systems
Jxta Jargon
Peers
Peer groups
Collection of peers with common set of interests
Unique PeerGroup Id
Default: World Peer Group
Messages
Message-based communication
XML
Datagram
Envelope having header, digest, source & destination endpoints
Pipes
Virtual communication channels
Network abstraction over the peer endpoint transport
Jxta Jargon (contd)
Services
Peer Services
PeerGroup Services
Discovery service
Membership service
Access service
Pipe service
Resolver service
Monitoring service
Codats (Code/Data)
Identifiers
Advertisements
Jxta Protocols
PeerGroup
Peer
Peer Membership
Protocol
PeerGroup
Peer Information
Protocol
Peer Information
Protocol
Peer Binding
Protocol
Peer Binding
Protocol
Peer Discovery
Protocol
Peer Discovery
Protocol
Peer
Peer Resolver
Protocol
Resolver
Endpoint
Peer Membership
Protocol
Peer Resolver
Protocol
Resolver
Peer Endpoint
Protocol
Transport
Endpoint
Peer Endpoint
Protocol
Transport
Jxta Protocols
Set of six protocols
Designed for ad hoc, pervasive and multi-hop
peer-to-peer network computing
Objectives
Interoperability
Plaform independence
Ubiquity
Using the protocols, peers can cooperate to form
self organized and self-configured peer groups
Advertise resources
Discover network resources
Route messages/communicate
Peer Discovery Protocol
Enables peers to discover peer resources
Peers, peer groups, pipes, services, etc
Default discovery protocol
Based on web-crawling and rendezvous peers
Rendezvous peers
Cache advertisements
Forward requests
Discovery Request messages
Unicast
propagate
Peer Resolver Protocol
Enables a peer to send a generic query to
another peer service
Each service can register a handle in
peergroup resolver
Unique service handler name
A peer is not required to respond to a
ResolverQuery request
Peer Membership Protocol
Peers use PMP for joining and leaving peer
groups
Actions:
Apply
Join
Renew
Cancel
Authenticators and security credentials to
provide desired level of protection
Peer Information Protocol
PIP allows a peer to learn about the
capabilities and status of other peers
Eg. Ping a peer to determine if it is alive
PeerInfo Messages
<?xml? Version=“1.0” encoding=“UTF-”>
<jxta: PeerInfo>
<Credential> Credential </Credential>
<SourcePid> Source Peer Id </SourcePid>
<TargetPid> Target Peer Id </TargetPid>
<Uptime> uptime </uptime>
<Timestamp> timestamp </timestamp>
<PeerAdv> Peer advertisement </PeerAdv>
</jxta: PeerInfo>
Peer Binding Protocol
PBP is used by peers to bind a pipe
advertisement to a pipe endpoint
Pipes can be viewed as abstract named
message queues
Support abstract operations
Bind
Unbind
Peer Endpoint Protocol
Also called Endpoint Routing Protocol
Allows peers to query a peer router for
available routes for sending a message to
a destination peer
Router peers
Cache route information
Bridge different logical and physical networks
Jxta Java Binding
Jxta reference implementation in Java
(JDK release 1.1.4)
Portability
Ease of development
Rich set of class libraries
XML
Messages and advertisements
Parsing and extensibility
Lightweight XML parser that supports a
subset of SML - MicroXML
Jxta Class organization
Two main class hierarchies:
net.jxta.*classes
Interfaces for Jxta protocols and core building
blocks
net.jxta.impl.*classes
Interfaces’ implementations
Peer class
•
Boot class – net.jxta.impl.peergroup.Boot
Peer Group
•
PeerGroup class – net.jxta.peergroup.PeerGroup
Applications
•
net.jxta.platform.Application
Security
Crypto Library
Hashing functions (MD5)
Symmetric encryption (RC4)
Asymmetric encryption (DH and RSA)
Pluggable Authentication Module (PAM)
Password based login scheme
Transport security mechanism
Simple access-control mechanism
NAT/Firewalls – active research
Jxta Shell
Application built on top of Jxta Platform
Networked command-line interface
Shell commands (similar to Unix)
Man
Env
Whoami
Peers
Importfile
Mkpipe
Applications
Jxta Content Manager Service (CMS)
InstantP2P
Allows sharing and retrieving of content
Peer-to-peer messenger service
Group chat
File sharing
Net Services
standards such as
WSDL,ebXML,SOAP,UPnP,etc
Conclusion
Foundation for peer-to-peer systems
Protocol suite – technology independent of
APIs
Independent of transport protocols
Heterogeneous devices with completely
different software stacks can interoperate
through Jxta protocols
Implementation over TCP/IP, HTTP, Bluetooth,
HomePNA, etc
Jxta promise !!