{% extends "_layout_de.html" %} {% block title %}Wie die Auswahl der Knoten und Profiling funktionieren{% endblock %} {% block content %}

Die Webseite wird gerade überholt und dieses Dokument kann alte Informationen enthalten

die Auswahl der Knoten in I2P ist einfach der Prozess in dem der Router aussucht, über welche Knoten des Netzwerkes er unsere Nachrichten sendet (welche Knoten um Teilnahme im Tunnel gefragt werden). Um dieses zu schaffen beobachten wir, wie performant andere Knoten sind (die Knoten "Profile") und benutzen diese Daten um zu schätzen wie schnell die Knoten sind, wie oft diese unsere Anfragen akzeptieren können und ob sie Überlastet sind oder andersweitig nicht fähig sind, das Versprochene zu leisten.

Beanspruchter Bandbreite wird nicht vertraut und wird einzig und allein benutzt um die Knoten zu vermeiden, die zu zu wenig Bandbreite anbieten um Tunnel weiterzuleiten. Die gesamte Auswahl der Knoten wird mit dem Profiling gemacht. Dieses macht Timing Attacken noch schwieriger.

Knoten Profile

Jeder Knoten hat ein Set von Daten die von ihm gesammelt werden, inklusive Statistiken über die Antwortzeit auf eine Netzwerkdatenbank Anfrage, wie oft seine Tunnel nicht funktional sind und wie viele neue Knoten sie uns mitteilen können. Auch einfachere Daten sind enthalten, wie etwa der Zeitpunkt des letzten Kontaktes oder wann der letzte Fehler in der Kommunikation war. Die einzelnen gesammelten Datenpunkte können im Monotone abgelesen werden (Link folgt).

Momentan gibt es keine "Löschstrategie, um sich der Profile der Knoten zu entledigen, die nicht mehr aktiv sind (oder wenn das Netzwerk aus tausenden von Knoten besteht, die gering performanten Knoten zu entfernen). Jedenfalls ist die Grösse der Profile recht klein und nicht damit verbunden, wieviele Daten von dem Knoten gesammelt werden, so dass ein Router tausende aktive Knoten Profile halten kann ohne das der Overhead ein ernstes Problem wird. Sobald es notwenig wird, können wir die schlecht performanten Profile kompakter machen (indem wir nur die nötigsten Daten behalten) und können so hundert tausende Profile im Speicher halten. Darübr hinaus können wir einfach Knotenprofile löschen (z.B. nur die besten 100.000 behalten).

Die tatsächliche Grösse der Knotenprofile im Speicher sollte noch analysiert werden und ungebrauchte Daten sollten enfernt werden. Dieses ist ein gutes Thema für weitere Nachforschungen und Optimierungen.

Die wichtigen Daten der Knoten

Die Profile können somit als eine Zusammenfassung der Performance der Knoten bezeichnet werden, zu einer effektiven Auswahl der Knoten fassen wir diese jedoch zu vier einfachen Werten zusammen. Diese stellen die Geschwindigkeit des Knoten, seine Kapazität, wie sehr er in das Netzwerk integriert ist und ob er nicht funktioniert.

Geschwindigkeit

Die Berechnung der Geschwindigkeit (wie im Quellkode implementiert) wird einfach mit den Profilen durchgeführt und schätzt, wie viele Daten wir durch einen einzigen Tunnel durch diesen Knoten in einer Minute senden oder empfangen können. Dafür werden einfach die Werte der Vergangenheit betrachtet.

Vorhergehende Algorhythmen brauchten viel länger um mehrere aktuellere Daten zu betrachten und daraus die Werte für die Zukunft zu schätzen. Ein weitere, ältere Berechnung nahm die gesamte Bandbreite des Knoten (statt je Tunnel), jedoch stellten wir fest, das diese Methode langsame Knoten mit hoher Kapazität (das sind die mit kleiner Bandbreite aber hohe Kapazität in der Anzahl der Tunnel) als zu hoch bewertete. Noch früherere Methoden waren noch komplexer.

Die derzeitige Berechnung ist seit Anfang 2006 unverändert und ist ein weiteres Gebiet zur weiteren Forschung um die Effektivität auf dem derzeitigem Netzwerk zu bestätigen.

Kapazität/h3>

die Berechnung der Kapazität bearbeitet die Profile und schätzt wie viele von uns angefragte Tunnel der Knoten in der nächsten Stunde akzeptiert. Dafür betrachtet die Methode, wieviele Tunnel der Knoten in letzter Zeit akzeptiert hat, wie viele er verneint hat und wie viele der akzeotierten Tunnel er abgebrochen hat und extrapoliert die gewünschten Daten. Zusäztlich gibt es einen `Wachstumsfaktor` (falls der Knoten nicht inaktiv ist oder Anfragen zurückweist), damit wir weiterhin versuchen, mehr Tunnel anzufragen.

Die Abbruchquote der Tunnel war lange Zeit nicht aktiv in der Berechnung der Kapazität, erst mit 0.6.2 wurde sie wieder aktiv gesetzt. Es wurde offensichtlich, das unzuverlässige und nicht erreichbare Knoten sicher erkannt und vermieden werden müssen für eine konstante Nutzung des Netzwerkes. Jedoch braucht der Tunneltest die Mitwirkung einiger anderer Knoten, somit ist es schwer, die eindeutige Quelle der Fehler zu identifizieren. Die letzten Änderungen geben jedem Knoten im Tunnel eine gewisse Fehlerwahrscheinlichkeit und benutzen diese auch zur Kapazitätsberechnung, Diese letzten Änderungen benötigen ggf, zusätzliche Feineinstellungen und sind auch ein Gebiet für weitere Forschungen zur Effektivität im aktuellem Netzwerk.

Integration

Die Berechnung der Integration ist nur für die Netzwerkdatenbank notwendig (und, falls eingebaut, zum Erkennen und reparieren von Netzwerk`splits`). Zur Zeit wird es für nichts benutzt, da der Kode zum Erkennen der Splits in gut verbundenen Netzwerken nicht nötig ist. Jedenfalls behält die Berechnung der Integration die Übersicht, wie oft uns ein Knoten einen uns unbekannten weiteren Knoten mitgeteilt hat (oder die Daten für einen uns bekannten Knoten aktualisiert hat).

In kommenden Versionen wird diese Integrationsberechnung benutzt werden, in Kombination mit anderen Methoden zur Berechnung der Konnektivität und Zuverlässigkeit der anderen Knoten. Daraus wird die Fähigkeit des Knoten getestet, ein Floodfillrouter in der Netzwerk Datenbank zu sein. Durch diesen Test, ob der Knoten ein sinnvoller Floodfill Router ist oder nur so tut als ob, können sinnvolle Entscheidungen getroffen werden zur Sendung und Speicherung von Datenbankanfragen an den Knoten. Dazu können Knoten mit hoher Kapazität, die noch keine Floodfill Router sind, zu Floodfillroutern definiert werden, falls nicht genug Floodfillrouter vorhanden sind im Netzwerk. Somit wird eine grosse Schwachstelle im derzeitigem Floodfillsystem behoben.

Versagen

Die Berechung zum Versagen

To Do

Wie obenbeschrieben, ist jede dieser Berechnungen kritisch für die Auswahl der Knoten und brauchen eine kritische Überprüfung auf ihre Effektivität im heutigem Netzwerk. Auch muss die Grösse der Profile im Speicher noch betrachtet werden, unnötige Daten entfernt werden und eine Entfernungsstrategie eingebaut werden.

{% endblock %}