इंजीनियर जॉन नागले के नाम पर नागल एल्गोरिथम को टीसीपी अनुप्रयोगों के साथ छोटे पैकेट समस्याओं के कारण नेटवर्क की भीड़ को कम करने के लिए डिज़ाइन किया गया था। UNIX कार्यान्वयन ने 1980 के दशक में नागल एल्गोरिथम का उपयोग करना शुरू किया, और यह आज भी TCP की एक मानक विशेषता बनी हुई है।
नाग एल्गोरिथम कैसे काम करता है
नागल एल्गोरिथ्म टीसीपी अनुप्रयोगों के भेजने वाले पक्ष पर डेटा को नागलिंग नामक विधि द्वारा संसाधित करता है। यह छोटे आकार के संदेशों का पता लगाता है और पूरे तार में डेटा भेजने से पहले उन संदेशों को बड़े टीसीपी पैकेट में जमा करता है। यह प्रक्रिया अनावश्यक रूप से बड़ी संख्या में छोटे पैकेटों के निर्माण से बचाती है।
नागल एल्गोरिथम के लिए तकनीकी विनिर्देश 1984 में RFC 896 के रूप में प्रकाशित किया गया था। कितना डेटा जमा करना है और कितनी देर तक भेजना है, इसके निर्णय इसके समग्र प्रदर्शन के लिए महत्वपूर्ण हैं।
नागलिंग के लाभ
देरी, या विलंबता जोड़ने की कीमत पर नागलिंग कुशलतापूर्वक नेटवर्क कनेक्शन की बैंडविड्थ का उपयोग कर सकता है। RFC 896 में वर्णित एक उदाहरण संभावित बैंडविड्थ लाभों और इसके निर्माण के कारण को दर्शाता है:
- यदि कोई TCP एप्लिकेशन जो कीबोर्ड कीस्ट्रोक्स को इंटरसेप्ट करता है, टाइप किए जा रहे प्रत्येक वर्ण को एक रिसीवर से संवाद करना चाहता है, तो यह संदेशों की एक श्रृंखला उत्पन्न कर सकता है, प्रत्येक में 1 बाइट डेटा होता है।
- इन संदेशों को पूरे नेटवर्क में भेजने से पहले, प्रत्येक को टीसीपी/आईपी द्वारा आवश्यक टीसीपी हेडर जानकारी के साथ पैक किया जाना चाहिए। प्रत्येक शीर्षलेख का आकार 20 और 60 बाइट्स के बीच होता है।
- बिना किसी परेशानी के, यह उदाहरण एप्लिकेशन 95 प्रतिशत या अधिक हेडर जानकारी (21 बाइट्स में से कम से कम 20) और प्रेषक के कीबोर्ड से 5 प्रतिशत या उससे कम वास्तविक डेटा वाले नेटवर्क संदेश उत्पन्न करेगा। नागल एल्गोरिथम का उपयोग करके, कम संदेशों का उपयोग करके समान डेटा वितरित किया जा सकता है, जिसके परिणामस्वरूप बड़ी बैंडविड्थ बचत होती है।
अनुप्रयोग TCP_NODELA सॉकेट प्रोग्रामिंग विकल्प के साथ नागल एल्गोरिथम के अपने उपयोग को नियंत्रित करते हैं। विंडोज, लिनक्स और जावा सिस्टम सामान्य रूप से नागल को डिफ़ॉल्ट रूप से सक्षम करते हैं। इसलिए, उन परिवेशों के लिए लिखे गए एप्लिकेशन को एल्गोरिदम को बंद करने के लिए TCP_NODELAY निर्दिष्ट करने की आवश्यकता है।
सीमाएं
वीडियो कॉल और ऑनलाइन गेमिंग जैसे तेज़ नेटवर्क प्रतिक्रिया की आवश्यकता वाले एप्लिकेशन, नागले के सक्षम होने पर अच्छी तरह से काम नहीं कर सकते हैं। एल्गोरिथम को डेटा के छोटे हिस्से को इकट्ठा करने में अतिरिक्त समय लगने के कारण होने वाली देरी स्क्रीन पर या डिजिटल ऑडियो स्ट्रीम में ध्यान देने योग्य अंतराल को ट्रिगर कर सकती है। ऐसे एप्लिकेशन आमतौर पर नागले को अक्षम कर देते हैं।
यह एल्गोरिथम मूल रूप से ऐसे समय में विकसित किया गया था जब कंप्यूटर नेटवर्क आज की तुलना में कम बैंडविड्थ का समर्थन करते थे। ऊपर वर्णित उदाहरण 1980 के दशक की शुरुआत में फोर्ड एयरोस्पेस में जॉन नागले के अनुभवों पर आधारित था, जहां फोर्ड के धीमे, भारी-भरकम, लंबी दूरी के नेटवर्क पर परेशान ट्रेडऑफ़ ने अच्छी समझ बनाई। आज ऐसी स्थितियाँ कम होती जा रही हैं जहाँ नेटवर्क अनुप्रयोग उसके एल्गोरिथम से लाभ उठा सकते हैं।
नागल एल्गोरिथ्म केवल टीसीपी के साथ प्रयोग करने योग्य है। अन्य प्रोटोकॉल, जैसे यूडीपी, इसका समर्थन नहीं करते हैं।