2017-09-06 3 views
0

Ich bin versucht zu reduzieren die Menge an Zeit zu reduzieren, eine Verbindung im TIME_WAIT-Zustand ist durch detaillierte here Einstellung tcp_fin_timeout:kann nicht TIME_WAIT

root:~# sysctl -w net.ipv4.tcp_fin_timeout=30 
net.ipv4.tcp_fin_timeout = 30 

jedoch diese Einstellung scheint nicht alles zu beeinflussen. Als ich an der netstat der Maschine suchen, warten die Anschlüsse noch die Standard-60s:

root:~# watch netstat -nato 
tcp  0  0 127.0.0.1:34185   127.0.0.1:11209   TIME_WAIT timewait (59.14/0/0) 
tcp  0  0 127.0.0.1:34190   127.0.0.1:11209   TIME_WAIT timewait (59.14/0/0) 

Gibt es etwas, was ich vermisst habe? Auf dem Rechner läuft Ubuntu 14.04.1.

Antwort

0

Ihr Link ist städtischer Mythos. Die eigentliche Funktion der net.ipv4.tcp_fin_timeout ist as follows:

Dieser gibt an, wie viele Sekunden für ein endgültiges FIN-Paket zu warten, bevor die Muffen gewaltsam geschlossen werden. Dies ist streng genommen ein Verstoß gegen die TCP-Spezifikation, ist aber erforderlich, um Denial-of-Service-Angriffe zu verhindern. In Linux 2.2 war der Standardwert 180.

Dies hat nichts mit TIME_WAIT zu tun. Es stellt ein Timeout für einen Socket in FIN_WAIT_1 her, nach dem die Verbindung zurückgesetzt wird (wodurch TIME_WAIT ganz umgangen wird). Dies ist, wie gesagt, eine DOS-Maßnahme und sollte niemals in einer korrekt geschriebenen Client-Server-Anwendung auftreten. Sie möchten es nicht so niedrig setzen, dass normale Verbindungen zurückgesetzt werden: Sie werden Daten verlieren. Du willst gar nicht damit herumspielen.

Der korrekte Weg zum Reduzieren von TIME_WAIT-Zuständen ist here.