FĂŒr OpenBSD wurde eine Konfiguration implementiert, die den TCP_NODELAY-Modus fĂŒr das gesamte System aktiviert.

Job Snijders, ein erfahrener OpenBSD-Entwickler, der Leiter eines der Komitees der IETF (Internet Engineering Task Force), Autor von 11 RFCs zu Routing und RPKI sowie der Schöpfer von IRRd (Internet Routing Registry Daemon), hat eine Sammlung von Patches fĂŒr OpenBSD veröffentlicht, die einen neuen sysctl-Parameter „net.inet.tcp.nodelay“ hinzufĂŒgen, um den Nagle-Algorithmus systemweit zu deaktivieren. Dieser Parameter befreit Anwendungsentwickler von der Notwendigkeit, das TCP_NODELAY-Flag fĂŒr einzelne Sockets zu setzen.

Der Nagle-Algorithmus wird verwendet, um kleine Nachrichten zu aggregieren, um den Datenverkehr zu reduzieren. Der Algorithmus stoppt das Senden neuer TCP-Segmente, bis eine BestĂ€tigung fĂŒr den Empfang zuvor gesendeter Daten eingegangen ist oder ein Timeout eintritt. Beispielsweise werden ohne Aggregation beim Senden von 1 Byte zusĂ€tzlich 40 Bytes mit TCP- und IP-Headern des Pakets gesendet, wĂ€hrend im Fall des Nagle-Algorithmus die bis zum Erhalt der BestĂ€tigung von der Gegenseite gesendeten Nachrichten gesammelt und in einem Paket gesendet werden. Aufgrund der Optimierung „delayed ACK“, die das Senden von ACK-Paketen verzögert, funktioniert das Signal ĂŒber die BestĂ€tigungs-Pakete in der Praxis nicht, und das Senden der gesammelten Nachrichten erfolgt beim Eintreten eines Timeouts.

Snijders ist der Meinung, dass der Nagle-Algorithmus in der modernen RealitĂ€t, als er entwickelt wurde, als mehrere Benutzer um eine Bandbreite von 1200 Baud kĂ€mpften, veraltet ist und in Hochgeschwindigkeitsnetzwerken mehr Schaden als Nutzen bringt. KĂŒrzlich hat auch Marc Brooker von Amazon Web Services (AWS) eine Ă€hnliche Position geĂ€ußert. Die Argumente fĂŒr die Deaktivierung des Nagle-Algorithmus als Standard können in einem vor wenigen Tagen veröffentlichten Artikel nachgelesen werden.

Um den Nagle-Algorithmus zu deaktivieren, gibt es die Option TCP_NODELAY, die fĂŒr einzelne Netzwerksockets gesetzt werden kann. Der TCP_NODELAY-Modus wird bereits seit lĂ€ngerem in vielen OpenBSD-Anwendungen gesetzt, darunter openssh, httpd, iscsid, relayd, bgpd und unwind, und Snijders ist der Meinung, dass es an der Zeit ist, die Möglichkeit zur Aktivierung fĂŒr alle TCP-Sockets systemweit bereitzustellen. Snijders schlĂ€gt außerdem vor, die Frage der Standardaktivierung von TCP_NODELAY zu diskutieren und den Nagle-Algorithmus in den Status einer separat aktivierbaren Option zu versetzen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4