എൻജിൻ അൽഗോരിതം എൻജിനീയർ ജോൺ നാഗെൽ എന്ന പേരിൽ നാമകരണം ചെയ്തിരുന്നു, ടിസിപി പ്രയോഗങ്ങളുള്ള "ചെറിയ പാക്കറ്റ് പ്രശ്നങ്ങൾ" കാരണം നെറ്റ്വർക്ക് തിരക്കുമൂലം കുറയ്ക്കുന്നതിന് രൂപകൽപ്പന ചെയ്തിരുന്നു. യുണിക്സ് പ്രവർത്തനങ്ങൾ നാഗേലിന്റെ അൽഗോരിതം ഉപയോഗിച്ച് 1980 കളിൽ ഉപയോഗിച്ചു തുടങ്ങി, ഇന്ന് അത് ടിസിപിയിലെ ഒരു സാധാരണ സവിശേഷതയായി നിലനിൽക്കുന്നു.
നാഗെൽ അൽഗോരിതം എങ്ങനെ പ്രവർത്തിക്കുന്നു
നഗ്ഗിന്റെ അല്ഗോരിഥം നഗ്ലിംഗ് എന്ന് വിളിക്കുന്ന ഒരു രീതിയിലൂടെ TCP പ്രയോഗങ്ങളുടെ അയച്ച ഭാഗത്തെ ഡാറ്റ പ്രോസസ് ചെയ്യുന്നു. അതു ചെറിയ വലിപ്പത്തിലുള്ള സന്ദേശങ്ങൾ കണ്ടുപിടിക്കുകയും വയർ വഴി ഡാറ്റ അയയ്ക്കുന്നതിനുമുമ്പ് അവരെ കൂടുതൽ TCP പാക്കറ്റുകളിൽ കൂട്ടിച്ചേർക്കുകയും അതുവഴി അനാവശ്യമായി ചെറിയ അളവിലുള്ള ചെറിയ പാക്കറ്റുകളുടെ തലമുറയെ ഒഴിവാക്കുകയും ചെയ്യുന്നു. Nagle ന്റെ അൽഗോരിതം എന്ന സാങ്കേതിക സ്പെസിഫിക്കേഷൻ 1984 ൽ RFC 896 ആയി പ്രസിദ്ധീകരിക്കപ്പെട്ടു. വളരെയധികം ഡാറ്റ ശേഖരിക്കാനുള്ള തീരുമാനങ്ങളും അയയ്ക്കാൻ എത്ര സമയം കാത്തിരിക്കണമെന്നതും അതിന്റെ മൊത്തത്തിലുള്ള പ്രകടനത്തിൽ നിർണ്ണായകമാണ്.
കാലതാമസം ( ലേറ്റൻസി ) ചേർക്കുന്നതിൽ ഒരു നെറ്റ് വർക്ക് കണക്ഷന്റെ ബാൻഡ്വിഡ് കൂടുതൽ പ്രയോജനപ്രദമാക്കുന്നു. ആർപിഎഫ് 896 ൽ വിവരിച്ചിരിക്കുന്ന ഒരു ഉദാഹരണം ബാൻഡ്വിത്ത് ബെനഫിറ്റിന്റെ സാധ്യതയും അതിൻറെ സൃഷ്ടിക്ക് കാരണവും:
- കീബോർഡ് കീസ്ട്രോക്കുകളെ തടസ്സപ്പെടുത്തുകയും റിസീവർ ടൈപ്പുചെയ്യുന്ന ഓരോ കഥാപാത്രവും ആശയവിനിമയം ചെയ്യാൻ ആഗ്രഹിക്കുന്ന ഒരു TCP അപ്ലിക്കേഷൻ, ഓരോ ബൈറ്റ് ഡാറ്റയും അടങ്ങിയിരിക്കുന്ന സന്ദേശങ്ങളുടെ ഒരു പരമ്പര സൃഷ്ടിക്കാൻ കഴിയും.
- ഈ സന്ദേശങ്ങൾ നെറ്റ്വർക്കിലേക്ക് അയയ്ക്കുന്നതിന് മുമ്പ്, അവയെല്ലാം TCP / IP ആവശ്യപ്പെടുന്ന TCP ശീർഷക വിവരങ്ങളുമായി ഒന്നിച്ച് പാക്കേജ് ചെയ്യണം. ഓരോ ഹെഡ്ഡർ 20 നും 60 നും ഇടക്കുള്ള വലുപ്പത്തിലാണ്.
- Nagling കൂടാതെ, ഈ ഉദാഹരണ ആപ്ലിക്കേഷൻ 95% അല്ലെങ്കിൽ അതിൽ കൂടുതൽ ഹെഡ്ഡർ വിവരങ്ങൾ (21 ബൈറ്റുകൾക്ക് 20 പ്രതീകങ്ങൾ) ഉൾക്കൊള്ളുന്ന നെറ്റ്വർക്ക് സന്ദേശങ്ങളും അയയ്ക്കുന്നയാളുടെ കീബോർഡിൽ നിന്ന് 5% അല്ലെങ്കിൽ അതിൽ കുറവായ യഥാർത്ഥ ഡാറ്റയും സൃഷ്ടിക്കും. Nagle അൽഗോരിതം ഉപയോഗിച്ചും, അതേ ഡാറ്റയ്ക്ക് പകരം നിരവധി സന്ദേശങ്ങൾ ഉപയോഗിച്ചും കീബോർഡ് വിവരത്തിന്റെ 95% ഉള്ള ഒരു ഡാറ്റാ - വളരെ വലിയ ബാൻഡ് വിഡ്ത്ത് സേവിംഗ്സ് ഉപയോഗിച്ചും ലഭിക്കും.
എൻജിൻ അൽഗോരിതം ഉപയോഗപ്പെടുത്തുന്നതിനെ TCP_NODELAY സോക്കറ്റ് പ്രോഗ്രാമിംഗ് ഐച്ഛികത്തോടൊപ്പമുള്ള ആപ്ലിക്കേഷനുകൾ നിയന്ത്രിക്കുന്നു. വിൻഡോസ്, ലിനക്സ്, ജാവസ്ക്രിപ്ഷനുകൾ എല്ലാം സാധാരണയായി നാഗ്ളെ സ്വതവേ പ്രവർത്തനക്ഷമമാക്കുന്നു, അതിനാൽ ആ സാഹചര്യങ്ങളിൽ എഴുതപ്പെട്ട ആപ്ലിക്കേഷനുകൾ TCP_NODELAY നെ അൽഗൊരിതം ഓഫ് ചെയ്യാൻ ആഗ്രഹിക്കുന്ന സമയത്ത് വ്യക്തമാക്കേണ്ടതുണ്ട്.
പരിമിതികൾ
നഗ്ഗിന്റെ അൽഗോരിതം TCP- ൽ മാത്രം ഉപയോഗിക്കാൻ കഴിയും. UDP ഉൾപ്പെടെയുള്ള മറ്റ് പ്രോട്ടോക്കോളുകൾ ഇതിന് പിന്തുണയ്ക്കുന്നില്ല.
ഇൻസ്റ്റന്റ് ചെയ്യേണ്ട TCP ആപ്ലിക്കേഷനുകൾ, ഇന്റർനെറ്റ് ഫോൺ കോളിംഗ് അല്ലെങ്കിൽ ആദ്യ വ്യക്തി ഷൂട്ടർ ഗെയിമുകൾ പോലെ, നാഗെൽ പ്രാപ്തമാകുമ്പോൾ നന്നായി പ്രവർത്തിച്ചേക്കില്ല. അൽഗോരിതം ഡാറ്റയുടെ ചെറിയ ഭാഗങ്ങൾ കൂട്ടിച്ചേർക്കാൻ അധിക സമയം എടുക്കുമ്പോൾ ഉണ്ടാകുന്ന കാലതാമസം, ഒരു സ്ക്രീനിൽ അല്ലെങ്കിൽ ഡിജിറ്റൽ ഓഡിയോ സ്ട്രീമിൽ ശ്രദ്ധേയമായ ലാഗ് ദൃശ്യമാകും. ഈ അപ്ലിക്കേഷനുകൾ സാധാരണഗതിയിൽ Nagle അപ്രാപ്തമാക്കുക.
കമ്പ്യൂട്ടർ ശൃംഖലകൾ ഇന്നത്തെ അപേക്ഷിച്ച് വളരെ കുറവുള്ള ബാൻഡ്വിഡ്ത്തിന് പിന്തുണ നൽകിയ സമയത്ത് ഈ അൽഗോരിതം ആദ്യം വികസിപ്പിച്ചത്. 1980-കളുടെ ആരംഭത്തിൽ ഫോർഡ് എയറോസ്പേസിലുള്ള ജോൺ നാഗേലിന്റെ അനുഭവങ്ങളെ അടിസ്ഥാനമാക്കിയുള്ളതാണ് മുകളിൽ പറഞ്ഞ ഉദാഹരണം. മന്ദഗതിയിലുള്ള, ഭാരം കുറഞ്ഞ ലോഡ് ഡിസ്ട്രിബ്യൂട്ടഡ് നെറ്റ്വർക്കിലെ നാഗുകൾക്കിടയിൽ വിസ്മയകരമായ വികാരങ്ങൾ ഉണ്ടാവുകയായിരുന്നു. ഇന്ന് നെറ്റ്വർക്ക് പ്രോഗ്രാമുകൾക്ക് അൽഗൊരിതം മുതൽ പ്രയോജനപ്പെടുത്താൻ കഴിയാത്ത അവസ്ഥകളുണ്ട്.