Welches ist das Standard-TCP-Verbindungszeitlimit in Windows?

28

Welches ist das Standard-TCP-Verbindungszeitlimit in Windows? Gibt es einen Registrierungsschlüssel, um ihn zu konfigurieren, oder ist er dynamisch festgelegt?

Renan Vinícius Mozone
quelle

Antworten:

23

In Windows ist der Wert für hergestellte Verbindungen dynamisch , obwohl der Standardwert für anfängliche Verbindungen 72 Sekunden beträgt. Die Registrierungseinstellungen werden in diesem Artikel definiert:

http://technet.microsoft.com/en-us/library/cc739819(WS.10).aspx

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services: \ Tcpip \ Parameters

TcpInitialRTT : Definiert die anfänglichen Timeout -Einstellungen für neue Verbindungen. Diese Anzahl in Sekunden wird bei jeder erneuten Übertragung verdoppelt, bevor eine Verbindung unterbrochen wird. Der Standardwert ist 3.

TcpMaxConnectRetransmissions : Definiert die Anzahl der erneuten Übertragungen, bevor eine Verbindung unterbrochen wird. Der Standardwert ist 5.

sysadmin1138
quelle
Man muss nur eine bestimmte Verbindung wiederherstellen, nachdem man diese geändert hat, kein Neustart, oder? Wissen Sie möglicherweise, welche geändert werden sollte, um zu verhindern, dass Windows 7 bei kurzen Ausfällen proaktiv vorhandene Verbindungen unterbricht? Ich habe versucht, TcpMaxDataRetransmissionsauf 16 zu wechseln (Standardeinstellung ist 5), aber mein PuTTY trennt die Verbindungen bei kurzen Ausfällen immer noch sehr schnell, wohingegen ssh unter OS X und demselben Netzwerk sie in Ordnung hält. superuser.com/questions/529511/...
CNST
3
Eigentlich hat es geklappt, nachdem ich neu gestartet habe! In Windows ändert sich nie etwas! Scheint, als müssten Sie neu starten, und die Einstellung hat keine Auswirkungen auf alte oder neue Verbindungen, wenn Sie einfach die Registrierung bearbeiten, ohne einen Neustart durchzuführen!
08.01.13
9

Normalerweise bezieht sich "Verbindungs-Timeout" auf das Timeout zum Herstellen der ersten Verbindung zu einem Host. In vielen Systemen (einschließlich Windows 7) wird dieser Wert unter Verwendung getrennter Einstellungen von Zeitüberschreitungen für die laufende Kommunikation konfiguriert, nachdem eine Verbindung hergestellt wurde. Diese Antwort befasst sich mit dem Szenario "Erstverbindung" für Windows 7, das sich von XP unterscheidet.

Für Windows 7 sind zwei Hotfixes erforderlich, um das Anpassen der Einstellungen für das Verbindungszeitlimit zu unterstützen. Die neuen Einstellungen können mit dem Befehl 'netsh' konfiguriert werden.

Aus dem 2786464-Hotfix-Artikel:

Hinweis In Windows 7 und Windows Server 2008 R2 ist der maximale TCP-SYN-Neuübertragungswert (JH: MaxSynRetransmissions) auf 2 festgelegt und nicht konfigurierbar. Aufgrund der 3-Sekunden-Grenze des anfänglichen Zeitlimits (JH: InitialRTO) ist der TCP-Drei-Wege-Handshake auf einen Zeitraum von 21 Sekunden (3 Sekunden + 2 * 3 Sekunden + 4 * 3 Sekunden = 21 Sekunden) beschränkt ).

Der erste Hotfix fügt eine Einstellung "MaxSynRetransmissions" hinzu, mit der die Einstellung "Retry" vom Standardwert 2 geändert werden kann. Der zweite Hotfix fügt eine Einstellung "InitialRto" hinzu, mit der der RTO-Standardwert von 3000 ms (Ja, Millisekunden) geändert werden kann, jedoch nur auf etwas kürzer als 3000ms; es kann nicht erhöht werden. Abhängig von Ihrer Situation benötigen Sie möglicherweise nur den Hotfix 'MaxSynRetransmissions'.

Installieren Sie beide Hotfixes, starten Sie den Computer neu und öffnen Sie als Administrator ein Befehlsfenster. Weitere Neustarts sind für nachfolgende Netsh-Befehlsaufrufe nicht erforderlich.

C:\Windows\system32>NET SESSION >nul 2>&1

C:\Windows\system32>IF %ERRORLEVEL% EQU 0 (ECHO Administrator PRIVILEGES Detected!) ELSE ( ECHO NOT AN ADMIN! )
Administrator PRIVILEGES Detected!

C:\Windows\system32>netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled
Chimney Offload State               : automatic
NetDMA State                        : enabled
Direct Cache Acess (DCA)            : disabled
Receive Window Auto-Tuning Level    : normal
Add-On Congestion Control Provider  : none
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled
Initial RTO                         : 3000
Non Sack Rtt Resiliency             : disabled
Max SYN Retransmissions             : 2
** The above autotuninglevel setting is the result of Windows Scaling heuristics

overriding any local/policy configuration on at least one profile.

C:\Windows\system32>cmd /v:on /c "echo !TIME! & telnet 192.168.1.254 & echo !TIME!"
14:10:30.53
Connecting To 192.168.1.254...Could not open connection to the host, on port 23: Connect failed
14:10:51.60


C:\Windows\system32>netsh interface tcp set global MaxSynRetransmissions=3
Ok.


C:\Windows\system32>netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled
Chimney Offload State               : automatic
NetDMA State                        : enabled
Direct Cache Acess (DCA)            : disabled
Receive Window Auto-Tuning Level    : normal
Add-On Congestion Control Provider  : none
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled
Initial RTO                         : 3000
Non Sack Rtt Resiliency             : disabled
Max SYN Retransmissions             : 3
** The above autotuninglevel setting is the result of Windows Scaling heuristics

overriding any local/policy configuration on at least one profile.

C:\Windows\system32>cmd /v:on /c "echo !TIME! & telnet 192.168.1.254 & echo !TIME!"
14:27:02.33
Connecting To 192.168.1.254...Could not open connection to the host, on port 23:
 Connect failed
14:27:47.41

C:\Windows\system32>netsh interface tcp set global MaxSynRetransmissions=2
Ok.


C:\Windows\system32>netsh interface tcp set global InitialRto=1000
Ok.


C:\Windows\system32>netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled
Chimney Offload State               : automatic
NetDMA State                        : enabled
Direct Cache Acess (DCA)            : disabled
Receive Window Auto-Tuning Level    : normal
Add-On Congestion Control Provider  : none
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled
Initial RTO                         : 1000
Non Sack Rtt Resiliency             : disabled
Max SYN Retransmissions             : 2
** The above autotuninglevel setting is the result of Windows Scaling heuristics

overriding any local/policy configuration on at least one profile.


C:\Windows\system32>cmd /v:on /c "echo !TIME! & telnet 192.168.1.254 & echo !TIME!"
14:29:06.13
Connecting To 192.168.1.254...Could not open connection to the host, on port 23:
 Connect failed
14:29:13.20

Hinweis: Windows Telnet wird als Referenz für das tatsächliche Verbindungszeitlimit verwendet. Es muss separat installiert werden, ist aber einfach zu tun.

Zusätzliche Links / Kudos:

Josh Hansen
quelle
2

TcpInitialRTT und TcpMaxConnectRetransmissions sind in Vista und Windows 2008 möglicherweise nicht vorhanden. Dieses Microsoft-Dokument enthält sie nicht. http://download.microsoft.com/download/c/2/6/c26893a6-46c7-4b5c-b287-830216597340/TCPIP_Reg.doc

Und das sagt zumindest, dass TcpInitialRTT weg ist, obwohl ich nicht weiß, wie zuverlässig es ist. http://pul.se/Blog-Post-TCP-IP-Stack-hardening-in-Operating-Systems-starting-with-Windows-Vista_SharePoint-kHPTTCP0WJ5,7zq00hH0wINE

Lethargo
quelle
1

Wenn ich Ihre Frage richtig verstehe, beziehen Sie sich auf:

TcpTimedWaitDelay

Dieser Schlüssel bestimmt die Zeit, die vergehen muss, bevor TCP / IP eine geschlossene Verbindung freigeben und ihre Ressourcen wiederverwenden kann. Dieses Intervall zwischen dem Schließen und der Freigabe wird als TIME_WAIT-Status oder als doppelter Status der maximalen Segmentlebensdauer (2MSL) bezeichnet. Während dieser Zeit kostet das erneute Öffnen der Verbindung zu Client und Server weniger als das Herstellen einer neuen Verbindung. Durch Verringern des Werts dieses Eintrags kann TCP / IP geschlossene Verbindungen schneller freigeben und mehr Ressourcen für neue Verbindungen bereitstellen. Passen Sie diesen Parameter an, wenn die ausgeführte Anwendung eine schnelle Freigabe, das Erstellen neuer Verbindungen oder eine Anpassung aufgrund eines geringen Durchsatzes erfordert, der durch mehrere Verbindungen im Status TIME_WAIT verursacht wird.

Der genaue Schlüssel lautet: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Tcpip \ Parameters \ TcpTimedWaitDelay

Sie haben es möglicherweise nicht festgelegt, wenn Sie Win2008 oder höher verwenden, aber die Standardeinstellung ist 240 Dezimalstellen (dh 240 Sekunden oder 4 Minuten). Sie können den Schlüssel mit einem anderen Wert zur Registrierung hinzufügen. Dieser wird nach einem Neustart wirksam (getestet unter Windows Server 2008R2 in einer Produktionsumgebung). Dies ist angesichts der Qualität moderner Netze ein absurd hoher Wert.

Ich hatte eine Anwendung, die buchstäblich vor weniger als einem Monat auf einem Server lief, auf dem die maximale Anzahl von Verbindungen erschöpft war, die Windows unterstützen kann, und die jeden Netzwerkdienst auf diesem Server regelmäßig beendet hat. Über 16.000 Verbindungen in netstat -a, wenn Sie sogar eine RDP-Verbindung zum Server herstellen. Wir stellten den Wert auf 30 Dezimalstellen (30 Sekunden) und voila ein. Das Problem wurde behoben - weniger als 10.000 gleichzeitige Verbindungen (da die App sie schnell öffnete und schloss) und keine Durchsatzprobleme.

denislin
quelle
In Windows Server 2012 und 2016 lautet der genaue Schlüssel scheinbar HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ TcpTimedWaitDelay
Vincent,
Ist es sicher anzunehmen, dass diese Registrierungsänderung einen Neustart erfordert?
Vincent