TcpAckFrequency unter Windows konfigurieren: Unterschied zwischen den Versionen
Asphyx (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „'''TcpAckFrequency''' beeinflusst, nach wie vielen empfangenen TCP-Segmenten Windows eine Empfangsbestätigung sendet. Der Wert kann die Verzögerung kleiner, interaktiver TCP-Übertragungen reduzieren, erhöht dabei jedoch die Anzahl der übertragenen Bestätigungspakete. Die Einstellung erhöht weder die verfügbare Bandbreite noch die Geschwindigkeit des Internetanschlusses. Eine Verbesserung ist nur bei bestimmten TCP-Anwendungen und Netzwerkbedingun…“) |
Asphyx (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
| Zeile 3: | Zeile 3: | ||
Die Einstellung erhöht weder die verfügbare Bandbreite noch die Geschwindigkeit des Internetanschlusses. Eine Verbesserung ist nur bei bestimmten TCP-Anwendungen und Netzwerkbedingungen möglich. | Die Einstellung erhöht weder die verfügbare Bandbreite noch die Geschwindigkeit des Internetanschlusses. Eine Verbesserung ist nur bei bestimmten TCP-Anwendungen und Netzwerkbedingungen möglich. | ||
== | == Technischer Hintergrund == | ||
TCP verwendet verzögerte Bestätigungen, | === Verzögerte TCP-Bestätigungen === | ||
TCP verwendet verzögerte Bestätigungen, damit nicht für jedes empfangene Segment ein eigenes Bestätigungspaket übertragen werden muss. | |||
Windows sendet üblicherweise eine Bestätigung, wenn: | |||
* ein weiteres TCP-Segment empfangen wurde oder | * ein weiteres TCP-Segment empfangen wurde oder | ||
* innerhalb von ungefähr 200 Millisekunden kein weiteres Segment eingetroffen ist. | * innerhalb von ungefähr 200 Millisekunden kein weiteres Segment eingetroffen ist. | ||
Dieses Verhalten reduziert den Netzwerk- und Protokollaufwand. Bei Anwendungen, die viele kleine Datenpakete austauschen und auf eine Bestätigung warten, kann dadurch jedoch zusätzliche Latenz entstehen. | Dieses Verhalten reduziert den Netzwerk- und Protokollaufwand. Bei Anwendungen, die viele kleine Datenpakete austauschen und jeweils auf eine Bestätigung warten, kann dadurch jedoch zusätzliche Latenz entstehen. | ||
== Registrierungspfad == | === Grenzen der Einstellung === | ||
'''TcpAckFrequency''' beeinflusst ausschließlich TCP-Verbindungen. | |||
Die Einstellung bewirkt keine grundsätzliche Verringerung des gemessenen Pings. ICMP-Ping, TCP-Bestätigungen und anwendungsinterne Verzögerungen sind unterschiedliche Vorgänge. | |||
Auch auf UDP-Datenverkehr hat die Einstellung keine Wirkung. | |||
== Registrierungseinstellung == | |||
=== Registrierungspfad === | |||
Die Einstellung muss beim tatsächlich verwendeten Netzwerkadapter eingetragen werden: | Die Einstellung muss beim tatsächlich verwendeten Netzwerkadapter eingetragen werden: | ||
| Zeile 20: | Zeile 34: | ||
</pre> | </pre> | ||
Unterhalb von '''Interfaces''' befinden sich mehrere Schlüssel mit GUID-Bezeichnungen. Der richtige Schlüssel lässt sich anhand | Unterhalb von '''Interfaces''' befinden sich mehrere Schlüssel mit GUID-Bezeichnungen. | ||
Der richtige Schlüssel lässt sich unter anderem anhand folgender Einträge erkennen: | |||
== | * IP-Adresse | ||
* DHCP-Adresse | |||
* DHCP-Server | |||
* Standardgateway | |||
* DNS-Server | |||
Die Änderung gilt ausschließlich für die ausgewählte Netzwerkschnittstelle. | |||
=== Name und Datentyp === | |||
'''Name:''' | '''Name:''' | ||
| Zeile 49: | Zeile 72: | ||
</pre> | </pre> | ||
== Bedeutung der Werte == | |||
== Wert 1 == | === Wert 1: Jedes Segment bestätigen === | ||
<pre> | <pre> | ||
| Zeile 57: | Zeile 80: | ||
</pre> | </pre> | ||
Mit dem Wert '''1''' bestätigt Windows jedes empfangene TCP-Segment unmittelbar, ohne auf ein zweites Segment zu warten. Dies kann bei bestimmten interaktiven TCP-Anwendungen die Verzögerung reduzieren, beispielsweise bei: | Mit dem Wert '''1''' bestätigt Windows jedes empfangene TCP-Segment unmittelbar, ohne auf ein zweites Segment zu warten. | ||
Dies kann bei bestimmten interaktiven TCP-Anwendungen die Verzögerung reduzieren, beispielsweise bei: | |||
* älteren Online-Spielen mit | * älteren Online-Spielen mit kleinen TCP-Paketen | ||
* Terminal- und Fernsteuerungsanwendungen | * Terminal- und Fernsteuerungsanwendungen | ||
* bestimmten Datenbankverbindungen | * bestimmten Datenbankverbindungen | ||
* selbst entwickelten TCP-Protokollen mit ungünstigem | * selbst entwickelten TCP-Protokollen | ||
* Anwendungen mit ungünstigem Zusammenspiel zwischen verzögerten ACKs und dem Nagle-Algorithmus | |||
Der Wert reduziert nicht grundsätzlich den gemessenen Ping zum Server | Der Wert reduziert jedoch nicht grundsätzlich den gemessenen Ping zum Server. | ||
== Wert 2 == | === Wert 2: Windows-Standard === | ||
<pre> | <pre> | ||
| Zeile 72: | Zeile 98: | ||
</pre> | </pre> | ||
Der Wert '''2''' entspricht dem dokumentierten Standardverhalten. | |||
Windows bestätigt normalerweise jedes zweite empfangene TCP-Segment oder sendet eine Bestätigung nach Ablauf des verzögerten ACK-Timers. | |||
Für normale Internet-, Dateiübertragungs-, Streaming- und Arbeitsplatzsysteme ist dies grundsätzlich die sinnvolle Einstellung. | |||
== Wert 0 == | === Wert 0 === | ||
<pre> | <pre> | ||
| Zeile 83: | Zeile 113: | ||
== TcpAckFrequency auf 1 setzen == | == TcpAckFrequency auf 1 setzen == | ||
=== Änderung im Registrierungseditor === | |||
Unterhalb der GUID des verwendeten Netzwerkadapters wird ein neuer '''DWORD-Wert (32-Bit)''' mit dem Namen '''TcpAckFrequency''' angelegt. | Unterhalb der GUID des verwendeten Netzwerkadapters wird ein neuer '''DWORD-Wert (32-Bit)''' mit dem Namen '''TcpAckFrequency''' angelegt. | ||
Als Wert wird eingetragen: | Als Wert wird eingetragen: | ||
| Zeile 93: | Zeile 126: | ||
Da der Wert bei hexadezimaler und dezimaler Eingabe identisch ist, spielt die gewählte Basis hierbei keine Rolle. | Da der Wert bei hexadezimaler und dezimaler Eingabe identisch ist, spielt die gewählte Basis hierbei keine Rolle. | ||
== Registrierungsdatei == | === Registrierungsdatei === | ||
Die GUID muss durch die Kennung des tatsächlich verwendeten Netzwerkadapters ersetzt werden: | Die GUID muss durch die Kennung des tatsächlich verwendeten Netzwerkadapters ersetzt werden: | ||
| Zeile 104: | Zeile 137: | ||
</pre> | </pre> | ||
== | === Windows-Terminal === | ||
Das Windows-Terminal oder die Eingabeaufforderung muss als Administrator geöffnet werden. | |||
Die Schnittstellen-GUID ist entsprechend anzupassen: | |||
<pre> | <pre> | ||
| Zeile 114: | Zeile 149: | ||
Anschließend sollte Windows neu gestartet werden. | Anschließend sollte Windows neu gestartet werden. | ||
== Mögliche Vorteile == | == Bewertung der Änderung == | ||
=== Mögliche Vorteile === | |||
Eine Verringerung auf '''1''' kann sinnvoll sein, wenn eine konkrete Anwendung durch verzögerte TCP-Bestätigungen reproduzierbar ausgebremst wird. | Eine Verringerung auf '''1''' kann sinnvoll sein, wenn eine konkrete Anwendung durch verzögerte TCP-Bestätigungen reproduzierbar ausgebremst wird. | ||
Mögliche Auswirkungen: | |||
Mögliche Auswirkungen sind: | |||
* geringere Verzögerung bei kleinen TCP-Nachrichten | * geringere Verzögerung bei kleinen TCP-Nachrichten | ||
* schnellere Bestätigung einzelner TCP-Segmente | * schnellere Bestätigung einzelner TCP-Segmente | ||
* weniger Wechselwirkung | * weniger Wechselwirkung mit dem Nagle-Algorithmus | ||
* verbessertes Verhalten einzelner älterer Client-Server-Anwendungen | * verbessertes Verhalten einzelner älterer Client-Server-Anwendungen | ||
Eine Wirkung sollte immer mit der konkreten Anwendung geprüft werden. | Eine Wirkung sollte immer mit der konkreten Anwendung geprüft werden. | ||
== Mögliche Nachteile == | === Mögliche Nachteile === | ||
Durch die unmittelbare Bestätigung jedes Segments werden mehr ACK-Pakete erzeugt. | Durch die unmittelbare Bestätigung jedes Segments werden mehr ACK-Pakete erzeugt. | ||
Mögliche Folgen: | |||
Mögliche Folgen sind: | |||
* höherer Protokollaufwand | * höherer Protokollaufwand | ||
| Zeile 135: | Zeile 174: | ||
* geringfügig höhere CPU- und Netzwerklast | * geringfügig höhere CPU- und Netzwerklast | ||
* unter bestimmten Bedingungen geringerer Datendurchsatz | * unter bestimmten Bedingungen geringerer Datendurchsatz | ||
* keine messbare Verbesserung bei Anwendungen | * keine messbare Verbesserung bei UDP-Anwendungen | ||
* keine Wirkung bei Anwendungen mit eigener Socket- und Paketsteuerung | * keine Wirkung bei Anwendungen mit eigener Socket- und Paketsteuerung | ||
Viele moderne Spiele verwenden für zeitkritische Daten überwiegend UDP. In diesen Fällen | Viele moderne Spiele verwenden für zeitkritische Daten überwiegend UDP. In diesen Fällen beeinflusst '''TcpAckFrequency''' den eigentlichen Spieldatenverkehr nicht. | ||
== Sinnvolle Einsatzbereiche == | |||
Ein Test mit dem Wert '''1''' kann sinnvoll sein, wenn: | |||
* die betroffene Anwendung TCP verwendet | |||
* viele kleine Datenpakete übertragen werden | |||
* die Gegenstelle auf TCP-Bestätigungen wartet | |||
* Verzögerungen reproduzierbar durch verzögerte ACKs entstehen | |||
* ein Paketmitschnitt das Verhalten bestätigt | |||
* vor und nach der Änderung objektiv gemessen wird | |||
== Nicht geeignete Einsatzbereiche == | |||
Die Einstellung ist keine geeignete Lösung für: | |||
* hohen Ping durch weit entfernte Server | |||
* überlastete Internetverbindungen | |||
* überlastete Router | |||
* WLAN-Störungen | |||
* Paketverluste | |||
* schlechte Serveranbindung | |||
* DNS-Verzögerungen | |||
* UDP-basierten Datenverkehr | |||
* langsame Downloads aufgrund begrenzter Bandbreite | |||
== Verwandte Registry-Werte == | |||
== TcpNoDelay == | === TcpNoDelay === | ||
Im Zusammenhang mit '''TcpAckFrequency''' wird häufig zusätzlich folgender Registry-Wert empfohlen: | Im Zusammenhang mit '''TcpAckFrequency''' wird häufig zusätzlich folgender Registry-Wert empfohlen: | ||
| Zeile 148: | Zeile 214: | ||
</pre> | </pre> | ||
'''TCP_NODELAY''' deaktiviert grundsätzlich den Nagle-Algorithmus | '''TCP_NODELAY''' deaktiviert grundsätzlich den Nagle-Algorithmus. | ||
Dieser fasst kleine ausgehende Datenblöcke zusammen, um die Anzahl kleiner TCP-Pakete zu reduzieren. | |||
Auf modernen Windows-Systemen wird dieses Verhalten normalerweise von der jeweiligen Anwendung für jeden TCP-Socket gesteuert. Eine Anwendung kann die Socketoption '''TCP_NODELAY''' selbst aktivieren oder deaktivieren. | |||
== TcpDelAckTicks == | Ein pauschaler Registry-Eintrag unter der Netzwerkschnittstelle ist für aktuelle Windows-Versionen nicht eindeutig als allgemeine Systemeinstellung dokumentiert. | ||
'''TcpNoDelay sollte daher nicht automatisch zusammen mit TcpAckFrequency angelegt werden.''' | |||
Das Deaktivieren des Nagle-Algorithmus kann Verzögerungen kleiner Nachrichten reduzieren, erhöht jedoch den Protokollaufwand und kann schlecht programmierte Anwendungen lediglich kaschieren. | |||
=== TcpDelAckTicks === | |||
Der ebenfalls häufig genannte Wert lautet: | Der ebenfalls häufig genannte Wert lautet: | ||
| Zeile 170: | Zeile 242: | ||
</pre> | </pre> | ||
Der Wert '''0''' wurde insbesondere als Lösung für ein spezielles Leistungsproblem unter Windows 2000 beschrieben | Der Wert '''0''' wurde insbesondere als Lösung für ein spezielles Leistungsproblem unter Windows 2000 beschrieben. | ||
Für Windows XP und Windows Server 2003 empfahl Microsoft bei demselben Problem bereits stattdessen: | |||
Häufig wird folgende Kombination | <pre> | ||
TcpAckFrequency = 1 | |||
</pre> | |||
Für aktuelle Windows-Versionen ist '''TcpDelAckTicks''' nicht als allgemeiner Netzwerk- oder Spiele-Tweak zu empfehlen. | |||
=== Verbreitete Kombination === | |||
Häufig wird folgende Kombination empfohlen: | |||
<pre> | <pre> | ||
| Zeile 182: | Zeile 262: | ||
</pre> | </pre> | ||
Diese Kombination sollte nicht pauschal übernommen werden: | Diese Kombination sollte nicht pauschal übernommen werden. | ||
Die einzelnen Werte sind wie folgt zu bewerten: | |||
* '''TcpAckFrequency = 1''' ist technisch dokumentiert, sollte aber nur gezielt getestet werden. | * '''TcpAckFrequency = 1''' ist technisch dokumentiert, sollte aber nur gezielt getestet werden. | ||
| Zeile 191: | Zeile 273: | ||
* Zusätzliche ACK- und TCP-Pakete können den Netzwerkaufwand erhöhen. | * Zusätzliche ACK- und TCP-Pakete können den Netzwerkaufwand erhöhen. | ||
== | == Sicherung und Wiederherstellung == | ||
=== Registrierungsschlüssel sichern === | |||
== | |||
== | |||
Die Schnittstellen-GUID muss entsprechend angepasst werden: | Die Schnittstellen-GUID muss entsprechend angepasst werden: | ||
| Zeile 222: | Zeile 283: | ||
</pre> | </pre> | ||
== | === TcpAckFrequency löschen === | ||
Um wieder das Windows-Standardverhalten zu verwenden, wird der selbst angelegte Wert gelöscht: | Um wieder das Windows-Standardverhalten zu verwenden, wird der selbst angelegte Wert gelöscht: | ||
| Zeile 230: | Zeile 291: | ||
</pre> | </pre> | ||
Alternativ kann der Wert auf '''2''' gesetzt werden: | === Standardwert 2 setzen === | ||
Alternativ kann der Wert ausdrücklich auf '''2''' gesetzt werden: | |||
<pre> | <pre> | ||
| Zeile 240: | Zeile 303: | ||
== Fazit == | == Fazit == | ||
'''TcpAckFrequency = 1''' kann bei einzelnen TCP-Anwendungen die Verzögerung kleiner Datenübertragungen reduzieren. Eine allgemeine Verringerung des Internet-Pings oder eine höhere Netzwerkgeschwindigkeit ist dadurch nicht zu erwarten. '''TcpNoDelay''' sollte vorzugsweise von der jeweiligen Anwendung über die TCP-Socketoption gesteuert werden. '''TcpDelAckTicks''' ist hauptsächlich für ältere Windows-Versionen und spezielle Fehlerfälle dokumentiert. | '''TcpAckFrequency = 1''' kann bei einzelnen TCP-Anwendungen die Verzögerung kleiner Datenübertragungen reduzieren. | ||
Eine allgemeine Verringerung des Internet-Pings oder eine höhere Netzwerkgeschwindigkeit ist dadurch nicht zu erwarten. | |||
'''TcpNoDelay''' sollte vorzugsweise von der jeweiligen Anwendung über die entsprechende TCP-Socketoption gesteuert werden. '''TcpDelAckTicks''' ist hauptsächlich für ältere Windows-Versionen und spezielle Fehlerfälle dokumentiert. | |||
Für normale Systeme sollte das Windows-Standardverhalten beibehalten werden, sofern kein konkretes und messbares TCP-Latenzproblem besteht. | Für normale Systeme sollte das Windows-Standardverhalten beibehalten werden, sofern kein konkretes und messbares TCP-Latenzproblem besteht. | ||
[[Kategorie:Registry – Netzwerk]] | [[Kategorie:Registry – Netzwerk]] | ||
Aktuelle Version vom 12. Juli 2026, 11:54 Uhr
TcpAckFrequency beeinflusst, nach wie vielen empfangenen TCP-Segmenten Windows eine Empfangsbestätigung sendet. Der Wert kann die Verzögerung kleiner, interaktiver TCP-Übertragungen reduzieren, erhöht dabei jedoch die Anzahl der übertragenen Bestätigungspakete.
Die Einstellung erhöht weder die verfügbare Bandbreite noch die Geschwindigkeit des Internetanschlusses. Eine Verbesserung ist nur bei bestimmten TCP-Anwendungen und Netzwerkbedingungen möglich.
Technischer Hintergrund
Verzögerte TCP-Bestätigungen
TCP verwendet verzögerte Bestätigungen, damit nicht für jedes empfangene Segment ein eigenes Bestätigungspaket übertragen werden muss.
Windows sendet üblicherweise eine Bestätigung, wenn:
- ein weiteres TCP-Segment empfangen wurde oder
- innerhalb von ungefähr 200 Millisekunden kein weiteres Segment eingetroffen ist.
Dieses Verhalten reduziert den Netzwerk- und Protokollaufwand. Bei Anwendungen, die viele kleine Datenpakete austauschen und jeweils auf eine Bestätigung warten, kann dadurch jedoch zusätzliche Latenz entstehen.
Grenzen der Einstellung
TcpAckFrequency beeinflusst ausschließlich TCP-Verbindungen.
Die Einstellung bewirkt keine grundsätzliche Verringerung des gemessenen Pings. ICMP-Ping, TCP-Bestätigungen und anwendungsinterne Verzögerungen sind unterschiedliche Vorgänge.
Auch auf UDP-Datenverkehr hat die Einstellung keine Wirkung.
Registrierungseinstellung
Registrierungspfad
Die Einstellung muss beim tatsächlich verwendeten Netzwerkadapter eingetragen werden:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{Schnittstellen-GUID}
Unterhalb von Interfaces befinden sich mehrere Schlüssel mit GUID-Bezeichnungen.
Der richtige Schlüssel lässt sich unter anderem anhand folgender Einträge erkennen:
- IP-Adresse
- DHCP-Adresse
- DHCP-Server
- Standardgateway
- DNS-Server
Die Änderung gilt ausschließlich für die ausgewählte Netzwerkschnittstelle.
Name und Datentyp
Name:
TcpAckFrequency
Typ:
DWORD-Wert (32-Bit)
Dokumentierter Wertebereich:
0 bis 255
Standardwert:
2
Bedeutung der Werte
Wert 1: Jedes Segment bestätigen
TcpAckFrequency = 1
Mit dem Wert 1 bestätigt Windows jedes empfangene TCP-Segment unmittelbar, ohne auf ein zweites Segment zu warten.
Dies kann bei bestimmten interaktiven TCP-Anwendungen die Verzögerung reduzieren, beispielsweise bei:
- älteren Online-Spielen mit kleinen TCP-Paketen
- Terminal- und Fernsteuerungsanwendungen
- bestimmten Datenbankverbindungen
- selbst entwickelten TCP-Protokollen
- Anwendungen mit ungünstigem Zusammenspiel zwischen verzögerten ACKs und dem Nagle-Algorithmus
Der Wert reduziert jedoch nicht grundsätzlich den gemessenen Ping zum Server.
Wert 2: Windows-Standard
TcpAckFrequency = 2
Der Wert 2 entspricht dem dokumentierten Standardverhalten.
Windows bestätigt normalerweise jedes zweite empfangene TCP-Segment oder sendet eine Bestätigung nach Ablauf des verzögerten ACK-Timers.
Für normale Internet-, Dateiübertragungs-, Streaming- und Arbeitsplatzsysteme ist dies grundsätzlich die sinnvolle Einstellung.
Wert 0
TcpAckFrequency = 0
Der Wert 0 ist nicht gültig und wird von Windows wie der Standardwert 2 behandelt.
TcpAckFrequency auf 1 setzen
Änderung im Registrierungseditor
Unterhalb der GUID des verwendeten Netzwerkadapters wird ein neuer DWORD-Wert (32-Bit) mit dem Namen TcpAckFrequency angelegt.
Als Wert wird eingetragen:
1
Da der Wert bei hexadezimaler und dezimaler Eingabe identisch ist, spielt die gewählte Basis hierbei keine Rolle.
Registrierungsdatei
Die GUID muss durch die Kennung des tatsächlich verwendeten Netzwerkadapters ersetzt werden:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{Schnittstellen-GUID}]
"TcpAckFrequency"=dword:00000001
Windows-Terminal
Das Windows-Terminal oder die Eingabeaufforderung muss als Administrator geöffnet werden.
Die Schnittstellen-GUID ist entsprechend anzupassen:
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{Schnittstellen-GUID}" /v TcpAckFrequency /t REG_DWORD /d 1 /f
Anschließend sollte Windows neu gestartet werden.
Bewertung der Änderung
Mögliche Vorteile
Eine Verringerung auf 1 kann sinnvoll sein, wenn eine konkrete Anwendung durch verzögerte TCP-Bestätigungen reproduzierbar ausgebremst wird.
Mögliche Auswirkungen sind:
- geringere Verzögerung bei kleinen TCP-Nachrichten
- schnellere Bestätigung einzelner TCP-Segmente
- weniger Wechselwirkung mit dem Nagle-Algorithmus
- verbessertes Verhalten einzelner älterer Client-Server-Anwendungen
Eine Wirkung sollte immer mit der konkreten Anwendung geprüft werden.
Mögliche Nachteile
Durch die unmittelbare Bestätigung jedes Segments werden mehr ACK-Pakete erzeugt.
Mögliche Folgen sind:
- höherer Protokollaufwand
- mehr kleine Netzwerkpakete
- geringfügig höhere CPU- und Netzwerklast
- unter bestimmten Bedingungen geringerer Datendurchsatz
- keine messbare Verbesserung bei UDP-Anwendungen
- keine Wirkung bei Anwendungen mit eigener Socket- und Paketsteuerung
Viele moderne Spiele verwenden für zeitkritische Daten überwiegend UDP. In diesen Fällen beeinflusst TcpAckFrequency den eigentlichen Spieldatenverkehr nicht.
Sinnvolle Einsatzbereiche
Ein Test mit dem Wert 1 kann sinnvoll sein, wenn:
- die betroffene Anwendung TCP verwendet
- viele kleine Datenpakete übertragen werden
- die Gegenstelle auf TCP-Bestätigungen wartet
- Verzögerungen reproduzierbar durch verzögerte ACKs entstehen
- ein Paketmitschnitt das Verhalten bestätigt
- vor und nach der Änderung objektiv gemessen wird
Nicht geeignete Einsatzbereiche
Die Einstellung ist keine geeignete Lösung für:
- hohen Ping durch weit entfernte Server
- überlastete Internetverbindungen
- überlastete Router
- WLAN-Störungen
- Paketverluste
- schlechte Serveranbindung
- DNS-Verzögerungen
- UDP-basierten Datenverkehr
- langsame Downloads aufgrund begrenzter Bandbreite
Verwandte Registry-Werte
TcpNoDelay
Im Zusammenhang mit TcpAckFrequency wird häufig zusätzlich folgender Registry-Wert empfohlen:
TcpNoDelay = 1
TCP_NODELAY deaktiviert grundsätzlich den Nagle-Algorithmus.
Dieser fasst kleine ausgehende Datenblöcke zusammen, um die Anzahl kleiner TCP-Pakete zu reduzieren.
Auf modernen Windows-Systemen wird dieses Verhalten normalerweise von der jeweiligen Anwendung für jeden TCP-Socket gesteuert. Eine Anwendung kann die Socketoption TCP_NODELAY selbst aktivieren oder deaktivieren.
Ein pauschaler Registry-Eintrag unter der Netzwerkschnittstelle ist für aktuelle Windows-Versionen nicht eindeutig als allgemeine Systemeinstellung dokumentiert.
TcpNoDelay sollte daher nicht automatisch zusammen mit TcpAckFrequency angelegt werden.
Das Deaktivieren des Nagle-Algorithmus kann Verzögerungen kleiner Nachrichten reduzieren, erhöht jedoch den Protokollaufwand und kann schlecht programmierte Anwendungen lediglich kaschieren.
TcpDelAckTicks
Der ebenfalls häufig genannte Wert lautet:
TcpDelAckTicks
Dieser Wert wurde von Microsoft für ältere Windows-Versionen dokumentiert und beeinflusste den Timer für verzögerte TCP-Bestätigungen.
Beispiel:
TcpDelAckTicks = 0
Der Wert 0 wurde insbesondere als Lösung für ein spezielles Leistungsproblem unter Windows 2000 beschrieben.
Für Windows XP und Windows Server 2003 empfahl Microsoft bei demselben Problem bereits stattdessen:
TcpAckFrequency = 1
Für aktuelle Windows-Versionen ist TcpDelAckTicks nicht als allgemeiner Netzwerk- oder Spiele-Tweak zu empfehlen.
Verbreitete Kombination
Häufig wird folgende Kombination empfohlen:
TcpAckFrequency = 1 TcpNoDelay = 1 TcpDelAckTicks = 1
Diese Kombination sollte nicht pauschal übernommen werden.
Die einzelnen Werte sind wie folgt zu bewerten:
- TcpAckFrequency = 1 ist technisch dokumentiert, sollte aber nur gezielt getestet werden.
- TcpNoDelay = 1 ist als pauschaler Registry-Eintrag für aktuelle Windows-Versionen nicht ausreichend dokumentiert.
- TcpDelAckTicks stammt aus älteren Windows-Implementierungen und speziellen Fehlerbehebungen.
- Die Kombination erhöht nicht automatisch die Internetgeschwindigkeit.
- Bei UDP-Anwendungen bleibt sie wirkungslos.
- Zusätzliche ACK- und TCP-Pakete können den Netzwerkaufwand erhöhen.
Sicherung und Wiederherstellung
Registrierungsschlüssel sichern
Die Schnittstellen-GUID muss entsprechend angepasst werden:
reg export "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{Schnittstellen-GUID}" "%USERPROFILE%\Desktop\TCP-Schnittstelle.reg" /y
TcpAckFrequency löschen
Um wieder das Windows-Standardverhalten zu verwenden, wird der selbst angelegte Wert gelöscht:
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{Schnittstellen-GUID}" /v TcpAckFrequency /f
Standardwert 2 setzen
Alternativ kann der Wert ausdrücklich auf 2 gesetzt werden:
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{Schnittstellen-GUID}" /v TcpAckFrequency /t REG_DWORD /d 2 /f
Anschließend sollte Windows neu gestartet werden.
Fazit
TcpAckFrequency = 1 kann bei einzelnen TCP-Anwendungen die Verzögerung kleiner Datenübertragungen reduzieren.
Eine allgemeine Verringerung des Internet-Pings oder eine höhere Netzwerkgeschwindigkeit ist dadurch nicht zu erwarten.
TcpNoDelay sollte vorzugsweise von der jeweiligen Anwendung über die entsprechende TCP-Socketoption gesteuert werden. TcpDelAckTicks ist hauptsächlich für ältere Windows-Versionen und spezielle Fehlerfälle dokumentiert.
Für normale Systeme sollte das Windows-Standardverhalten beibehalten werden, sofern kein konkretes und messbares TCP-Latenzproblem besteht.