TcpAckFrequency unter Windows konfigurieren

Aus MILLENNIUM ARTS ISP - Hilfe | FAQ
Version vom 12. Juli 2026, 11:52 Uhr von 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…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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.

Verzögerte TCP-Bestätigungen

TCP verwendet verzögerte Bestätigungen, um nicht für jedes empfangene Segment ein separates Bestätigungspaket senden zu müssen. 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 auf eine Bestätigung warten, kann dadurch jedoch zusätzliche Latenz entstehen.

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 anhand der dort eingetragenen IP-Adresse, des DHCP-Servers oder des Standardgateways identifizieren. Die Änderung gilt nur für die ausgewählte Netzwerkschnittstelle.

TcpAckFrequency

Name:

TcpAckFrequency

Typ:

DWORD-Wert (32-Bit)

Dokumentierter Wertebereich:

0 bis 255

Standardwert:

2

Der Standardwert bedeutet, dass Windows normalerweise nach jeweils zwei empfangenen TCP-Segmenten eine Bestätigung sendet.

Wert 1

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 vielen kleinen TCP-Paketen
  • Terminal- und Fernsteuerungsanwendungen
  • bestimmten Datenbankverbindungen
  • selbst entwickelten TCP-Protokollen mit ungünstigem Bestätigungsverhalten

Der Wert reduziert nicht grundsätzlich den gemessenen Ping zum Server. ICMP-Ping und TCP-Bestätigungsverhalten sind unterschiedliche Vorgänge.

Wert 2

TcpAckFrequency = 2

Dies 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

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

Einstellung über das Windows-Terminal

Das Windows-Terminal 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.

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:

  • geringere Verzögerung bei kleinen TCP-Nachrichten
  • schnellere Bestätigung einzelner TCP-Segmente
  • weniger Wechselwirkung zwischen verzögerten ACKs und 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:

  • höherer Protokollaufwand
  • mehr kleine Netzwerkpakete
  • geringfügig höhere CPU- und Netzwerklast
  • unter bestimmten Bedingungen geringerer Datendurchsatz
  • keine messbare Verbesserung bei Anwendungen, die UDP verwenden
  • keine Wirkung bei Anwendungen mit eigener Socket- und Paketsteuerung

Viele moderne Spiele verwenden für zeitkritische Daten überwiegend UDP. In diesen Fällen hat TcpAckFrequency auf den eigentlichen Spieldatenverkehr keine Wirkung.

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 eingestellt. 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 zwar 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.

Bewertung der verbreiteten Kombination

Häufig wird folgende Kombination verwendet:

TcpAckFrequency = 1
TcpNoDelay = 1
TcpDelAckTicks = 1

Diese Kombination sollte nicht pauschal übernommen werden:

  • 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.

Wann ist TcpAckFrequency sinnvoll?

Ein Test mit dem Wert 1 kann sinnvoll sein, wenn:

  • die betroffene Anwendung TCP verwendet
  • viele kleine Datenpakete übertragen werden
  • Verzögerungen reproduzierbar durch TCP-Bestätigungen entstehen
  • ein Paketmitschnitt das verzögerte ACK-Verhalten bestätigt
  • vor und nach der Änderung objektiv gemessen wird

Wann ist die Änderung nicht sinnvoll?

Die Einstellung ist keine geeignete Lösung für:

  • hohen Ping durch eine weit entfernte Gegenstelle
  • überlastete Router oder Internetverbindungen
  • WLAN-Störungen
  • Paketverluste
  • schlechte Serveranbindung
  • DNS-Verzögerungen
  • UDP-basierten Datenverkehr
  • langsame Downloads aufgrund begrenzter Bandbreite

Vorhandenen Schlü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

Rückgängig machen

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

Alternativ kann der Wert 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 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.