Upload
emmanuele-bello
View
595
Download
3
Embed Size (px)
Citation preview
1
Bello EmmanueleTorLUG.org
P2P facile con JXTA:P2P facile con JXTA: introduzione allo sviluppo introduzione allo sviluppo di applicazioni peer to peerdi applicazioni peer to peer
Sabato 28 Ottobre 2006
http://www.torlug.org
2
Agenda
• ...strutture e storia!
• applicazioni P2P comuni
• caratteristiche comuni• introduzione a JXTA
• architettura del framework
• una semplice applicazione• live example! ;-)
3
• Questo talk è:
- una introduzione a JXTA...non si puo' vedere tutto in 45 minuti :-)- un invito a programmare applicazioni P2P.
Precisiamo...
• Questo talk NON è:- la guerra epica tra C e Java!!!- l'enciclopedia di JXTA!!!
4
• Un sistema P2P:
è un insieme di entità autonome (peers), capaci di auto-organizzarsi, che condividono un insieme di risorse distribuite presenti all’interno di una rete di computers. Il sistema utilizza tali risorse per fornire una determinata funzionalità in modo completamente decentralizzato.
Introduzione
• Paradigma SERVENT
-Risorse condivise: potenza di calcolo, banda, memoria, informazioni, file, etc. etc.
5
• La comunità:
è il punto forte del sistema, ogni “edge” fornisce e riceve risorse autonomamente (nella maggior parte dei casi!).
-Ad esempio in SETI@Home si donano risorse!
Introduzione 2
-Connessione transiente, IP dinamico, indirizzamento diverso da quello classico...
6
• Architetture:
-cooperazione decentralizzata-evoluzione dei modelli con la storia-Client/server, puro, ibrido
Introduzione 2
7
• Campi applicativi:
- File sharing (Napster, KaZaa, Gnutella, ...)- Comunicazione (VoIP, IM, ...)- Distributed Storage (Freenet, ...)- Computazione (Seti@home, ...)- Game on-line multiplayer- ...
Introduzione 3
8
• Struttura:
- Sistemi non strutturati overlay network dinamica creata dai peer che si collegano è non strutturata. Algoritmi di ricerca basati su flooding o su directory centralizzate
Introduzione 4
- Sistemi strutturati basati su algoritmi DHT(Distributed Hash Tables), stabili. I peer devono eseguire una determinata procedura per connettersi. Complessità garantita dalla rete O(log N)!!!
9
• Origini:
- Fine anni '60 ARPAnet condivisione di documenti e risorse.
Storia 1
- 1997 USENET basata su newsgroup, modello basato su client/server.- 1999 Napster, prima generazione dei sistemi P2P.
10
• Origini:
- Dicembre 1999 prima denucnia di RIAA verso Napster....cominciano i problemi etici e legali!!
Storia 1
- Febbraio 2001 2.79 bilioni di file scambiati al mese.
- Luglio 2001 Napster chiude!!!
11
• Seconda generazione:
- Ottobre 2000 iniziano i sistemi di seconda generazione. Routing gerarchico. Introduzione dei reflector superpeer.
Storia 2
- Introduzione del progetto Gnutella.
- ...riassumiamo...
12
• Le generazioni P2P:
Storia 3
13
• Introduzione:
JXTA
- Tecnologia sviluppata da Sun Microsystem (Billy Joy e Mike Clary);- Significa giustapposto, perchè il P2P deve affiancare le tecnologie esistenti e non sostituirle;- JXTA è una suite di protocolli aperti per sviluppare soluzioni interessanti, portabili e leggere;- Esistono le librerie scritte in Java e C, C++;- http://www.jxta.org/
14
• Cosa fa:
JXTA
- Standardizza le modalità su come i peer si scoprono sulla rete;- Standardizza le ricerche delle risorse tra i peer;- Standardizza le modalità di diffusione delle risorse (pubblicazione);- Usa un sistema a pipes per comunicare;- Standardizza le attività di monitoraggio.
...si utilizza XML che è lo standard per l'interscambio dei dati.
15
• Overlay Network:
JXTA
16
• Layer:
JXTA
17
• Classificazione dei peer:
JXTA
- Identificati da un ID univoco, JXTAID- Un qualsiasi dispositivo connesso alla rete di overlay di JXTA
- Minimal edge peer hanno risorse limitate e solitamente sono dietro un firewall o un NAT. Possono ricevere e inoltrare messaggi, non hanno cache e non svolgono lavoro per altri.
18
• Classificazione dei peer 2:
JXTA
- Full featured edge peer hanno le stesse funzionalità dei minimal edge peer, in più hanno la cache per memorizzare informazioni sulla rete.
- Rendez-vouz peer stesse funzionalità dei precedenti, offrono servizi di routing, memorizzano informazioni per altri peers. Possiede risorse dicalcolo superiori a quelle dei due precedenti.
19
• Classificazione dei peer 3:
JXTA
- Relay peer sono in grado di inoltrare messagi per conto di peer che sono dietro FW o dietro NAT.
- Rely peer utili per permettere il collegamento ad una rete JXTA per i peer che sono dietro FW o NAT. Sono peer di boot.
20
• Gruppi:
JXTA
- servono a suddividere la rete di overlay in base all'applicazione a cui i peer partecipano- nei gruppi ci sono peer con interesse comune;- il peer group definisce:
a) un insieme di servizi;b) politiche di membership;c) scoping;d) monitoraggio.
- sono creati dalle applicazioni.
21
• Gruppi 2:
JXTA
- al boot per default si appartiene a NetPeerGroup in grado di fornire servizi di base- un peer può unirsi a diversi gruppi durante il suo ciclo vita- rappresentato come albero NetPeerGroup è la radice
NetPeerGroup 1
GameGroup 2AppGroup 3
22
• Le pipes:
JXTA
- meccanismi per lo scambio di messaggi tra servizi e applicazioni- componenti: pipe, pipe endpoint(in e out), messaggi- collegamenti tramite pipe binding protocol- sono risorse condivise-solitamente sono:
a) point-to-point unicast;b) secure unicast pipes;c) propagate pipes.
- messaggi scambiati con XML
23
• Gli advertisements:
JXTA
- rappresentazione strutturata di entità, servizi, o risorsa resa disponibile da un peer per gli altri peer- hanno un ciclo di vita per non intasare la cache dei peer- esempio:<?xml version=“1.0”?><!DOCTYPE jxta: PipeAdvertisement><jxta: PipeAdvertisement xmlns:jxta=“http://jxta.org”> <id>
urn:jxta:uuid59616261646162614E504720503250338E3E786229EA460DADC1A176B69B735 </id> <type> JxtaUnicast </type> < name TestPipe </name></jxta:PipeAdvertisement>
24
• Gli advertisements 2:
JXTA
- peer advertisements- peer group advertisemts- pipe advertisements- peer info advertisements- ...ne esistono altri...li vediamo avanti
....Ora arriva il codice finalmente :-) !!!
25
• Restonet un valido esempio:
JXTA
26
• Ricerca di un gruppo:
JXTA
- creazione del riferimento al NetPeerGroup e reperimento del discovery: ...try
{ PeerGroup netpg = PeerGroupFactory.newNetPeerGroup ( );
} catch (PeerGroupException e)
{ System.exit(1); }
DiscoveryService hdisco = netpg.getDiscoveryService ( );...
27
• Ricerca di un gruppo 2:
JXTA
- ricerca di advertisemnts per RestoPeerGroup: Enumeration ae = null;int count = 3;while (count-- >0){ try { ae = hdisco.getLocalAdvertisements(DiscoveryService.GROUP, “Name”,”RestoNet”); if ((ae !=null) ) break; hdisco.getRemoteAdvertisements(null, DiscoveryService.GROUP, Name”,”RestoNet”,1,null) try { Thread.sleep(timeout) } catch (InterrruptedException ie) { }if (ae == null) <creazione del nuovo gruppo>else <richiesta di partecipazione al gruppo>catch (Exception e) {System.exit(1);}
28
• Creazione di un gruppo:
JXTA
...String groupURL”jxta:uuid-4d617267657……………….f202002”
PeerGroupID groupID= (PeerGroupID) IDFactory.fromURI(new URI(“urn”,” “,groupURL));
PeerGroup restoNet = null;
ModuleImplAdvertisement implAdv = netpg.getAllPurposePeerGroupImplAdvertisement( );
restoNet = netpg.newGroup(groupID,implAdv,”RestoNet”,”Gruppo Ristoranti”);
...
29
• Protocolli e servizi:
JXTA
- Discovery Service : Peer Discovery Protocol (PDB);- Pipe Service: Peer Binding Protocol (PBP);- Peer Information Service: Peer Information Protocol (PIP);- Rendez Vouz Service: Rendez Vouz Protocol(RVP);- End Point Service: END Routing Protocol(ERP);- Peer Resolver Service: Peer Resolve Protocol(PRP);- Membership e Access Protocol.
30
JXTA
• Live Session:
- Per completare l'introduzione a JXTA vediamo live:a) il meccanismo delle pipe;b) il discovery Service;c) la pubblicazione di advertisements;d) la ricerca dei servizi;e) ricezione dei messaggi.
31
DOMANDE...