Probleme: Difference between revisions
No edit summary |
Theodorescu (talk | contribs) |
||
(10 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
Die erste Version von Gnutella (v0.4) hatte in den drei folgenden Bereichen wesentliche Probleme: <br> |
Die erste Version von Gnutella (v0.4) hatte in den drei folgenden Bereichen wesentliche Probleme: <br> |
||
[[#Download]] <br> |
*[[#Download|Download]] <br> |
||
[[#Skalierbarkeit]] <br> |
*[[#Skalierbarkeit|Skalierbarkeit]] <br> |
||
[[#Entwicklung]] <br> |
*[[#Entwicklung| Entwicklung]] <br> |
||
<br> |
<br> |
||
==Download== |
==Download== |
||
Beim Versuch sich Dateien aus dem Gnutella Netzwerk herunterzuladen kam es oft zu Fehlern, so dass der Download nicht beendet werden konnte. Das lag einerseits an schlecht programmierten Clients, die die Vorgaben des Gnutella Netzwerks zum Verhalten eines Clients nicht oder nur teilweise implementierten. <br> |
Beim Versuch sich Dateien aus dem Gnutella Netzwerk herunterzuladen kam es oft zu Fehlern, so dass der Download nicht gestartet oder beendet werden konnte. Das lag einerseits an schlecht programmierten Clients, die die Vorgaben des Gnutella Netzwerks, zum Verhalten eines Clients, nicht oder nur teilweise implementierten. <br> |
||
Andererseits trugen die User wesentlich selbst dazu bei. Es gab eine wachsende Anzahl an Usern, die browserbasierte Suchdienste wie |
Andererseits trugen die User wesentlich selbst dazu bei. Es gab eine wachsende Anzahl an Usern, die browserbasierte Suchdienste wie '''asiayeah.com''' und '''gnute.com''' verwendeten, um Dateien herunterzuladen und dadurch selber keine Dateien im Gnet anboten. Die Folge davon waren viele Download Anfragen, aber nur wenige Bereistellungen von Uploads. Eine Datei konnte man durch eine Suche im Gnet zwar finden, aber meistens nicht herunterladen oder man musste eine lange Wartezeit hinnehmen, da anbietende Servents ihre maximalen Uploads oft schon erreicht hatten. <br> |
||
Deshalb ging man dazu über, User zu Blockieren, die Webinterfaces benutzten. |
|||
Ein weiteres Problem war das Userverhalten. Viele benutzten zwar Clients, stellten aber trotzdem nichts zum Upload bereit oder waren nur kurz mit dem Gnet verbunden, so dass angefangene Uploads nicht beendet werden konnten. <br> |
|||
viele Download Fehler durch: |
|||
Seitdem ist es bei den meistens Clients daher notwendig Uploads bereitzustellen, wenn man Dateien herunterladen möchte. <br> |
|||
schlecht geschriebene Clients |
|||
Um den Traffic im Gnet zu verringern und unnötige Query Hits zu vermeiden, die wahrscheinlich ein Download Request nach sich ziehen würden, wird bei neueren Clients nur noch ein Query Hit gesendet, wenn Ressourcen für ein Upload bereitgestellt werden. Außerdem senden Servents ein Busysignal wenn kein Ressourcen verfügbar sind. Dadurch versucht der anfragende Servent nicht sofort ein Download zu starten, sonderen probiert es zu einem späteren Zeitpunkt noch einmal. <br> |
|||
wachsende Anzahl von Usern, die browserbasierte Suchdienste wie asiayeah.com und gnute.com nutzen |
|||
Das hatte auch gleichzeitig den Effekt, dass User länger online blieben um ihre Downloads zu vervollständigen und somit auch länger ihre Uploads dem Gnet zur Verfügung stellten. <br> |
|||
Blockierung von Usern, die Webinterfaces benutzen |
|||
<br> |
|||
Userverhalten: viele stellen nichts zum Upload bereit oder sind nur kurz im Netz eingewählt |
|||
[[Gnutella|zurück zum Index]] |
|||
Servents senden Query Hit nur, wenn Ressourcen für Upload bereitgestellt werden |
|||
<br> |
|||
Servents senden bei Dowloadanfrage Busysignal, wenn keine Ressourcen verfügbar; anfragender Servent versucht es zu einem späteren Zeitpunkt noch einmal |
|||
<br> |
|||
User bleiben länger online, um Downloads zu vervollständigen |
|||
==Skalierbarkeit== |
|||
Ein enormes Problem war die schlechte Skalierbarkeit von Gnutella. Im Mittel war das Gnet nur bei einer Anzahl von 400-800 Usern nutzbar. Bei einer größeren Anzahl von Useren trat das so genannte Modem-Bandwith-Barrier Problem auf. Dieses Problem entstand bei Usern mit Modem, deren nutzbare Bandbreite durch den Traffic des Gnet überschritten wurde, was zu Störungen im gesamten Gnet führte, da z.B. Query Hits nicht mehr weitergeleitet werden konnten. <br> |
|||
Um zu verhindern, dass diese Störungen durch überlastete Modems auftreten musste das Netzwerk strukturiert werden. Servents mit schneller Verbindung sollen daher überwiegend Verbindungen mit anderen 'schnellen' Servents aufbauen und den Kern des Netzwerks bilden. Servents mit langsamer Verbindung sollen hingegen an den Netzwerkrand, wo sie nicht viel Traffic zu verwalten haben. <br> |
|||
Um diese Strukturierung zu erreichen müssen User bei ihren Clients ihre Verbindungsgeschwindigkeit (T1, T3, ...) einstellen. Desweiteren werden Verbindungen zu überlasteten Servents beendet, was zur Folge hat, dass diese an den Netzwerkrand verschoben werden. Eine neuere Implementationsidee ist die Unterteilung der Servents in [[Gnutella 0.6|Ultrapeers und Leafs]]. <br> |
|||
Außerdem werden Implementationen wie [[Flow Control]], [[Ping Pong Schema]] und das [[Query Routing Protocol]] verwendet. <br> |
|||
<br> |
|||
[[Gnutella|zurück zum Index]] |
|||
<br> |
|||
<br> |
|||
==Entwicklung== |
|||
Die Entwicklung von Gnutella war lange Zeit nicht einheitlich und es gab auch keine Organisation, die daran etwas ändern konnte. Daher gab es viele Clients mit unterschiedlichen Implemenationen, was natürlich nicht zur Effektivität des Gnet beitrug. <br> |
|||
Letztendlich wurde versucht mit dem [http://www.the-gdf.org/wiki/index.php?title=Main_Page Gnutella Developer Forum (GDF)] eine Basis zur gemeinsame Entwicklung von Ideen bereitzustellen. |
|||
<br> |
|||
[[Gnutella|zurück zum Index]] |
Latest revision as of 13:35, 14 February 2006
Die erste Version von Gnutella (v0.4) hatte in den drei folgenden Bereichen wesentliche Probleme:
Download
Beim Versuch sich Dateien aus dem Gnutella Netzwerk herunterzuladen kam es oft zu Fehlern, so dass der Download nicht gestartet oder beendet werden konnte. Das lag einerseits an schlecht programmierten Clients, die die Vorgaben des Gnutella Netzwerks, zum Verhalten eines Clients, nicht oder nur teilweise implementierten.
Andererseits trugen die User wesentlich selbst dazu bei. Es gab eine wachsende Anzahl an Usern, die browserbasierte Suchdienste wie asiayeah.com und gnute.com verwendeten, um Dateien herunterzuladen und dadurch selber keine Dateien im Gnet anboten. Die Folge davon waren viele Download Anfragen, aber nur wenige Bereistellungen von Uploads. Eine Datei konnte man durch eine Suche im Gnet zwar finden, aber meistens nicht herunterladen oder man musste eine lange Wartezeit hinnehmen, da anbietende Servents ihre maximalen Uploads oft schon erreicht hatten.
Deshalb ging man dazu über, User zu Blockieren, die Webinterfaces benutzten.
Ein weiteres Problem war das Userverhalten. Viele benutzten zwar Clients, stellten aber trotzdem nichts zum Upload bereit oder waren nur kurz mit dem Gnet verbunden, so dass angefangene Uploads nicht beendet werden konnten.
Seitdem ist es bei den meistens Clients daher notwendig Uploads bereitzustellen, wenn man Dateien herunterladen möchte.
Um den Traffic im Gnet zu verringern und unnötige Query Hits zu vermeiden, die wahrscheinlich ein Download Request nach sich ziehen würden, wird bei neueren Clients nur noch ein Query Hit gesendet, wenn Ressourcen für ein Upload bereitgestellt werden. Außerdem senden Servents ein Busysignal wenn kein Ressourcen verfügbar sind. Dadurch versucht der anfragende Servent nicht sofort ein Download zu starten, sonderen probiert es zu einem späteren Zeitpunkt noch einmal.
Das hatte auch gleichzeitig den Effekt, dass User länger online blieben um ihre Downloads zu vervollständigen und somit auch länger ihre Uploads dem Gnet zur Verfügung stellten.
zurück zum Index
Skalierbarkeit
Ein enormes Problem war die schlechte Skalierbarkeit von Gnutella. Im Mittel war das Gnet nur bei einer Anzahl von 400-800 Usern nutzbar. Bei einer größeren Anzahl von Useren trat das so genannte Modem-Bandwith-Barrier Problem auf. Dieses Problem entstand bei Usern mit Modem, deren nutzbare Bandbreite durch den Traffic des Gnet überschritten wurde, was zu Störungen im gesamten Gnet führte, da z.B. Query Hits nicht mehr weitergeleitet werden konnten.
Um zu verhindern, dass diese Störungen durch überlastete Modems auftreten musste das Netzwerk strukturiert werden. Servents mit schneller Verbindung sollen daher überwiegend Verbindungen mit anderen 'schnellen' Servents aufbauen und den Kern des Netzwerks bilden. Servents mit langsamer Verbindung sollen hingegen an den Netzwerkrand, wo sie nicht viel Traffic zu verwalten haben.
Um diese Strukturierung zu erreichen müssen User bei ihren Clients ihre Verbindungsgeschwindigkeit (T1, T3, ...) einstellen. Desweiteren werden Verbindungen zu überlasteten Servents beendet, was zur Folge hat, dass diese an den Netzwerkrand verschoben werden. Eine neuere Implementationsidee ist die Unterteilung der Servents in Ultrapeers und Leafs.
Außerdem werden Implementationen wie Flow Control, Ping Pong Schema und das Query Routing Protocol verwendet.
zurück zum Index
Entwicklung
Die Entwicklung von Gnutella war lange Zeit nicht einheitlich und es gab auch keine Organisation, die daran etwas ändern konnte. Daher gab es viele Clients mit unterschiedlichen Implemenationen, was natürlich nicht zur Effektivität des Gnet beitrug.
Letztendlich wurde versucht mit dem Gnutella Developer Forum (GDF) eine Basis zur gemeinsame Entwicklung von Ideen bereitzustellen.
zurück zum Index