jxta: tech brief dan berger, suvidhean dhirakaosal, essia hamouda, demetris zeinalipour cs 202...
Post on 20-Dec-2015
213 views
TRANSCRIPT
![Page 1: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/1.jpg)
JXTA: Tech Brief
Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda,
Demetris Zeinalipour CS 202 Spring 2003
![Page 2: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/2.jpg)
Outline
Problem Statement/MotivationArchitecture OverviewExperiments/DemonstrationsConclusions
![Page 3: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/3.jpg)
Motivation
Existing P2P solutions have had rapid adoption and success – so why build another? JXTA attempts to address 3 key “shortcomings” of typical P2P systems:
InteroperabilityPlatform IndependenceUbiquity
![Page 4: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/4.jpg)
Interoperability
Gnutella for file sharing, ICQ/AIM/Yahoo/Jabber/MSN for instant messaging
But none of them can talk to each other.This has led to the development of apps like Gaim (linux) and Trillian (windows) that provide a single front-end to multiple protocols.
JXTA aims to standardize at the protocol level.
![Page 5: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/5.jpg)
Platform Independence
JXTA is “independent” of programming language, operating system, and networking platform.The core of JXTA are protocol definitions, not API’s.
![Page 6: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/6.jpg)
Ubiquity
JXTA was designed to be scalable to any device with a “network heartbeat” – cited examples are:
SensorsConsumer electronics (toasters, cell phones)PDAsEtc.
![Page 7: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/7.jpg)
The Grand Vision
![Page 8: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/8.jpg)
Enough Buzzwords, Already
JXTA proposes a set of services to enable building a securable logical overlay network linking “peers:”
Peer DiscoveryPeer ResolutionRendezvousPipe BindingEndpoint Routing
![Page 9: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/9.jpg)
Gratuitous Architecture Picture
![Page 10: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/10.jpg)
Just the Facts
Each node in the JXTA networkhas a “peer id” - a “globally” unique ID (UUID)
Urn:jxta:idform3-31:08:66:42:67:::91:24::73
Is Autonomous and may operate independently of all peers
Peers (self)organize into peer groups – loosely hierarchical.
All peers belong to the “World” group.
Peers and services are advertised with advertisements (XML documents)
![Page 11: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/11.jpg)
Advertisements
Used to describe peers, peers groups, pipes, content, services and resourcesUsed to pass info between peersAre presented in XML
Peer Adv.Peer group Adv.Module Class Adv.Module Spec. Adv.Module Implementation Adv.
![Page 12: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/12.jpg)
Discovery Query<xs:element name="DiscoveryQuery" type="jxta:DiscoveryQuery"/>
<xsd:simpleType name="DiscoveryQueryType"><xsd:restriction base="xsd:string">
<!-- peer --><xsd:enumeration value="0"/>
</xsd:restriction></xsd:simpleType>
<xs:complexType name="DiscoveryQuery"><xs:sequence>
<xs:element name="Type" type="jxta:DiscoveryQueryType"/><xs:element name="Threshold" type="xs:unsignedInt"
minOccurs="0"/><xs:element name="Attr" type="xs:string" minOccurs="0"/><xs:element name="Value" type="xs:string" minOccurs="0"/><!-- The following should refer to a peer adv, but is instead a whole
doc for historical reasons --><xs:element name="PeerAdv" type="xs:string" minOccurs="0"/>
</xs:sequence></xs:complexType>
![Page 13: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/13.jpg)
Discovery
LAN-based (broadcast)Invitation (in or out of band, via an advertisement)Cascaded (controlled view across discovered peers)Rendezvous (napster-esqe)
![Page 14: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/14.jpg)
Resolution
In general – a service that resolves advertisements into endpoints.JXTA ships with one implementation – “Rendezvous” – in which hosts serve as switchboards for messages.More complex/decentralized resolvers are possible, but not specified/provided.
![Page 15: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/15.jpg)
Pipes
Pipes are unidirectional communication channels.Peers can host input pipes (incoming messages), or output pipes (outgoing messages).Pipes can be chained to link peers across multiple logical hops, and can be one-to-many.Pipes are bound to peer ids, not IP address.
![Page 16: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/16.jpg)
Pipe
![Page 17: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/17.jpg)
Routing
Allows peers to discover routes for reaching a peer which can not be directly connected to.
I.e. behind a firewall, NAT device, different network platform, etc.
![Page 18: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/18.jpg)
Experiments
![Page 19: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/19.jpg)
Required Components
www.jxta.org has Java and C implementations of the core protocols.
The C version is based on the APR (apache portable runtime) and trails behind the JAVA version in terms of functionality and ease of use.
For Java – requires the J2SE JDK
![Page 20: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/20.jpg)
Installation & Configuration
Install a JRE/JDK (e.g. Sun 1.3.1_1) Download the latest JXTAInst_VM.exe InstallAnywhere installer (JXTA v2.0) http://download.jxta.org/easyinstall/install.html (4.71MB) (Or download JXTAInst.exe which contains VM)
Download tutorials/code from http://www.jxta.org/project/www/Tutorials.html
![Page 21: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/21.jpg)
JXTA Jars
JXTA’s core uses 13 other JAR files like Jetty portable Web/Servlet Server, Log4J apache’s generic logging API. Directory Structure so far
/InstantP2P -> A “full-fledged” instant P2P application/lib -> The JAR Files
/lib/jxta.jar -> Contains the JXTA Programming API
/Shell -> Command-line Interface to JXTA/tutorials -> Tutorials that we downloaded individually
![Page 22: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/22.jpg)
import net.jxta.peergroup.*;import net.jxta.impl.id.UUID.*;import net.jxta.impl.id.binaryID.*;
public class Hello{ static PeerGroup netPeerGroup = null; static DigestTool digestTool = new DigestTool(); public static void main(String args[]) { try { netPeerGroup = PeerGroupFactory.newNetPeerGroup(); System.out.println("Hello from JXTA group " + netPeerGroup.getPeerGroupName() ); System.out.println(" Group ID = " + netPeerGroup.getPeerGroupID().toString()); System.out.println(" Peer name = " + netPeerGroup.getPeerName()); System.out.println(" Peer ID = " + netPeerGroup.getPeerID().toString()); } catch(Exception e) { e.printStackTrace(); } }}
Step 0: Source/Compiling“Creating a PeerGroup”
java -classpath jxta.jar;OTHER_JAR_FILES.jar; Hello
![Page 23: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/23.jpg)
Step 1 : Running the code
Now a .jxta directory is created on disk which contains all settings
On the next run we only fill in an authentication box
12
3
4
![Page 24: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/24.jpg)
Step 2 : JXTA Sockets! (as of v2.0)
JXTA introduces a Socket API which is similar to the familiar sockets.The Socket API attempts to make JXTA Pipe programming easier. (JxtaSocket is a bi-directional Pipe)
JxtaServerSocket: Server socket that waits for connections from clients. JxtaSocket: Socket class used to create the I/O streams for both clients and servers.
![Page 25: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/25.jpg)
Step 3 : JXTA Sockets Example
In this example we use to types of “advertisement” Discovery Services:
LAN-based discovery: Local broadcast over the subnet. (224.0.0.0 to 239.255.255.255)
Works if peers are within the same subnet or if multicast-enabled routers are connecting the peers
Discovery via rendezvous points A peer at a well-known address has the task of knowing and disseminating locations of peers.
Works if peers are fire-walled in which case direct connection between peers is not feasible.
![Page 26: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/26.jpg)
Step 3 : JXTA Sockets Example
socket.adv<!DOCTYPE jxta:PipeAdvertisement>
<jxta:PipeAdvertisement xmlns:jxta="http://jxta.org"><Id>
urn:jxta:uuid-59616261646162614A757874614D504725184FBC</Id><Type>
JxtaUnicast</Type><Name>
socket example</Name></jxta:PipeAdvertisement>
ClientServer
read the text file1
Rendevouz Service
My ServerSocketID is uuid...BC2
read the text file3
The Server I wantto connect to isuuid...BC
4
FIREWALL
(multicast channel)
5 a)connect, b)receive msg,c) send msg back
a)connect, b)receive msg,c) send msg back
6
![Page 27: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/27.jpg)
JXTA Sockets Code Snippets
Server (main snippets)
// create, and Start the default jxta NetPeerGroupPeerGroup netPeerGroup = PeerGroupFactory.newNetPeerGroup();
// Read file from diskFileInputStream is = new FileInputStream("socket.adv");
// Generate Pipe AdvertismentPipeAdvertisement pipeAdv = (PipeAdvertisement)AdvertisementFactory. new
Advertisement(is);
// Launch ServerSocketJxtaServerSocket serverSocket = new
JxtaServerSocket(netPeerGroup,
socEx.pipeAdv);
// if client connects, spawn two new Threads (input/output).JxtaSocket socket = serverSocket.accept();OutputStream out = socket.getOutputStream(); InputStream in = socket.getInputStream();
// send a message String msg = “Hello JXTA”;out.write(msg.getbytes());
// receive message backin.read(inbuf, 0, bufsize);
![Page 28: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/28.jpg)
JXTA Sockets Code Snippets
Client (main snippets)
// create, and Start the default jxta NetPeerGroupPeerGroup netPeerGroup = PeerGroupFactory.newNetPeerGroup();
// Read file from diskFileInputStream is = new FileInputStream("socket.adv");
// Generate Pipe AdvertismentPipeAdvertisement pipeAdv =
(PipeAdvertisement)AdvertisementFactory. new Advertisement(is);
// Launch Socket along with 2 new Threads (input/output).JxtaSocket socket = new JxtaSocket(netPeerGroup, pipeAdv);OutputStream out = socket.getOutputStream(); InputStream in = socket.getInputStream();
// receive message read = in.read(inbuf, 0, bufsize);System.out.println(">> " + new String(inbuf));
// send message backout.write(inbuf, 0, read);
![Page 29: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/29.jpg)
JXTA Sockets Code Snippets
Server acting also as Rendezvous
Client connecting to Rendezvous
![Page 30: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/30.jpg)
ConclusionsJXTA Gnutella Napster Freenet/
ChordKey Difference
P2P Platform that allows the deployment of “any” P2P service
P2P Protocol tailored to the needs of file-sharers (searching based on filename
P2P Protocol tailored to the needs of file-sharers (searching based on filename)
Algorithms forObject Location in P2P systems (searching based on keys)
Architecture Any (Pure, Rendezvous (hybrid), or centralized
Pure/Hybrid P2P(started out as Pure but with Limewire’s Ultra-peers moving to Hybrid)
Centralized P2P
Structured P2P networks (peers are positioned at well-known places)
Transport HTTP or TCP/IP TCP/IP TCP/IP mostly TCP/IP
Communication
Sync/Async Asynchronous Synchronous Asynchronous
Data Replication
Open (depends on the Application)
No (downloaded file not considered replication)
No (downloaded file not considered replication)
Required
Lang Bindings
JAVA, “C”, Open source mostly in Java.
No API. (proprietary)
Java and C++
![Page 31: JXTA: Tech Brief Dan Berger, Suvidhean Dhirakaosal, Essia Hamouda, Demetris Zeinalipour CS 202 Spring 2003](https://reader030.vdocuments.us/reader030/viewer/2022032800/56649d415503460f94a1ba1c/html5/thumbnails/31.jpg)
Ongoing JXTA ProjectsFull list available at : http://apps.jxta.org/servlets/ProjectHome
Gnougat: A Fully decentralized file caching
RossetChat: Localized JXTA Peer Text Messaging
Radiojxta: delivering audio content over JXTA networks
P2Pconference: A tool to conduct remote, text-based conferences
InstantP2P: To be interactively displayed.