Job Snijders, renomovaný vývojář OpenBSD, vedoucí jednoho z výborů v IETF (Internet Engineering Task Force), autor 11 RFC týkajících se routování a RPKI a tvůrce IRRd (Internet Routing Registry Daemon), zveřejnil sadu patchů pro OpenBSD, které přidávají nový sysctl parametr „net.inet.tcp.nodelay“ pro deaktivaci Nagleova algoritmu na úrovni celého systému. Tento parametr zbavuje vývojáře aplikací nutnosti nastavovat příznak TCP_NODELAY pro jednotlivé sokety.
Nagleův algoritmus se používá k agregaci drobných zpráv za účelem snížení provozu. Algoritmus pozastavuje zasílání nových TCP segmentů, dokud nedostane potvrzení o přijetí dříve zaslaných dat nebo dokud nenastane timeout. Například bez použití agregace při odesílání 1 bytu je navíc odesláno 40 bytů s TCP a IP hlavičkami paketu, zatímco s použitím Nagleova algoritmu se zprávy, které byly zaslány před příchodem potvrzení od vzdálené strany, hromadí a odesílají jako jeden paket. Vzhledem k optimalizaci „delayed ACK“, která zpožďuje odesílání ACK paketů, signál prostřednictvím potvrzovacích paketů ve skutečnosti nefunguje, a odeslání nahromaděných zpráv se provádí až po vypršení timeoutu.
Snijders se domnívá, že v dnešním prostředí je Nagleův algoritmus, vyvinutý v době, kdy několik uživatelů soupeřilo o šířku pásma 1200 bps, zastaralý a v vysokorychlostních sítích je více škody než užitku. Nedávno podobný názor vyjádřil také Marc Brooker ze společnosti Amazon Web Services (AWS). S argumenty pro vypnutí Nagleova algoritmu ve výchozím nastavení se můžete seznámit v článku zveřejněném před několika dny.
Pro deaktivaci Nagleova algoritmu je k dispozici možnost TCP_NODELAY, která může být nastavena pro jednotlivé síťové sokety. Režim TCP_NODELAY je již dlouho nastaven v mnoha aplikacích OpenBSD, mezi které patří openssh, httpd, iscsid, relayd, bgpd a unwind, a podle názoru Snijderse přišel čas poskytnout možnost jeho aktivace pro všechny TCP sokety na úrovni celého systému. Snijders také navrhuje projednat otázku aktivace TCP_NODELAY ve výchozím nastavení a převedení Nagleova algoritmu do kategorie samostatné volitelné možnosti.
Zdroj: opennet.ru
