Նագլի ալգորիթմը, որն անվանվել է ինժեներ Ջոն Նագլի պատվին, նախագծված է նվազեցնելու ցանցի գերբեռնվածությունը, որը առաջանում է TCP հավելվածների հետ կապված փոքր փաթեթների խնդիրների պատճառով: UNIX-ի իրականացումները սկսեցին օգտագործել Nagle ալգորիթմը 1980-ականներին, և այն այսօր մնում է TCP-ի ստանդարտ հատկանիշ:
Ինչպես է աշխատում Nagle ալգորիթմը
Նագլի ալգորիթմը մշակում է TCP հավելվածների ուղարկող կողմի տվյալները՝ Nagling կոչվող մեթոդով: Այն հայտնաբերում է փոքր չափի հաղորդագրությունները և կուտակում է այդ հաղորդագրությունները ավելի մեծ TCP փաթեթներում, նախքան տվյալներ ուղարկելը լարով: Այս գործընթացը խուսափում է անհարկի մեծ քանակությամբ փոքր փաթեթների առաջացումից:
Նագլի ալգորիթմի տեխնիկական բնութագրերը հրապարակվել են 1984 թվականին որպես RFC 896: Որոշումները, թե որքան տվյալներ պետք է կուտակվեն և որքան ժամանակ սպասեն ուղարկումների միջև, կարևոր են դրա ընդհանուր կատարողականի համար:
Նագլինգի օգուտները
Nagling-ը կարող է արդյունավետորեն օգտագործել ցանցային կապի թողունակությունը՝ հաշվի առնելով ուշացումները կամ ուշացումները: RFC 896-ում նկարագրված օրինակը ցույց է տալիս թողունակության պոտենցիալ առավելությունները և դրա ստեղծման պատճառը:
- Եթե ստեղնաշարի ստեղնաշարերը ընդհատող TCP հավելվածը ցանկանում է մուտքագրվող յուրաքանչյուր նիշը փոխանցել ստացողին, այն կարող է ստեղծել մի շարք հաղորդագրություններ, որոնցից յուրաքանչյուրը պարունակում է 1 բայթ տվյալ:
- Նախքան այս հաղորդագրությունները ցանցով ուղարկելը, յուրաքանչյուրը պետք է փաթեթավորված լինի TCP վերնագրի տեղեկատվությամբ, ինչպես պահանջվում է TCP/IP-ի կողմից: Յուրաքանչյուր վերնագրի չափը տատանվում է 20-ից 60 բայթ:
- Առանց շփոթվելու, այս օրինակ հավելվածը կստեղծի ցանցային հաղորդագրություններ, որոնք բաղկացած են 95 տոկոս կամ ավելի վերնագրի տեղեկատվությունից (առնվազն 20-ը 21 բայթից) և 5 տոկոս կամ ավելի քիչ իրական տվյալներ ուղարկողի ստեղնաշարից:Օգտագործելով Nagle ալգորիթմը, նույն տվյալները կարող են փոխանցվել ավելի քիչ հաղորդագրությունների միջոցով, ինչը հանգեցնում է թողունակության մեծ խնայողության:
Հավելվածները վերահսկում են Nagle ալգորիթմի օգտագործումը TCP_NODELA վարդակից ծրագրավորման տարբերակով: Windows, Linux և Java համակարգերը սովորաբար միացնում են Nagle-ը լռելյայն: Հետևաբար, այդ միջավայրերի համար գրված հավելվածները պետք է նշեն TCP_NODELAY՝ ալգորիթմն անջատելու համար:
սահմանափակումներ
Հավելվածները, որոնք պահանջում են արագ ցանցային արձագանք, օրինակ՝ տեսազանգերը և առցանց խաղերը, կարող են լավ չաշխատել, երբ Nagle-ը միացված է: Այն ձգձգումները, որոնք առաջանում են, մինչ ալգորիթմը լրացուցիչ ժամանակ է պահանջում տվյալների ավելի փոքր կտորներ հավաքելու համար, կարող են նկատելի ուշացում առաջացնել էկրանին կամ թվային աուդիո հոսքում: Նման հավելվածները սովորաբար անջատում են Nagle-ը։
Այս ալգորիթմն ի սկզբանե մշակվել է այն ժամանակ, երբ համակարգչային ցանցերն աջակցում էին ավելի քիչ թողունակություն, քան այսօր:Վերևում նկարագրված օրինակը հիմնված էր Ջոն Նագլի փորձառությունների վրա 1980-ականների սկզբին Ford Aerospace-ում, որտեղ անհասկանալի փոխզիջումները Ford-ի դանդաղ, ծանր բեռնված, միջքաղաքային ցանցի վրա լավ իմաստալից էին: Այսօր ավելի ու ավելի քիչ իրավիճակներ են լինում, երբ ցանցային հավելվածները կարող են օգտվել նրա ալգորիթմից:
Նագլի ալգորիթմը կարող է օգտագործվել միայն TCP-ով: Այլ արձանագրություններ, ինչպիսիք են UDP-ն, չեն աջակցում այն: