1. Februar 2006

Peer to Peer Sockets: die Wiedergeburt des Internets

Vor 2 Monaten hat Google LibJingle veröffentlicht. Enthalten ist darin ein sogenannter Peer to Peer Socket (p2p). Der p2p Socket überträgt Daten zwischen 2 Computern. Das ist eigentlich nichts spektakuläres. Der Unterschied zu normalen Sockets ist, dass sich der p2p Socket einen möglichen Weg sucht und dabei auch Relays benutzt und asymmetrische Kommunikation. p2p Socket "Verbindungen" gehen im Gegensatz zu einfachem TCP/UDP über Firewalls. Der p2p Socket ist eine Abstraktionsschicht höher, als UDP/TCP Sockets. Er testet, wie Computer an das Internet angebunden sind und wählt dann selbst die beste (oder einzige) funktionierende Verbindungsmethode aus. Falls alle Stricke reißen verbindet er zu einem Relay über den TCP Port 443 und tut so, als ob er ein Webbrowser ist, der SSL macht.

Die gesamte Komplexität einschließlich der Relay Server im Internet ist in einer Library verborgen. Die Technik ist nicht neu. Sie wird seit Jahren in p2p Filesharing Netzen und bei Skype verwendet. Aber mit LibJingle steht so eine Funktionalität jetzt als Open Source (BSD Lizenz) zur Verfügung. Jeder kann p2p verwenden ohne den aufwendigen p2p-Teil programmieren zu müssen. Man kann p2p Funktionen in eigene Anwendungen einbauen und endlich wieder kommunizieren. Das klingt banal, ist aber eine Revolution.

In der Anfangszeit des Internet konnte man einfach Programme schreiben, die per TCP Daten von einem Computer zum anderen übertragen haben. Jeder konnte zu jedem verbinden, per TCP und UDP. Dann kamen Firewalls und NAT und haben die Computer voneinander isoliert. Heute können Arbeitsplatz- und Home-PCs nur noch mit Servern kommunizieren, aber nicht mehr direkt miteinander. Computer wurden zu Clients degradiert. Es ist schwierig einen Server zu betreiben, weil die meisten Computer hinter Firewalls, NAT und dynamisch vergebenen IP Adressen versteckt sind.

Mit öffentlich verfügbarer p2p Technologie können Computer wieder miteinander kommunizieren. Das Internet wird wieder geboren als das p2p Netzwerk, dass es früher einmal war.

Beispiel VoIP: IP-Telefonie braucht SIP Gateways und/oder Firewall-Regeln für SIP-Datenpakete. Das funktioniert nur zwischen Firmen, die sich für SIP entschieden haben, SIP Produkte gekauft haben und betreiben. Das kostet Geld und geht nicht überall. MS Netmeeting ist daran gescheitert. Mit Skypes p2p Technik wurde IP-Telefonie wieder möglich. Mit Googles Library kann man jetzt IP-Telefonie in alle Programme einbauen.

Beispiel Filetransfer: Filetransfer in Instant Message (IM) Systemen geht, wenn die IM Server den Filetransfer-Traffic aushalten. Das funktioniert gut bei den großen IM-Netzwerken, aber ein offenes und verteiltes IM-System (Jabber/XMPP) hat Schwierigkeiten, weil sich die Server untereinander den Filetransfer-Traffic weiterleiten. Viele Jabber Server werden von kleinen Organisationen betrieben und wollen nicht unkontrollierten Filesharing-Traffic. Deshalb ist Filesharing-Support nicht allgegenwärtig und praktisch nicht nutzbar. Ein Workaround ist, dass Jabber Clients sich direkt verbinden, z.B. per http. Das bedeutet aber, dass einer offen im Netz sein muss ohne Firewall. Die Lösung ist p2p. Filesharing wird in Jabber Clients bald ganz normal sein dank frei verfügbaren p2p Socket Libraries.

Beispiel LLuna Video Icon: LLuna überträgt das mini Live-Video per HTTP. Der Computer, der das Video bereitstellt, benötigt ein Firewall-Loch und DynDNS. Das ist schwer für Normalanwender. Die Alternative wäre, alle Videodaten über die Jabber Verbindung zu leiten, was aus den oben genannten Gründen nicht geht. Die Lösung ist p2p.

Ich glaube, dass wir inzwischen verlernt haben, zwischen Computern Daten auszutauschen, weil wir darauf konditioniert sind, die Firewall-Probleme zu sehen. Es gibt unheimlich viele Anwendungen für p2p Kommunikation und wir werden wieder lernen p2p zu denken, wie in der guten alten Zeit, als das Internet noch offen war.

_happy_coding()

Kommentar veröffentlichen