Manakah batas waktu koneksi TCP default di Windows?

28

Manakah batas waktu koneksi TCP default di Windows? Ada kunci registri untuk mengkonfigurasinya atau disetel secara dinamis?

Renan Vinícius Mozone
sumber

Jawaban:

23

Pada Windows nilai dinamis untuk didirikan conections, meskipun default untuk koneksi awal adalah 72 detik. Pengaturan Registry didefinisikan dalam artikel ini:

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

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services: \ Tcpip \ Parameter

TcpInitialRTT : Menentukan pengaturan batas waktu awal untuk koneksi baru. Jumlah ini dalam detik digandakan setiap kali transmisi ulang sebelum penghitungan waktu koneksi habis. Default ke 3.

TcpMaxConnectRetransmissions : Menentukan jumlah pengiriman ulang sebelum waktu koneksi habis. Default ke 5.

sysadmin1138
sumber
Satu hanya perlu membangun kembali koneksi yang diberikan setelah mengubahnya, tidak perlu reboot, kan? Apakah Anda tahu yang mana yang harus diubah untuk menghentikan Windows 7 dari secara proaktif menjatuhkan koneksi yang ada pada pemadaman singkat? Saya sudah mencoba mengubah TcpMaxDataRetransmissionske 16 (standarnya seharusnya 5), ​​tetapi Putty saya masih menjatuhkan koneksi sangat cepat pada pemadaman singkat, sedangkan ssh pada OS X dan jaringan yang sama membuat mereka baik-baik saja. superuser.com/questions/529511/...
cnst
3
Sebenarnya, itu berhasil setelah saya reboot! Tidak ada yang pernah berubah di Windows! Sepertinya Anda harus reboot, dan pengaturan tidak berpengaruh pada koneksi lama atau baru jika Anda hanya mengedit registri tanpa me-reboot!
cnst
9

Biasanya "connect timeout" mengacu pada batas waktu untuk membuat koneksi awal ke host. Dalam banyak sistem (termasuk Windows 7), nilai ini dikonfigurasikan menggunakan pengaturan terpisah dari batas waktu untuk komunikasi yang sedang berlangsung setelah koneksi dibuat. Jawaban ini membahas skenario "koneksi awal" untuk Windows 7, yang berbeda dari XP.

Untuk Windows 7, diperlukan dua hotfix untuk mendukung penyesuaian pengaturan batas waktu koneksi. Pengaturan baru dapat dikonfigurasi dengan perintah 'netsh'.

Dari artikel perbaikan terbaru 2786464:

Catatan Di Windows 7 dan Windows Server 2008 R2, nilai transmisi ulang SYN maksimum TCP (JH: MaxSynRetransmissions) diatur ke 2, dan tidak dapat dikonfigurasi. Karena batas 3 detik dari nilai batas waktu awal (JH: InitialRTO), jabat tangan tiga arah TCP terbatas pada jangka waktu 21 detik (3 detik + 2 * 3 detik + 4 * 3 detik = 21 detik) ).

Perbaikan terbaru pertama menambahkan pengaturan 'MaxSynRetransmissions' yang memungkinkan mengubah pengaturan coba lagi dari nilai default 2. Yang kedua menambahkan pengaturan 'InitialRto' yang memungkinkan mengubah nilai RTO awal dari default 3000 ms (ya, milidetik), tetapi hanya untuk sesuatu yang lebih pendek dari 3000 ms; itu tidak bisa ditingkatkan. Tergantung pada situasi Anda, Anda mungkin hanya memerlukan perbaikan terbaru 'MaxSynRetransmissions'.

Instal kedua perbaikan terbaru, reboot, lalu buka jendela perintah sebagai Administrator. Boot ulang lebih lanjut tidak diperlukan untuk pemanggilan perintah netsh berikutnya.

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

Catatan: Windows telnet digunakan untuk referensi untuk batas waktu koneksi yang sebenarnya. Itu perlu diinstal secara terpisah, tetapi mudah dilakukan.

Tautan / pujian tambahan:

Josh Hansen
sumber
1

Jika saya memahami pertanyaan Anda dengan benar, Anda merujuk ke:

TcpTimedWaitDelay

Kunci ini menentukan waktu yang harus dilewati sebelum TCP / IP dapat melepaskan koneksi tertutup dan menggunakan kembali sumber dayanya. Interval antara penutupan dan pelepasan ini dikenal sebagai status TIME_WAIT atau dua kali status segmen maksimum (2MSL). Selama waktu ini, membuka kembali koneksi ke klien dan biaya server lebih sedikit daripada membangun koneksi baru. Dengan mengurangi nilai entri ini, TCP / IP dapat melepaskan koneksi tertutup lebih cepat dan menyediakan lebih banyak sumber daya untuk koneksi baru. Sesuaikan parameter ini jika aplikasi yang sedang berjalan memerlukan rilis cepat, pembuatan koneksi baru, atau penyesuaian karena throughput rendah yang disebabkan oleh beberapa koneksi dalam keadaan TIME_WAIT.

Kunci yang tepat adalah: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Tcpip \ Parameters \ TcpTimedWaitDelay

Anda mungkin tidak menyetelnya jika Anda menggunakan Win2008 atau lebih baru, tetapi standarnya adalah 240 desimal (240 detik atau 4 menit artinya). Anda dapat menambahkan kunci ke registri dengan nilai yang berbeda dan itu akan berlaku setelah reboot (diuji pada Windows Server 2008R2 di lingkungan produksi). Ini adalah nilai yang sangat tinggi mengingat kualitas jaringan modern.

Saya memiliki aplikasi yang secara harfiah kurang dari sebulan yang lalu berjalan di server yang kehabisan jumlah maksimum koneksi Windows dapat mendukung dan membunuh setiap layanan jaringan di server itu secara teratur. 16.000+ koneksi di netstat -a ketika Anda bahkan berhasil RDP ke server. Kami menetapkan nilainya menjadi 30 desimal (30 detik) dan voila, masalah ini terpecahkan - kurang dari 10.000 koneksi secara bersamaan (karena aplikasi ini dengan cepat membuka dan menutupnya) dan tidak ada masalah throughput.

denislin
sumber
Di Windows Server 2012 dan 2016 kunci yang tepat tampaknya HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ TcpTimedWaitDelay
Vincent
Apakah aman untuk mengasumsikan bahwa pengeditan registri ini memerlukan reboot?
Vincent