Для OpenBSD Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° настройка, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ Ρ€Π΅ΠΆΠΈΠΌ TCP_NODELAY для всСй систСмы

Π”ΠΆΠΎΠ± БнСйдСрс (Job Snijders), маститый Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ OpenBSD, Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ΠΎΠ² Π² IETF (Internet Engineering Task Force), Π°Π²Ρ‚ΠΎΡ€ 11 RFC, связанных с ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ RPKI, ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ IRRd (Internet Routing Registry Daemon), ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ для OpenBSD, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π½ΠΎΠ²Ρ‹ΠΉ sysctl-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ «net.inet.tcp.nodelay» для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° НСйгла Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ всСй систСмы. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ избавляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΡ‚ выставлСния Ρ„Π»Π°Π³Π° TCP_NODELAY для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… сокСтов.

Алгоритм НСйгла ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для агрСгирования ΠΌΠ΅Π»ΠΊΠΈΡ… сообщСний с Ρ†Π΅Π»ΡŒΡŽ сниТСния Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. Алгоритм приостанавливаСт ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Π½ΠΎΠ²Ρ‹Ρ… сСгмСнтов TCP Π΄ΠΎ получСния подтвСрТдСния ΠΎ ΠΏΡ€ΠΈΡ‘ΠΌΠ΅ Ρ€Π°Π½Π΅Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π΄ΠΎ наступлСния Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π°. НапримСр, Π±Π΅Π· примСнСния агрСгирования ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ 1 Π±Π°ΠΉΡ‚Π°, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ отправляСтся 40 Π±Π°ΠΉΡ‚ΠΎΠ² с TCP ΠΈ IP Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π° с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° НСйгла — сообщСния, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π΄ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π° подтвСрТдСния ΠΎΡ‚ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ стороны, Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ. Из-Π·Π° наличия ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ «delayed ACK», Π·Π°Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ACK-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², сигнал Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ с ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ Π½Π° Π΄Π΅Π»Π΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½Ρ‹Ρ… сообщСний выполняСтся ΠΏΡ€ΠΈ наступлСнии Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π°.

БнСйдСрс придСрТиваСтся мнСния, Ρ‡Ρ‚ΠΎ Π² соврСмСнных рСалиях Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ НСйгла, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π°, ΠΊΠΎΠ³Π΄Π° нСсколько ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π·Π° полосу пропускания 1200 Π±ΠΎΠ΄, устарСл ΠΈ Π² высокоскоростных сСтях ΠΎΡ‚ Π½Π΅Π³ΠΎ большС Π²Ρ€Π΅Π΄Π° Ρ‡Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·Ρ‹. НСдавно ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Ρ‚Π°ΠΊΠΆΠ΅ высказал ΠœΠ°Ρ€ΠΊ Π‘Ρ€ΡƒΠΊΠ΅Ρ€ (Marc Brooker) ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Amazon Web Services (AWS). Π‘ Π΄ΠΎΠ²ΠΎΠ΄Π°ΠΌΠΈ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° НСйгла ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π² ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠΉ нСсколько Π΄Π½Π΅ΠΉ Π½Π°Π·Π°Π΄ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅.

Для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° НСйгла прСдусмотрСна опция TCP_NODELAY, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ выставлСна для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… сСтСвых сокСтов. Π Π΅ΠΆΠΈΠΌ TCP_NODELAY Π΄Π°Π²Π½ΠΎ выставляСтся Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… прилоТСниях OpenBSD, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… openssh, httpd, iscsid, relayd, bgpd ΠΈ unwind, ΠΈ, ΠΏΠΎ мнСнию БнСйдСрса, настало врСмя для прСдоставлСния возмоТности Π΅Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ для всСх TCP-сокСтов Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ всСй систСмы. БнСйдСрс Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ вопрос Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ TCP_NODELAY ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° НСйгла Π² разряд ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠΉ ΠΎΠΏΡ†ΠΈΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ