Das Prinzip des Xtreme-Uploads

Wie jeder weiß, heißt wird es grundsätzlich empfohlen das Uploadlimit des emules auf ca. 80% der Leitungskapazität zu setzen. So manche Leute setzen es sogar noch sehr viel weiter herunter, damit es den Download nicht stört. So mancher Leechermod wirbt sogar damit, dass der angepriesene Mod 0 Upload ermöglicht, da dies wesentlich besseren Download ermöglicht.

 

Was ist dran an der Aussage: Upload bremst Download und warum wird oft empfohlen den Upload auf nur 80% der Kapazität zu setzen ?

Die offizielle emule-Version unterscheidet nur zwischen Upload(Datenupload: Bild-Item1) und Overhead(Bild Item2). Als Overhead rechnet die offizielle Version hierbei nur die Netto-Größe eines Kontrollpacketes. Was hierbei nicht berücksichtigt wird ist, daß das Betriebssystem an jedes versandte Packet noch einen Kopf anhängt (TCP-Header, UDP-Header). Bei kleinen Packeten kann es sein, dass so ein Header größer als das eigentliche Packet ist. Gerade bei vielen gleichzeitigen Verbindungen werden sehr viele Kontrollpackete verschickt, was den zusätzlichen TCP/UDP-Header-Overhead vergrößert. Der im unteren Bild markierte Bereich 3, also die Fläche zwischen rosa Linie und weißer Linie soll diesen Overhead veranschaulichen.

Zusätzlich zum gerade eben besprochenen Overhead muss für jedes empfangene Packet ein Bestätigungspacket gesendet werden (ACK-Packet). Auch diese Packete zählt die offizielle Version nicht. Bereich 4 im Bild soll veranschaulichen wie viel zusätzlicher Overhead durch diese ACK-Packete entsteht bei hohem Download. Ist man am Uploadkapazitätslimit, so können ACK-Packete nicht mehr schnell genug gesendet werden und sowohl Download als auch Upload können einbrechen.

Um solche Probleme zu minimieren wird empfohlen den Upload auf nur 80% der Kapazität zu setzen.

Bereich 5 soll noch einen zusätzlichen Overhead veranschaulichen, nämlich den des Netzwerkadapters. Tatsächlich fließen nämlich noch etliche Bytes Upload mehr über die Leitung als zunächst beschrieben. Zu bisherigem Overhead können sich nämlich noch "Retransmissions" (fehlerhaft übertragene Packete die durch Windows neu übertragen werden), Ping-Signalen auf die man antworten muss, aber auch der Upload von anderen Programmen (z.B. Browser) hinzugesellen.

 

 

 

 

Der Xtreme Mod arbeitet anders.

Er versucht den entstehenden Overhead inklusiv TCP/UDP-Header und ACK-Packeten soweit wie nur irgendwie möglich abzuschätzen. Das im Xtreme eingestellte Uploadlimit umfasst somit Daten, Kontroll-Packete und die dazugehörigen Header, und die ACK-Packete. Bild Item2 veranschaulicht die Gesamtsumme des Overheads. Der DatenUpload selbst (Bild Item 1) wird heruntergeregelt damit die weiße Linie möglichst stabil gehalten werden kann. Durch das System kann das Uploadlimit wesentlich höher eingestellt werden, die Bandbreite effektiver genutzt werden und auch der Download wird niemals durch den Upload ausgebremst. Der Netzwerkverkehr (Bild Item3) bleibt unberücksichtigt.

 

 

 

 



Was ist NAFC ?

Das "Network adapter Feedback Control" richtet den emule-Upload nach dem am Netzwerkadapter gemessenem Gesamtupload aller Anwendungen aus. Das in emule eingestellte Uploadlimit berücksichtigt somit nicht nur emule-Daten, sondern alle Upload-Packete aller Anwendungen (Webbrowser, Onlinegames, FTP-Upload usw.).

Ist beispielsweise der Upload auf 15 kbs eingestellt und eine Internettelefonie verbraucht 5 kbs Upload, so sendet emule nur noch 10 kbs an Daten. Durch dieses Verfahren wird eine geringere Pingzahl gewährleistet und die Uploadkapazität am optimalsten ausgenutzt. Bei Verwendung von NAFC lässt sich das Uploadlimit ganz dicht unterhalb der Uploadkapazität einstellen. Das dritte Bild veranschaulicht noch mal wie die Summe aus Upload Daten (1) + Overhead + restlicher Netzwerkverkehr (3) den bei NAFC eingestellten Wert ergibt.

Um Missbrauch des Features vorzubeugen, schaut emule nach, ob die gemessenen Daten emule-Daten sind oder Daten anderer Anwendungen. Sind die gesendeten emule-Daten (Nutzdaten + Overhead) kleiner als 11 kbs, so schaltet sich dynamisch ein Downloadlimit ein.

 

NAFC funktioniert nicht wenn man ein Heimnetzwerk verwendet und gemeinsam mit anderen Rechnern per Router ins Internet geht.

 

 

Kleine Anmerkung am Rande:

Die Bilder sind keine Screenshots, sondern wurden durch Paint erstellt. Sie sollen nur das Prinzip veranschaulichen, aber keine reellen Werte wiederspiegeln. Durch Latenzzeiten, Windows-Einstellungen und die Netzwerkkarte können die Graphen mehr oder weniger gezackt aussehen.

 

Normale Screenshots können so aussehen:

Dieser screenshot stellt ein Optimum da, da die weiße und die gelbe Linie sehr dicht beieinander liegen.(NAFC ausgeschalten)

 

Aber auch folgender Screenshot zeigt normale Werte: (NAFC ausgeschalten)

Erklärung zu den Spitzenwerten bei Kreis 1 und Kreis 2:

Bei 1 dürfte es sich um typischen Browserverkehr handeln... es wurde also eine Webseite geladen.

Kreis 2 zeigt eine typische, kurzzeitige Auslastung von emule an. Dies kann mehrere Gründe haben:

- ein anderer Prozess stahl emule die benötigte Rechenzeit

- Der CD/DVD-Brenner blockierte den IO-Bus (kommt häufig vor beim schreiben des Lead-In)

- Ein anderes Programm (z.B. der Explorer) tätigte gerade einen Schreib-/Lese-Vorgang auf der Festplatte, während emule auch gleichzeitig Daten der Platte lesen/schreiben wollte.

 

 

 



Uploadslotspeed

Zunächst sei erwähnt, dass die eingestellte Slotspeed keinen akkuraten Wert darstellt, sondern dass emule versuchen wird so viele Slots zu öffnen, dass der tatsächliche Slotspeed möglichst nahe dem gewünschten ist. Die eingestellte Slotspeed besitz eine Toleranz von ca. 25%. Warum die Slotspeed nicht akkurat programmiert wurde, besitzt folgende Hintergründe:

1. Bei Beispielweise Uploadlimit 11 und Slotspeed 4 ist es rein rechnerisch gar nicht möglich jedem Slot 4 kbs zu geben.

2. der emule-Overhead ist kein konstanter Wert sondern fällt und steigt und somit auch der zur Verfügung stehende Datenupload.

3. Netzwerktechnisch bedingt kann der Upload zu einem bestimmten Client auch mal abfallen. Dies wird dann durch andere Slots aufgefangen.

 

Die Einstellbare Slotspeed hängt vom Uploadlimit ab. Je höher dieses ist, desto höher kann man die Slotspeed einstellen. Maximalster Wert ist dabei 15 kbs.

 

Wie arbeitet der Slotspeed und wann werden neue Slots geöffnet ?

Grundlegendes Prinzip: es gibt eine Mindestanzahl an Uploadslots und eine Maximalzahl. Die Mindestanzahl ist: Uploadlimit / Slotspeed, das ganze aufgerundet. Beispielsweise 17/4 -> 5. Der Maximalzahl liegt eine kompliziertere Berechung zugrunde.

 

Jeder Uploadslot kann zwei verschiedene Stadien haben: Trickle oder Full. Ein Trickle-Slot bekommt 0.5 kbs Uploadspeed und ist grau hinterlegt, ein Full-Slot bekommt volle Speed und ist schwarz dargestellt. Der Xtreme versucht immer den gesamten Uploadspeed auf die Full-Slots aufzuteilen, sollten diese nicht allen Speed nehmen können, wird der Rest auf die Trickles aufgeteilt. 0.5 kbs wird für Trickles aber immer gewährleistet.

 

Nach dem Start von emule werden zunächst die Minimumanzahl an Slots geöffnet. Zunächst sind  alle bis auf einen Slot Trickles. Da sich der Upload auf den einen Full-Slot fokussiert, wird dieser über der gewünschten Slotspeed sein. Ist ein Fullslot 25% über der gewünschten Slotspeed wird der nächste Trickle zum Full-Slot. Diese Überprüfung findet alle 5 Sekunden statt, bis keiner der Full-Slots mehr als 25% über der gewünschten Slotspeed liegt.

 

Der Xtreme öffnet immer so viele Slots, wie entweder Mindestanzahl, oder dass zumindest ein Trickle vorhanden ist. In der Praxis passiert nämlich oft folgendes:

Ein oder mehrere Clients können den gewünschten Slotspeed nicht nehmen. Da der Upload auf alle Slots aufgeteilt wird, bekommen somit andere Slots mehr Speed. Übersteigt der tatsächliche Slotspeed den Gewünschten um mehr als 25% wird der nächste Trickle zum Full-Slot gemacht. Ist kein Trickle mehr vorhanden wird ein neuer Slot geöffnet. Dies geht so lange bis sich der Upload stabilisiert hat (keiner über 25%) und ein Trickle vorhanden ist oder die Maximalanzahl erreicht wurde.

 

Muss ein neuer Slot geöffnet werden, da kein Trickle mehr vorhanden, so hat dieser Slot 6 Sekunden Zeit um die Verbindung aufzubauen. Ist dies nach 6 Sekunden nicht passiert, so wird der nächste Slot geöffnet. Normalerweise liegt die Zeit zum Herstellen einer Verbindung unter 6 Sekunden, durch diese Algorithmus kann es aber vorkommen, dass mehr als ein Trickle geöffnet werden. (Beispiel: nach 7 Sekunden wird der nächste Slot geöffnet, dieser reagiert auch prompt, der andere bis dato nicht Reagierende hat aber die Verbindung nach 15 Sekunden doch noch hergestellt).

 

Wichtig ist zu wissesn: oberstes Prinzip des Xtremes ist es den Upload stabil zu halten, nicht möglichst wenige Slots zu haben.

Vor allem größere Slotsspeeds (> 4 oder 5 kbs) können auf manchen Systemen zu Problemen führen. Viele Clients können eine höhere Slotspeed nicht nehmen. Schuld daran können schlechte Internetverbindungen sein, der eigene ISP, der ISP des Clients, die Treiber der eigenen Netzwerkkarte oder die des anderen Clients und und und. Der Xtreme versucht so viele Slots zu öffnen um einen stabilen Upload zu gewährleisten. Macht er so viele auf, dass die Durchschnittliche Slotspeed auf einen gewissen Wert unter dem Gewünschten fällt, so ist das ein Zeichen dafür, dass eine höhere Slotspeed nicht möglich ist. In diesem Fall ist es ratsam den gewünschten Slotspeed herunterzusetzen, da der Algorithmus des Xtremes am besten arbeitet, wenn die gewünschte Slotspeed auch tatsächlich möglich ist.

 

Das automatische Verfahren zum öffnen neuer Slots kann in den Einstellungen unter Xtreme->Open more slots if needed deaktiviert werden. Ist dies deaktiviert, wird die Anzahl geöffneter Slots immer gleich der Mindestanzahl sein.

 

Blockier-Verhätlnis und Uploadgesundheit

In den Xtreme I Optionen kann man die Anzeige des Blockier-Verhätlnisses aktivieren. In der Uploadtoolbar des Transferfensters werden dann zwei Werte angezeigt. Der erste Wert ist die Uploadgesundheit und diese sollte immer 100% betragen. Der zweite Wert ist das Durchschnittliche Blockierverhältnis über die letzten 20 Sekunden aller Uploadslots. Auch bei den einzelen Uploadlots findet man einen neuen Wert, das Blockierverhältnis der letzten 20 Sekunden. Dieser Wert gibt an, wie oft ein Uploadsocket den Versuch zu senden blockierte. Beispielsweise bedeutet 95%, daß nur 5% aller Versuche zu senden erfolgreich waren.

 

















Elbenwald.de - Lebe Deine Fantasy!