PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Projekt: ipSpeed - TCP/IP Latenz Hack



SailorSat
30-01-2009, 16:20
So...
Kurz und schmerzlos erklärt:

ipSpeed ist ein mini (wirklich mini) Tool das durch ein paar Änderungen in der Windows Registry das die Netzwerklatenz massiv nach unten drückt.

Konkret bedeutet das, das der "Ping" in Spielen niedriger ist, und auch die meisten Zugriffe aufs Netz (eMail holen in Outlook) deutlich schneller laufen.



Wofür das ganze gut ist?

Der Model2 Emulator setzt besonders geringe Latenzen vorraus um ordentlich zu laufen. Daraus ist die Idee entstanden.



Wie funktioniert es?
In Windows gibt es standardmäßig zwei Funktionen um den Datenfluss zu "optimieren".


a) Der "SendQueue"
Windows sammelt solange Daten auf einer Verbindung bis eine gewisse Größe erreicht wird. Angenommen ein Programm sendet 60 mal pro Sekunde eine "5", sammelt Windows das etwa eine Sekunde lang und schickt dann die 60 5en als ein Datenpaket. Das spart Bandbreite (war bei Modems mal richtig wichtig!), kostet aber Latenz, da die erste 5 eine Sekunde verzögert geschickt wird.

ipSpeed deaktiviert die SendQueue was zur Folge hat das alle Daten SOFORT gesendet werden. Haken dabei ist ein minimal höherer Bandbreitenverbrauch.


b) Der "ACK Delay"
IP Datenpakete sind "nummeriert". Windows beantwortet standardmäßig nur ein komplettes Paket.

Nehmen wir als Beispiel an, es kommt eine Sendung die aus 7 Paketen besteht.
Windows wartet bis alle 7 angekommen sind und schickt dann eine Empfangbestätigung ab; "Alle 7 Pakete korrekt erhalten".

ipSpeed schaltet dieses Verhalten ab, und Windows bestätigt JEDES Paket, auch hierdurch wird der Datenfluss schneller, aber die Bandbreite steigt leicht an.



Also brauch ich mehr Bandbreite?
Korrekt.
Allerdings sollte erwähnt werden das diese Funktionen aus Zeiten stammen als Internetverbindungen noch über langsame Modems lief.
Heute, wo die meisten Leute DSL nutzen, ist mehr als genug Bandbreite vorhanden.



Beispiele?
World of Warcraft - Von 120ms auf 8ms (Ironforge / Eisenschmiede).
DescenT3 - Von 35ms auf 11ms.
QuakeWars - Von 28ms auf 9ms.



Okay wo gibts das?
Hier! ipSpeed (http://files.arianchen.de/ipspeed.zip) 1.0 (4,60 KB)

(Achtung! Nach der Installation bitte den Rechner neustarten!)

zyx
30-01-2009, 21:42
vielen dank für den tipp, das klingt ja mal extra interessant. Eine frage hierzu: kann man das auch wieder abdrehen ? Schon, oder? Hast du irgendwas gelesen das es irgendwo anders probleme erzeugt?

SailorSat
30-01-2009, 21:58
Ist eine Uninstall Funktion dabei.

Probleme gabs bisher noch nirgends.

rieker
31-01-2009, 08:57
Warum setzen zeitkritische Spiele statt auf UDP auf TCP und provozieren damit solch ein Hack?
Wenn Du das selbst geschrieben hast, veröffentlichst Du auch den Sourcecode?

+edit
für uns Linuxer sollte ein "echo 1 > /proc/sys/net/ipv4/tcp_low_latency" reichen. Wenn mans noch genauer einstellen will geht das natürlich durch ein paar Macro-Änderungen in den asm defines im kernel.

Das was hier gemacht wird ist den sog. "John Nagle's Algorithmus" ausschalten.

Es gibt halt nix schöneres sich noch vorm Frühstück am Samstag in der Früh sich mit Windoze zu messen *hehe*.

ciao und schönes WE

SailorSat
31-01-2009, 10:01
Naja kommt aufs Spiel an.
TCP ist halt "verlässlich", und bei einem Strategiespiel wärs schlecht wenn da Pakete verloren gehen.

Die Shooter nutzen ja alle UDP.

loray
31-01-2009, 10:18
+edit
für uns Linuxer sollte ein "echo 1 > /proc/sys/net/ipv4/tcp_low_latency" reichen. Wenn mans noch genauer einstellen will geht das natürlich durch ein paar Macro-Änderungen in den asm defines im kernel.

Es gibt halt nix schöneres sich noch vorm Frühstück am Samstag in der Früh sich mit Windoze zu messen *hehe*.


...die einen haben die Toolz die anderen Linux :D;)

SailorSat
31-01-2009, 11:19
Na zwei Werte in der Registry ändern oder ne Systemvariable unter Linux zu setzen macht jetzt auch den Mords unterschied ;)

rieker
31-01-2009, 12:50
Mir wäre das lieber "regedit" auf zu rufen. Welche Variablen setzt Du denn wie?

SailorSat
31-01-2009, 12:56
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\Tcpip\Parameters\Interfaces\{xxx}
TcpAckFrequency (DWORD) 1

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Paramet ers
TCPNoDelay (DWORD) 1

loray
31-01-2009, 13:45
Na zwei Werte in der Registry ändern oder ne Systemvariable unter Linux zu setzen macht jetzt auch den Mords unterschied ;)

naja, dann wundere ich mich eigentlich nur wieso du lieber ein VB executable ins Rennen geschickt hast als eine Batch Datei wenn sonst nichts gemacht wird ;) Aber ich will dich ja heute nicht ärgern, ist ja dein Geburtstag :) - Alles Gute nochmals von hier ;)

SailorSat
31-01-2009, 13:55
Na weil sich die Interface GUIDs ändern, und außerdem die meisten Leute mit nem simplen "Klickibunti" besser klar kommen als mit nem Script :)

mrdo!
31-01-2009, 17:35
Reicht es nicht den Registry Key in eine .reg Datei zu exportieren und diese dann an zu clicken?

SailorSat
31-01-2009, 18:59
Was hab ich denn im letzten Post geschrieben?

*EDIT*
Linux User sind btw. genauso nervtötend wie Vegetarier (oder Mac User)...
Nicht das sie sich einfach an ihrer Lebenseinstellung freuen, nein, sie müssen auch jedem mitteilen, egal ob er/sie will oder nicht ;)

mrdo!
31-01-2009, 19:41
Ja was denn? Ach ... egal ... ich bin jetzt friedlich ...:p

:oj
31-01-2009, 20:12
Eine wirklich *hüstel* Frage: Mit welchen Windowsversionen funktioniert das? Vista, XP, 2k oder mit allen?

SailorSat
31-01-2009, 23:52
Gute Frage.
NT4-6 in jedem Fall (also NT4, 2000/XP, Vista)
Windows 9X wär ich mir grad nicht sicher.

:oj
01-02-2009, 04:40
Also mein Arbeits-PC ist noch heile (Vista). Muss es nachher noch auf'm Läppi versuchen, ist aber auch Vista druff, wird also ebenfalls nix schiefgehen. Jedenfalls kommt es mir so vor, als würden sich Websites jetzt schneller aufbauen - kann das sein? Spieletechnisch hab ich hier nix zum testen.