Що таке алгоритм Нейгла в Linux TCP?

Алгоритм Нейгла є засіб підвищення ефективності мереж TCP/IP за рахунок зменшення кількості пакетів, які необхідно надіслати через мережу. Він був визначений Джоном Нейглом під час роботи в Ford Aerospace.

Алгоритм Нейгла, визначений у RFC896, є механізм контролю перевантаження, призначений для об’єднання невеликих фрагментів даних для доставки в один великий пакет. Алгоритм Нейгла — це оптимізація TCP, яка змушує стек чекати, доки всі дані не будуть підтверджені під час з’єднання, перш ніж надсилати додаткові дані.

Алгоритм Нейгла є техніка, яка використовується для підвищення ефективності мережі шляхом зменшення кількості малих пакетів, які надсилаються через мережу. Алгоритм працює шляхом затримки передачі невеликих пакетів, доки не буде накопичено певну кількість даних.

Цей алгоритм працює, об’єднуючи кілька невеликих мережевих пакетів і надсилаючи їх усі одночасно, і він вводить затримку до 300 мс, перш ніж пакет буде надіслано через мережу. Вимкнення цього алгоритму зменшить загальну затримку мережі.

Щоб вимкнути алгоритм буферизації Nagle, використовуйте опцію сокета TCP_NODELAY. Щоб вимкнути відкладені ACK, використовуйте опцію сокета TCP_QUICKACK. Увімкнення параметра TCP_NODELAY вимикає алгоритм Нейгла.

Використовуються такі алгоритми: повільний старт, уникнення перевантаження, швидка повторна передача та швидке відновлення. З’єднання TCP завжди використовує один із цих чотирьох алгоритмів протягом усього терміну служби з’єднання. Після встановлення TCP-з'єднання початковим алгоритмом перевантаження є алгоритм повільного запуску.