Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester...

19
Entwicklung von Peer-to-Peer- Entwicklung von Peer-to-Peer- Anwendungen mit Hilfe der JXTA- Anwendungen mit Hilfe der JXTA- Technologie Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing. Jürgen Nützel

Transcript of Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester...

Page 1: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Entwicklung von Peer-to-Peer-Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Anwendungen mit Hilfe der JXTA-

TechnologieTechnologie

HauptseminarWintersemester 2002/2003

Bearbeiter:Dirk Michael

Betreuer:Dr. Ing. Jürgen Nützel

Page 2: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Gliederung

Seite 1

Übersicht über Peer-to-Peer-Netzwerke

Einführung in die JXTA-Technologie

Erklärung der wichtigsten Konzepte

Zusammenfassung und Ausblick

Page 3: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Übersicht: Peer-to-Peer-Netzwerke

Seite 2

dezentral organisiertes Netzwerk direkter Austausch von Ressourcen zwischen den einzelnen Systemen gleichzeitig Client als auch Server

im Gegensatz dazu: zentral organisiertes NetzwerkClient/Server-Architektur

Anwendungsgebiete für P2P-Netzwerke• File Sharing• Distributed Computing• Instant Messaging

Page 4: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Übersicht: Peer-to-Peer-Netzwerke

Seite 3

echtes P2P

A

B D

C

Beispiel: Gnutella Beispiel: SETI

A B

C D

Server

assistiertes P2P

Ausprägungen von P2P-Netzwerken

Page 5: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Einführung in die JXTA-Technologie

Seite 4

Was ist JXTA ?• gedacht für die einfache Entwicklung von komplexen P2P-Anwendungen• kein Design der grundlegenden Kommunikationsmechanismen nötig• Sammlung an Protokollen für Kommunikation • Implementationen für verschiedene Sprachen (JXTA J2SE Platform)• abgeleitet vom Wort „juxtapose“, bedeutet „nebeneinander stellen“

Woher kommt JXTA ?• ursprünglich Forschungsprojekt von SUN Microsystems• nun in der Hand einer öffentlichen Entwicklergemeinde

Lizenzierung• „SUN Project JXTA Software License“• abgeleitet von „Apache Software License Version 1.1“

Vorteile von JXTA• Unabhängig von einer Programmiersprache• Unabhängig von Hardware und Betriebssystem• Interoperabilität

Page 6: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Einführung in die JXTA-Technologie

Seite 5

Übersicht über die JXTA-Protokolle

Transport (TCP, HTTP)Transport-protokolle

Peer Endpoint Protocol

Peer Resolver Protocolnotwendig

• Weiterleiten von Botschaften

• Empfang und Versand

Peer Discovery Protocol

Pipe Binding Protocol

Rendezvous Protocol

Peer Information Protocoloptional

• Auffinden von Ressourcen

• Aufbau eines virtuellen Kanals

• Verteilung von Nachrichten

• Abfrage von Statusinformationen

Page 7: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Voraussetzungen für JXTA J2SE Platform

Seite 6

JXTA J2SE Platform: Referenzimplementierung in JAVA

Voraussetzungen• JDK 1.3.1 oder höher• Bibliotheken der JXTA J2SE Platform Implementierung• LOG4J der Apache Software Foundation

http://www.jxta.orghttp://www.apache.org

Page 8: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Begrifflichkeiten

Seite 7

Peergruppen• Zusammenschluss mehrerer Peers zu einer Gruppe• hierarchischer Aufbau, oberste Ebene Net Peer Group• Gründe: gemeinsame Interessen, sichere Umgebung

Relay Peer• dient zum Weiterleiten von Nachrichten zum Zielpeer• notwendig für Überwindung von Firewalls oder NAT-Umgebungen

Rendezvous Peer• dient zum Verteilen von Nachrichten an alle bekannten Peers• Reichweite nur innerhalb der Peergruppe

Advertisements• Metadatenstruktur zur Beschreibung von Ressourcen• XML-Dokumente

Pipes• virtueller Kommunikationskanal zwischen zwei oder mehreren Peers• Point-to-Point-Pipe, Propagated-Pipe• unidirektional, asynchron

Page 9: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Aufbau eines JXTA-Netzwerks

Seite 8

Net Peer Group

Sample Group R1

R2 A

B

Gruppeveröffentlichen

Suchanfrage

Antwort

Pipe-Adv.veröffentlichen

Suchanfragenach Pipe-Adv.

Antwort

Kommunikations-kanal

Anlegen der Gruppe „Sample

Group“

R1

A

Page 10: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Versenden von Botschaften

Seite 9

• Austausch von Botschaften ist Basis für Kommunikation• Peer Endpoint Protocol, Peer Resolver Protocol• Routing von Botschaften zum Zielpeer• Überwindung von Firewalls (über HTTP-Port)

Peer A will Botschaft nach Peer E senden

InternetInternet

Rl1 Rl2

Rl3A B C

D E F

Relay Peer

Page 11: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Seite 10

InternetInternet

R1 R2

R3A B C

D E F

Rendezvous Peer

Verteilung von Botschaften

Versenden von Suchanfragen, Veröffentlichen von Ressourcen• Discovery Protocol, Rendezvous Protocol• Rendezvous Peers dienen als Verteilerstationen• nur innerhalb einer Gruppe

Page 12: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Erzeugen eines Peers

Seite 11

public void startPeer() throws PeerGroupException{ PeerGroup netPeerGroup = null; netPeerGroup = PeerGroupFactory.newInstance();}

Erster Start des Peers Konfiguration:

• Name des Peers, IP-Adresse und Port, Nutzername und Kennwort• bekannte Rendezvous- und Relay Peers

Anlegen eines lokalen Caches für Speicherung der Advertisements

Bei jedem weiteren Start erfolgt Anmeldung• entweder manuell über Eingabe der Daten in ein Loginfenster• automatisches Login durch Code im Quelltext

System.setProperty("net.jxta.tls.principal", username);System.setProperty("net.jxta.tls.password", password);

Page 13: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Suchen von Ressourcen

Seite 12

Beispiel: Suchen der Gruppe „Sample Group“

public PeerGroupAdvertisement findGroup() throws IOException{ DiscoveryService ds = netPeerGroup.getDiscoveryService(); for (int i = 0; i < 5; i++) { Enumeration enum = ds.getLocalAdvertisements( DiscoveryService.GROUP, "Name", "Sample Group"); if ((enum != null) && (enum.hasMoreElements())) return (PeerGroupAdvertisement)enum.nextElement();

ds.getRemoteAdvertisements(null, DiscoveryService.GROUP, "Name", "Sample Group", 1, null); }}

Page 14: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Aufbau eines Kommunikationskanals

Seite 13

A

Output Pipe

B

Input Pipe

• Erstellung und Veröffentlichung eines Pipe-Advertisements

• Aufbau einer Input-Pipe

• Warten auf eingehende Botschaften

(asynchron, unidirektional)

Pipe-Binding-Protocol

• Suchen des Pipe-Advertisements des Zielpeers

• Aufbau einer Output-Pipe

• Versenden von Botschaften

Page 15: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Aufbau eines Kommunikationskanals

Seite 14

PipeAdvertisement padv = getPipeAdvertisement();PipeService ps = netPeerGroup.getPipeService();OutputPipe op = ps.createOutputPipe(padv, 10000);

Message msg = ps.createMessage();…op.send(msg);

Erstellung einer Output-Pipe zum Versenden von Botschaften

PipeAdvertisement padv = getPipeAdvertisement();PipeService ps = netPeerGroup.getPipeService();InputPipe ip = ps.createInputPipe(padv);while (true){ Message msg = ip.waitForMessage(); receiveMessage(msg);}

Erstellung einer Input-Pipe zum Empfang von Botschaften

Page 16: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Versand und Empfang von Dateien

Seite 15

public void sendFile(String filename, PipeService ps, OuputPipe op) throws IOException{ FileInputStream fis = new FileInputStream(filename); int length, count = 0; byte[] buffer = new byte[100000]; do { length = fis.read(buffer); Message msg = ps.createMessage(); msg.setString("FILENAME", filename); msg.setString("PACKAGE_SIZE", String.valueOf(length)); msg.setString("PACKAGE_NO", String.valueOf(++count)); msg.setBytes("CONTENT", buffer); op.send(msg); } while (length != -1); fis.close();}

Versenden einer Datei

Page 17: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Versand und Empfang von Dateien

Seite 16

public void receiveMessage(Message msg) throws IOException{ String filename = msg.getString("FILENAME"); String length = msg.getString("PACKAGE_SIZE"); String no = msg.getString("PACKAGE_NO"); byte[] buffer = msg.getString("CONTENT"); int l = (Integer.valueOf(length)).intValue(); int n = (Integer.valueOf(length)).intValue(); RandomAccessFile raf = getFileHandle(filename); if (l != -1) { raf.seek((n-1) * 100000); raf.write(buffer, 0, l); } else { raf.close(); }}

Empfang eines Teilstückes einer Datei

Page 18: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Zusammenfassung und Ausblick

Seite 17

Zusammenfassung• Einfache Entwicklung von P2P-Anwendungen mit JXTA möglich• Protokolle übernehmen grundlegende Kommunikationsaufgaben• Sprach-, Hardware- und Betriebssystemunabhängigkeit durch XML• Relay-Peers zur Überwindung von Firewalls • Rendezvous-Peers als Verteilerstationen• Referenzimplementierung in JAVA• Open Source

Ausblick• eigene intelligentere Implementation der Protokolle möglich• Sicherheitsaspekte (sichere Übertragung, sichere Gruppen)• Entwicklung für mobile Endgeräte (JXTA J2ME)• Mitwirkung an der Weiterentwicklung von JXTA• eigene Projekte mit JXTA

Page 19: Entwicklung von Peer-to-Peer-Anwendungen mit Hilfe der JXTA-Technologie Hauptseminar Wintersemester 2002/2003 Bearbeiter: Dirk Michael Betreuer: Dr. Ing.

Vielen Dank für Ihre Vielen Dank für Ihre AufmerksamkeitAufmerksamkeit