Алгарытм Нэйгл, названы ў гонар інжынера Джона Нэгла, быў распрацаваны , каб паменшыць перагрузку сеткі , выкліканую "невялікія праблемы пакетаў» з TCP прыкладаннямі . UNIX Рэалізацыі пачалі выкарыстоўваць алгарытм НЭК ў 1980 - х гадах, і яна застаецца стандартнай функцыяй TCP сёння.
Як алгарытм працы Нэгла
Алгарытм Нэйгла апрацоўвае дадзеныя на які перадае боку ПТС - прыкладанняў з дапамогай метаду , званага nagling. Ён выяўляе малагабарытныя паведамленні і назапашвае іх у больш буйныя пакеты TCP перад перадачай дадзеных па правадах, пазбягаючы тым самым генерацыю залішне вялікай колькасці маленькіх пакетаў. Тэхнічная спецыфікацыя для алгарытму НЭК была апублікавана ў 1984 годзе ў якасці RFC 896. Рашэнні для вялікай колькасці дадзеных для назапашвання і як доўга чакаць паміж пасылаюць маюць вырашальнае значэнне для агульнай прадукцыйнасці.
Nagling можа больш эфектыўна выкарыстоўваць прапускную здольнасць сеткавага злучэння за кошт дадання затрымак ( латэнтнасьць ). Прыклад, апісаны ў RFC 896 ілюструе патэнцыйныя перавагі прапускной здольнасці і прычыну яго стварэння:
- Дадатак TCP , які перахоплівае націску клавіш клавіятуры і хоча мець зносіны кожны знак, што ўводзіцца ў прыёмнік, можа генераваць серыю паведамленняў кожны з якіх змяшчае 1 байт дадзеных.
- Перад тым як гэтыя паведамленні могуць быць перададзены па сетцы, кожны з іх павінны быць спакаваныя разам з загалоўкам TCP інфармацыі ў адпаведнасці з патрабаваннямі пратаколу TCP / IP. Кожны загаловак вагаецца ў памеры ад 20 да 60 байт.
- Без nagling, гэты прыклад дадатак будзе генераваць сеткавыя паведамлення, якія складаюцца з 95% або больш інфармацыі загалоўка (прынамсі, 20 з 21 байт) і 5% ці менш фактычных дадзеных ад клавіятуры адпраўніка. Выкарыстанне алгарытму Nagle, адны і тыя ж дадзеныя, а не могуць быць дастаўлены з выкарыстаннем шматлікіх менш паведамленняў і маюць 95% інфармацыі клавіятуры кантэнту з'яўляецца - вельмі вялікі эканомія прапускной здольнасці.
Прыкладання кантралююць іх выкарыстанне алгарытму нахабная з TCP_NODELAY сокета опцыі праграмавання. сістэмы Windows, Linux і Java ўсё нармальна ўключыць Нэгла па змаўчанні, так што прыкладанні, напісаныя для гэтых асяроддзяў неабходна ўказаць TCP_NODELAY пры жаданні пераключыць алгарытм выключэння.
абмежаванні
Алгарытм Нэйгла выкарыстоўваецца толькі з TCP. Іншыя пратаколы , уключаючы UDP не падтрымліваюць яго.
TCP прыкладанняў , якія патрабуюць хуткага рэагавання сеткі, як Інтэрнэт тэлефон выкліку або шутэр ад першай асобы гульні, не можа добра працаваць , калі Нэйгл ўключана. Затрымкі выкліканыя ў той час як алгарытм патрабуе дадатковага часу , каб сабраць дробныя кавалкі дадзеных разам можа выклікаць прыкметнае адставанне візуальна на экране або ў лічбавым гукавым струмені. Гэтыя прыкладання, як правіла, адключыць Нэгла.
Гэты алгарытм быў першапачаткова распрацаваны ў той час, калі кампутарныя сеткі падтрымліваецца значна меншую прапускную здольнасць, чым сёння. Прыклад, апісаны вышэй, быў заснаваны на вопыце Джона Нэйгла на Форд Аэроспейс ў пачатку 1980-х гадоў, дзе nagling кампрамісы па іх павольна, цяжка нагружаны міжгародняй сеткі са здаровага сэнсу. Ёсць усё менш сітуацый, калі сеткавыя прыкладання могуць атрымаць выгаду з свайго алгарытму сёння.