Im Zug der Veröffentlichung von Astro, der ersten Betaversion des Flash Player 10, taucht oftmals das Schlagwort „Peer to Peer Kommunikation“ (P2P) auf.

Im Blog von Justin Everett-Church (Sr. Product Manager für den Flash Player) finden sich zahlreiche Details, was sich wirklich hinter dieser Ankündigung verbirgt.

Flash Player 10 Beta: Peer to Peer (P2P)

Die Betaversion des Flash Player 10 (Astro) enthält neue Methoden in den Klassen NetConnection und NetStream. Diese werden zukünftig eine Peer to Peer Kommunikation erlauben, allerdings erst in Verbindung mit (zurzeit noch nicht verfügbarer) Servertechnologie von Adobe.

Als Protokoll wird RTMPF genutzt, was für Real Time Media Flow Protocol steht. Dabei handelt es sich um ein UDP-basiertes Protokoll.

Die Rolle des Servers liegt nur darin, den Verbindungsaufbau und die Verwaltung der Nutzer in Form von IDs zu gewährleisten. Er enthält also eine „Liste“ mit allen potentiellen Nutzern, die „kontaktiert“ werden können. Die eigentlichen Daten fließen dann direkt von einem Client über UDP zum anderen Client.

Sobald der Nutzer nicht mehr mit über eine NetConnection mit dem Server verbunden, werden auch die direkten P2P-Verbindungen geschlossen.

Zurzeit ist es noch nicht möglich, RTMPF zu nutzen, da noch keine Servertechnologie von Adobe öffentlich zugänglich ist. Wer Interesse hat, kann sich übrigens bei Adobe als Betatester melden.

Filesharing mit dem Flash Player?

Das Thema P2P wird üblicherweise sofort mit Filesharing in Verbindung gebracht. Dies wird jedoch unterbunden, da Dateien zuerst vom User manuell ausgewählt werden müssen. Außerdem werden die Files komplett im Arbeitsspeicher abgelegt, und nicht wie z.B. bei Bittorrent in kleinen Stücken ausgelesen und geschrieben.

In Flash Player 10 beta you can load files from the desktop to the Flash Player runtime, but the file would need to be loaded manually by the end-user and remain in memory for the entire time the file would be needed.

Wie funktioniert P2P im Flash Player?

Die Funktionsweise ähnelt dem Upstream eines Webcamstreams, nur mit dem Unterschied, dass man direkt zum Flash Player eines anderen Nutzers streamt. Schaut man in die Dokumentation zum Flash Player 10, findet man dort bereits die zahlreiche neue Befehle in den Klassen NetConnection und NetStream.

Ein anschauliches Beispiel ist der NetStream-Konstruktor: NetStream(connection:NetConnection, peerID:String = null). Man kann quasi in einen zusätzlichen Parameter die ID eines anderen Clients eintragen, um von diesem ein Video abzuspielen oder an diesen zusenden.

Über NetStream.send soll man außerdem Daten in beliebigen Formaten senden können. Die einzige Einschränkung liege laut Everett in der Paketgröße, was als Resultat einige Formate nutzlos macht.

Anwendungsgebiete?

Interessant wird sein, was aus diesem P2P-Ansatz für Applikationen entstehen werden.

Das schwergewichtigste Anwendungsgebiet dürfte Voice over IP (VoIP) sein. Passenderweise wird es im Flash Player 10 auch einen neuen Audiocodec namens Speex geben, der für VoIP gedacht.

Da das ganze scheinbar auf Punkt-zu-Punkt-Verbindungen basiert, wird vermutlich (aufgrund des limitierten Uploads eines Nutzers) die direkte Kommunikation zwischen zwei oder wenigen Nutzern die Hauptanwendung sein. Anstatt beispielsweise wie bisher bei einem Videochat einen (datenintensiven) Videostream auf einen Flash Media Server upzustreamen, muss der Server nur noch den einfachen Verwaltungsjob übernommen. Der relevante Traffic würde dann direkt zwischen den Nutzern entstehen.

Eine generelle Möglichkeit könnte sicherlich das Thema Online-Kollaboration, Chats, Online-Meetings oder ähnliches in Echtzeit sein. Durch die Möglichkeit, beliebige Dateien zu übermitteln, dürften sicherlich Anwendungen wie z.B. Whiteboards leicht zu realisieren sein.

Mal sehen …

Link: Peer to Peer (P2P) in Flash Player 10 beta