P2P mit Sun: Das Projekt JXTA

Direkt

Andreas Holubek

Nicht erst seit Napster, Gnutella, Freenet und ähnlichen Initiativen existiert der Wunsch, einzelne Computer direkt miteinander zu vernetzen. Durch das Internet sollte so etwas auch problemlos möglich sein. Jeder hat theoretisch eine eigene IP-Adresse und kann somit Dienste bereitstellen und nutzen. Leider gibt es dabei einige Hindernisse, nicht zuletzt fehlende Standards. Das Projekt JXTA von Sun soll eine einheitliche Plattform für Peer-to-Peer(P2P)-Dienste und Anwendungen definieren. Der folgende Artikel beschreibt die ersten Ergebnisse und Dokumente.

Projekt JXTA: Die Idee

Die Idee hinter JXTA ist nicht neu. Wollte man in der Vergangenheit Daten austauschen oder Dienste ins Internet stellen (zum Beispiel eine eigene Webseite) war der Weg zu einem Internet Service Provider vorgegeben. Dort kann man sich Platz für seine Daten mieten, eine Webseite betreiben oder auch den ein oder anderen Service bereitstellen. Leider hat man jedoch damit auch den ein oder anderen Nachteil. Möchte ich zum Beispiel Daten nur in einem sehr begrenzten Zeitraum zur Verfügung stellen, wäre es viel schöner, wenn ich diese direkt von meinem Computer ins Netz exportieren könnte (spart Zeit und Geld). Auf der anderen Seite besteht ein sehr großes Defizit bei den derzeitigen Providern in der Bereitstellung einer Infrastruktur für serverseitige Anwendungen (JSP, Servlet, Java-Anwendungen…). Nicht zuletzt werden direkte Messaging Services wirkungsvoll durch die vorgegebene Architektur unterbunden. JXTA soll das webzentrierte Anwendungsmodell zu einem Peer-to-Peer-Anwendungsmodell transformieren (siehe Abb.1).

Abb.1: Webzentriertes vs. P2P-zentriertes Anwendungsmodell

Auf den ersten Blick erscheinen Konzept und Idee recht einfach. Der Teufel steckt jedoch auch hier im Detail bzw. in der derzeitig weltweit vorhandenen Infrastruktur. So hat zum Beispiel nicht jedes Gerät eine eigene IP-Adresse, nicht einmal jeder Computer. Netzwerkeigenschaften wie Firewalls und NAT(Network Address Translation)-Protokoll können ein P2P-System fast unmöglich machen. In der ersten Version von JXTA wird für solche Anwendungsfälle ein weiteres Element hinzugenommen (Relay Peer). Der als Relay Peer bezeichnete Knoten kann von innerhalb der Firewall oder NAT erreicht werden und vermittelt die Kommunikation zwischen den zwei Endpunkten. Gerade dieses Konzept ist weit entfernt von einer idealen Lösung und wird in späteren Versionen verbessert werden.

Architektur

Vorhandene P2P-Lösungen haben den entscheidenden Nachteil in einer eigenen Welt zu existieren. Eine Verbindung untereinander ist genau so wenig möglich wie eine Anwendungsentwicklung. Das Projekt JXTA definiert als erstes eine Architektur für ein generisches Peer-to-Peer-System. Dabei ist eine der wichtigsten Eigenschaften die Unabhängigkeit von der verwendeten Sprache. Natürlich hat man mit Nutzung von Java einige Vorteile als Entwickler… Die JXTA Architektur kann demnach in die in Abpictureung 2 dargestellten Blöcke zerlegt werden.

Abb.2: JXTA Architektur

Der JXTA Core Layer definiert die grundlegende Funktionalität für die Peer-to-Peer-Dienste und Anwendungen. In einer sicheren Umgebung werden speziell drei Mechanismen zur Verfügung gestellt:

  • Peer Groups: Peer Groups sind eine Menge von Kommunikationsendpunkten mit einem definierten Namen und der Möglichkeit, Nutzer zu verwalten, weitere Peers zu erkennen und Dienste bereitzustellen.
  • Peer Pipes: Dieser Mechanismus stellt Kommunikationsmöglichkeiten für einen Peer zur Verfügung. Die einzelnen Nachrichten werden als XML-File kodiert.
  • Peer Monitoring: Peer Monitoring definiert einen Mechanismus um einen Peer in einer Peer Group zu kontrollieren und zu steuern. Dies beinhaltet zum Beispiel Managementfunktionen wie die Zugriffskontrolle, Prioritäten oder auch die Kontrolle der Bandbreite für einen Dienst.

Den schnellsten Einstieg in das System bekommt man über die JXTA Shell. Über die JXTA-Community-Webseite [1] kann man das entsprechende Packet bekommen (jxtashell.zip). An dieser Stelle braucht das Archiv lediglich ausgepackt zu werden. Im Anschluss können wir das Startprogramm/Script aufrufen. Nach dem ersten Start sollte der Konfigurationsdialog zu sehen sein (siehe Abb. 3).

Abb.3: Konfigurationsdialog nach dem Start der JXTA Shell

Nach einer eventuellen Konfiguration öffnet sich das Shell Fenster. Um entsprechende Experimente mit der Shell durchführen zu können sollte man im lokalen Netzwerk noch eine weitere Shell starten. Nach einer ganzen Menge Text ist der Prompt zu sehen. Eine Hilfe kann jederzeit mit dem Befehl man aufgerufen werden:

// zweiter Nutzer (dirk)
JXTA>
Message: Hello JXTA!
JXTA>

Die Möglichkeiten der Shell sind mit diesen Kommandos bei weitem noch nicht ausgeschöpft. Die Eingabe des Kommandos man gibt einen Überblick über die Kommandos. Weitere Information zur JXTA Shell können unter [2] gefunden werden.
Die Anwendungs- und Serviceentwicklung kann mit Hilfe der von [1] erhältlichen Pakete begonnen werden. Dabei befinden sich die benötigten Interfaces unter dem Java Package net.jxta. Eine Implementierung für Java befindet sich unter platform/binding/java. Im Verzeichnis bindigs befindet sich zwar schon der Hinweis auf eine C Implementierung, welche aber noch nicht vorhanden ist. Ein guter Ausgangspunkt für eigene Projekte ist der Quellcode der JXTA Shell, InstantP2P (beide in der JXTA Source Area) oder auch [3].

[1] Projekt JXTA Webseite: www.jxta.org
[2] JXTA Shell Homepage: shell.jxta.org
[3] Diskussionen, Quellkode und Bewertungen: www.openp2p.com
[4] Java Homepage, JXTA Artikel: java.sun.com
Geschrieben von
Andreas Holubek
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.