Инженер Джон Наглдын аты менен аталган Нагле алгоритми TCP тиркемелериндеги кичинекей пакет көйгөйлөрүнөн улам келип чыккан түйүндөрдүн тыгынын азайтуу үчүн иштелип чыккан. UNIX ишке ашыруулары 1980-жылдары Nagle алгоритмин колдоно баштаган жана ал бүгүнкү күндө TCP стандарттык өзгөчөлүгү бойдон калууда.
Нагле алгоритми кантип иштейт
Nagle алгоритми TCP колдонмолорунун жөнөтүүчү тарабындагы маалыматтарды nagling деп аталган ыкма менен иштетет. Ал кичинекей көлөмдөгү билдирүүлөрдү аныктайт жана маалыматтарды зым аркылуу жөнөтүүдөн мурун ошол билдирүүлөрдү чоңураак TCP пакеттерине топтойт. Бул процесс керексиз көп сандагы кичинекей пакеттердин пайда болушунан сактайт.
Нагле алгоритминин техникалык спецификациясы 1984-жылы RFC 896 катары жарыяланган. Канча маалымат топтоо жана жөнөтүүлөрдүн ортосунда канча убакыт күтүү чечими анын жалпы иштеши үчүн маанилүү.
Наглингдин пайдасы
Nagling кечигүүлөрдү же кечиктирүүлөрдү кошуунун эсебинен тармак туташуунун өткөрүү жөндөмдүүлүгүн натыйжалуу колдоно алат. RFC 896 сүрөттөлгөн мисал потенциалдуу өткөрүү жөндөмдүүлүгүн жана аны түзүүнүн себебин көрсөтөт:
- Эгер баскычтоптун баскычтарын токтоткон TCP колдонмосу ар бир терилип жаткан символду кабыл алуучуга билдиргиси келсе, ал ар биринде 1 байт маалыматтарды камтыган бир катар билдирүүлөрдү жаратышы мүмкүн.
- Бул билдирүүлөр тармак аркылуу жөнөтүлүүдөн мурун, алардын ар бири TCP/IP талап кылган TCP баш маалыматы менен пакеттелиши керек. Ар бир аталыштын өлчөмү 20 жана 60 байт арасында болот.
- Эгерде айтпастан, бул мисал колдонмо 95 пайыз же андан көп баш маалыматтан (21 байттын кеминде 20су) жана жөнөтүүчүнүн клавиатурасынан 5 пайыз же андан аз реалдуу маалыматтан турган тармак билдирүүлөрүн жаратат. Nagle алгоритмин колдонуу менен, бир эле дайындар азыраак билдирүүлөр менен жеткирилип, өткөрүү жөндөмдүүлүгү чоң үнөмдөлөт.
Тиркемелер TCP_NODELA розетка программалоо опциясы менен Nagle алгоритмин колдонууну көзөмөлдөйт. Windows, Linux жана Java системалары демейки боюнча Nagleди иштетет. Ошондуктан, ал чөйрөлөр үчүн жазылган колдонмолор алгоритмди өчүрүү үчүн TCP_NODELAY көрсөтүүсү керек.
Чектөөлөр
Нагле иштетилгенде, видео чалуулар жана онлайн оюндар сыяктуу тез тармактык жоопту талап кылган колдонмолор жакшы иштебей калышы мүмкүн. Алгоритмге маалыматтардын майда бөлүктөрүн чогултуу үчүн кошумча убакыт талап кылынгандагы кечигүүлөр экранда же санарип аудио агымында визуалдык түрдө байкаларлык артта калууларды жаратышы мүмкүн. Мындай колдонмолор адатта Nagleди өчүрөт.
Бул алгоритм башында компьютердик тармактар азыркыга караганда азыраак өткөрүү жөндөмдүүлүгүн колдогон учурда иштелип чыккан. Жогоруда сүрөттөлгөн мисал 1980-жылдардын башында Джон Наглдын Ford Aerospace компаниясында башынан өткөргөн тажрыйбасына негизделген, мында Форддун жай, оор жүктөлгөн, алыскы аралыктагы тармагына каршы келишпестиктер жакшы мааниге ээ болгон. Бүгүнкү күндө анын алгоритминен тармактык колдонмолор пайда ала турган жагдайлар барган сайын азайып баратат.
Нагле алгоритмин TCP менен гана колдонууга болот. UDP сыяктуу башка протоколдор аны колдоого албайт.