Wie wird die Geschwindigkeit im Torrent-Netzwerk festgelegt?

7

Ich bin gespannt, wie die Download-Geschwindigkeit in einem Torrent-Netzwerk festgelegt wird, da es keine zentralen Hubs gibt. Wenn es 300 Sämaschinen gibt, warum kann ein Client dann nicht einfach eine Verbindung zu all diesen 300 herstellen und eigentlich nichts säen? Ist es in den Client eingebaut (was ich sehr bezweifle). Wie funktioniert das ganze Teilen?

PS: Ich bin mir nicht sicher, ob dies der richtige Ort ist, um zu fragen, aber es gehörte sicherlich nicht zu Stack Overflow. Außerdem möchte ich nicht wissen, wie Torrent-Downloads schneller durchgeführt werden können. Ich möchte wissen, wie sie funktionieren.

Na und
quelle
Keine gute Passform laut FAQ. Wir beantworten Fragen zu aktuellen technischen Problemen. Was ist Ihr technisches Problem? Ihre Frage wird wahrscheinlich geschlossen.
Benutzer 99572 ist in Ordnung
@ user99572isfine Diese Frage entspricht der Regel: Wenn Ihre Motivation jedoch "Ich möchte, dass andere mir ______ erklären" lautet, sind Sie wahrscheinlich in Ordnung.
Daniel Beck
1
@ user99572isfine Ich glaube nicht, dass das stimmt. Dies ist eine Website zum Informationsaustausch, kein Computer-Support-Forum. Die Motivation von Stack-Netzwerken war "Anti-Experten-Austausch zu sein"
SoWhat
mein Fehler. Ich habe mich an die FAQ erinnert.
Benutzer 99572 ist in Ordnung

Antworten:

10

Bittorrent ist nicht wirklich vollständig "hubless" - nicht für die Datenübertragung, sondern für die Peer-Erkennung. Anfangs konnten Torrents nur von einem zentralen Hub namens Tracker abhängen - wiederum nicht, um Teile der Datei auszutauschen, sondern um herauszufinden, wer sich noch auf dem Schwarm befindet. (Ich glaube, Sie können mehrere Tracker in einem Protokoll für Redundanz angeben.) Mit der Einführung von DHT kann ein Bittorrent-Peer DHT verwenden, um zusätzlich oder anstelle eines Trackers andere Peers zu suchen. DHT selbst hängt von der Vorkenntnis einiger bekannter DHT- "Knoten" ab (Ungewissheit über die genaue Terminologie), um einen Peer zu "booten", der noch nie oder für eine Weile über DHT abgefragt hat.

Es steht einem Client frei, gleichzeitig und in der Regel eine Verbindung mit jedem ihm bekannten Peer herzustellen - mit Ausnahme der vom Programm unterstützten Einstellungen für das "Verbindungslimit".

Aus der offiziellen Bittorrent-Spezifikation :

Verbindungen enthalten an beiden Enden zwei Statusbits: erstickt oder nicht und interessiert oder nicht. Ersticken ist eine Benachrichtigung, dass keine Daten gesendet werden, bis das Aufheben erfolgt. Die Argumentation und die gängigen Techniken für das Ersticken werden später in diesem Dokument erläutert.

Die Datenübertragung erfolgt immer dann, wenn eine Seite interessiert ist und die andere Seite nicht erstickt. Der Zinsstatus muss jederzeit auf dem neuesten Stand gehalten werden. Wenn ein Downloader nicht über etwas verfügt, nach dem er derzeit einen Peer in ungehemmtem Zustand fragen würde, muss er trotz Erstickungsgefahr mangelndes Interesse ausdrücken. Die ordnungsgemäße Implementierung ist schwierig, ermöglicht es den Downloadern jedoch zu wissen, welche Peers sofort mit dem Herunterladen beginnen, wenn sie nicht gedrosselt werden.

Verbindungen beginnen erstickt und nicht interessiert.

Wenn Daten übertragen werden, sollten Downloader mehrere Teilanforderungen gleichzeitig in der Warteschlange halten, um eine gute TCP-Leistung zu erzielen (dies wird als "Pipelining" bezeichnet). Auf der anderen Seite Anforderungen, die nicht sofort in den TCP-Puffer geschrieben werden können sollten im Speicher in der Warteschlange stehen und nicht in einem Netzwerkpuffer auf Anwendungsebene gespeichert werden, damit sie alle gelöscht werden können, wenn eine Drossel auftritt.

Damit Sie Daten von einem Peer erhalten, muss der Peer "interessiert" und "nicht erstickt" sein - gemäß dem Protokoll. Weiter:

Das Ersticken erfolgt aus mehreren Gründen. Die TCP-Überlastungskontrolle verhält sich sehr schlecht, wenn mehrere Verbindungen gleichzeitig gesendet werden. Durch das Ersticken kann jeder Peer einen Algorithmus verwenden, um sicherzustellen, dass er eine konsistente Download-Rate erhält.

Der unten beschriebene Erstickungsalgorithmus ist der derzeit bereitgestellte. Es ist sehr wichtig, dass alle neuen Algorithmen sowohl in einem Netzwerk, das ausschließlich aus sich selbst besteht, als auch in einem Netzwerk, das hauptsächlich aus diesem besteht, gut funktionieren.

Es gibt mehrere Kriterien, die ein guter Erstickungsalgorithmus erfüllen sollte. Es sollte die Anzahl der gleichzeitigen Uploads für eine gute TCP-Leistung begrenzen. Es sollte ein schnelles Ersticken und Entwürgen vermieden werden, was als "Flimmern" bezeichnet wird. Es sollte sich an Kollegen wenden, die es herunterladen lassen. Schließlich sollte es gelegentlich unbenutzte Verbindungen ausprobieren, um herauszufinden, ob sie möglicherweise besser sind als die derzeit verwendeten, was als optimistisches Entdrosseln bezeichnet wird.

Der derzeit eingesetzte Erstickungsalgorithmus vermeidet Flimmern, indem nur alle zehn Sekunden geändert wird, wer erstickt ist. Es bewirkt eine Gegenbewegung und eine maximale Anzahl von Uploads, indem die vier Peers deaktiviert werden, von denen es die besten Download-Raten aufweist und die interessiert sind. Peers, die eine bessere Upload-Rate haben, aber nicht interessiert sind, werden nicht erstickt, und wenn sie interessiert werden, wird der schlechteste Uploader erstickt. Wenn ein Downloader über eine vollständige Datei verfügt, verwendet er die Upload-Rate anstelle der Download-Rate, um zu entscheiden, wer deaktiviert werden soll.

Für ein optimistisches Entdrosseln gibt es zu jeder Zeit einen einzelnen Peer, der unabhängig von seiner Upload-Rate nicht gedrosselt wird (bei Interesse zählt er als einer der vier zulässigen Downloader). Welcher Peer optimistisch nicht gedrosselt ist, wird alle 30 Sekunden gedreht. Um ihnen eine gute Chance zu geben, ein komplettes Stück hochzuladen, werden neue Verbindungen dreimal so häufig gestartet wie der derzeitige optimistische Unchoke wie irgendwo sonst in der Rotation.

Daher implementieren die meisten Bittorrent-Kollegen "Erstickungs" -Algorithmen, die sicherstellen, dass die Dinge fair funktionieren, aber neuen Verbindungen eine Vorzugsbehandlung gewähren, um ihnen die Chance zu geben, ein guter Teil des Schwarms zu sein. Ein Peer könnte versuchen, einen anderen Algorithmus zu verwenden, der unfairer ist, aber ohne sofortige Zusammenarbeit aller anderen Peers würde der "schlechte" Peer nur "erstickt", bis er keine Daten von irgendjemandem erhält.

Mehr Peers = mehr Geschwindigkeit und schnellere Peers werden bevorzugt. Die Upload-Kapazität eines Peers, die von Ihnen festgelegten Download-Limits und die Upload- / Download-Kapazität für physische Links wirken sich ebenfalls auf die Geschwindigkeit aus.

Ich (und andere) haben auf hoher Ebene ausführlicher dargelegt, wie Bittorrent bei dieser Frage funktioniert .

LawrenceC
quelle
wooh. Vielen Dank. Das ist, wonach ich gesucht habe
SoWhat