Für OpenBSD gibt es eine Einstellung, die den TCP_NODELAY-Modus für das gesamte System aktiviert

Job Snijders, ein angesehener Entwickler von OpenBSD, Vorsitzender eines Komitees bei der IETF (Internet Engineering Task Force), Autor von 11 RFCs zu Routing und RPKI sowie Schöpfer des IRRd (Internet Routing Registry Daemon), hat eine Reihe 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. Der 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 hält den Versand neuer TCP-Segmente zurück, bis eine Bestätigung für die zuvor gesendeten Daten eingeht oder ein Timeout eintritt. Zum Beispiel wird ohne Aggregation beim Senden von 1 Byte zusätzlich ein Paket mit 40 Bytes TCP- und IP-Headern gesendet, während mit dem Nagle-Algorithmus die bis zur Bestätigung vom Remote-Gerät gesendeten Nachrichten in einem Paket gesammelt und versendet werden. Aufgrund der Optimierung „delayed ACK“, die das Senden von ACK-Paketen verzögert, funktioniert das Signal über Bestätigungspakete in der Praxis nicht, und die gesammelten Nachrichten werden erst bei Eintreffen eines Timeouts versandt.

Snijders ist der Meinung, dass der Nagle-Algorithmus in der modernen Welt, der in einer Zeit entwickelt wurde, in der mehrere Benutzer um eine Bandbreite von 1200 Baud konkurrierten, veraltet ist und in Hochgeschwindigkeitsnetzwerken mehr Schaden als Nutzen bringt. Kürzlich hat auch Marc Brooker von Amazon Web Services (AWS) eine ähnliche Haltung geäußert. Argumente für die standardmäßige Deaktivierung des Nagle-Algorithmus können in einem vor wenigen Tagen veröffentlichten Artikel nachgelesen werden.

Zur Deaktivierung des Nagle-Algorithmus gibt es die Option TCP_NODELAY, die für einzelne Netzwerk-Sockets gesetzt werden kann. Der Modus TCP_NODELAY wird seit langem in vielen OpenBSD-Anwendungen verwendet, darunter openssh, httpd, iscsid, relayd, bgpd und unwind, und nach Snijders' Meinung ist es an der Zeit, die Möglichkeit der Aktivierung für alle TCP-Sockets systemweit bereitzustellen. Snijders schlägt außerdem vor, die Einführung von TCP_NODELAY standardmäßig und die Einstufung des Nagle-Algorithmus als separate aktivierbare Option zu diskutieren.

Quelle: opennet.ru

Erwerben Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster