See also Multicast for an overview of multicast routing strategies in PSYC.


1 Onion

Onion ist im Moment ein relativ loses Konzept, das versucht, onion-routing (http://de.wikipedia.org/wiki/Onion_Routing) und freundschaftsbasierte Netze zu verknüpfen. Im wesentlichen basiert es auf der Idee, ein p2p-Netz zwischen Freunden aufzubauen, in dem jeder Manager einer globalen, dezentralen Gruppe ist. Realisieren lässt sich damit der anonyme Austausch von Daten. Am Beispiel von file-sharing:

Jemand im Netz sucht eine Datei. Er schickt also an alle seine Peers eine Suchanfrage und schreibt in die _source eine fiktive addresse "A". Jeder host leitet die Suchanfrage so an seine Peers weiter und merkt sich, von wem er sie bekam, d.h. an wen er Antworten an "A" schicken soll. Das tut nun jeder so. Falls jemand die Suchanfrage beantworten kann, schickt er eine Antwort mit einer neuen fiktiven addresse "B" als _source and den Urheber der Suchanfrage "A". Weil sich vorher jeder host auf dem Weg zwischen den beiden gemerkt hat, an wen er Nachrichten für "A" weiterschicken muss, findet die Antwort ihren weg zu "A". Es weiss allerdings nur "A" wirklich, dass die Addresse ihm gehört ( es sei denn, man überblickt genug Verkehr im Netz ). So läuft das ganze dann auch mit Anfragen von Dateien und den Antworten darauf.

Damit sich so ein Netz ohne zentrale Server realisieren lässt, baut man es auf sozialen Kontakten auf, d.h. jeder versucht Verbindungen mit seinen psyc-friends zu haben.

1.1 Vorteile des "sozialen Netzes"

  • Durch die Tatsache, dass man seine peers kennt, ist man in der Lage "Müll" aus dem Netz herauszuhalten. So nach dem Motto: "mein buddy verschickt kaputte dateien" (wenn auch nicht selbst, dann routet er sie wenigstens). Zensur ist bei sowas vielleicht nicht grundsätzlich schlecht.
  • File Sharing: Das herkömmliche Tauschen mit Freunden ist gar nicht langsamer als sonst, denn die sind ja eh die direkten peers.

1.2 Dinge, die man bedenken muss:

  • Message IDs sind wichtig, denn es gibt in den meisten Fällen mehrere Routen zu einem host. Doppelte müssen von jedem rausgefiltert werden (d.h. nicht weitergecastet). Allerdings werden so bei jedem "dialog" auch immer die schnellsten routen verwendet. Das verspricht eine art automatisches load-balancing der verschiedenen Verbindungen.
  • File Sharing: Man sollte sich genau überlegen, wie man verhindert, dass Suchanfragen durch das ganze Netz wandern. Für kleine Netze ist das unkritisch, allerdings nichtmehr dann, wenn man viele ( hab keine Erfahrungen für Schätzungen ) hosts hat. Eine maximale Anzahl hops finde ich schlecht, das führt ohnehin dazu, dass man Urheber wieder zuordnen kann. Mein Vorschlag: Suchanfragen dann nicht weiterschicken, wenn man sie beantworten konnte. So findet man auch Sachen, die im Netz weit von einem weg sind.
Implementations: Onion.pm