TCP का गुप्त हथियार: नेटवर्क फ्लो कंट्रोल और नेटवर्क कंजेशन कंट्रोल

टीसीपी विश्वसनीयता परिवहन
हम सभी टीसीपी प्रोटोकॉल को एक विश्वसनीय परिवहन प्रोटोकॉल के रूप में जानते हैं, लेकिन यह परिवहन की विश्वसनीयता कैसे सुनिश्चित करता है?

विश्वसनीय संचरण सुनिश्चित करने के लिए, डेटा संक्षारण, हानि, दोहराव और अव्यवस्थित शार्ड जैसी कई समस्याओं पर विचार करना आवश्यक है। यदि इन समस्याओं का समाधान नहीं किया जा सकता है, तो विश्वसनीय संचरण संभव नहीं है।

इसलिए, टीसीपी विश्वसनीय ट्रांसमिशन प्राप्त करने के लिए अनुक्रम संख्या, पावती उत्तर, पुनः प्रेषण नियंत्रण, कनेक्शन प्रबंधन और विंडो नियंत्रण जैसे तंत्रों का उपयोग करता है।

इस शोधपत्र में हम टीसीपी के स्लाइडिंग विंडो, फ्लो कंट्रोल और कंजेशन कंट्रोल पर ध्यान केंद्रित करेंगे। रिट्रांसमिशन तंत्र को अगले खंड में अलग से समझाया जाएगा।

नेटवर्क प्रवाह नियंत्रण
नेटवर्क फ्लो कंट्रोल, जिसे नेटवर्क ट्रैफिक कंट्रोल भी कहा जाता है, वास्तव में प्रोड्यूसर और कंज्यूमर के बीच के सूक्ष्म संबंध का एक उदाहरण है। आपने शायद काम पर या इंटरव्यू में इस तरह की स्थिति का सामना कई बार किया होगा। यदि प्रोड्यूसर की उत्पादन क्षमता कंज्यूमर की उपभोग क्षमता से बहुत अधिक हो जाती है, तो इससे कतार अनिश्चित काल तक बढ़ती रहेगी। एक अधिक गंभीर मामले में, आप जानते होंगे कि जब RabbitMQ संदेश बहुत अधिक जमा हो जाते हैं, तो इससे पूरे MQ सर्वर के प्रदर्शन में गिरावट आ सकती है। TCP के मामले में भी यही सच है; यदि इसे अनियंत्रित छोड़ दिया जाए, तो नेटवर्क में बहुत अधिक संदेश भेज दिए जाएंगे, जिससे कंज्यूमर अपनी क्षमता से अधिक हो जाएंगे, जबकि प्रोड्यूसर डुप्लिकेट संदेश भेजते रहेंगे, जो नेटवर्क के प्रदर्शन को बुरी तरह प्रभावित करेगा।

इस समस्या से निपटने के लिए, TCP प्रेषक को प्राप्तकर्ता की वास्तविक ग्रहण क्षमता के आधार पर भेजे गए डेटा की मात्रा को नियंत्रित करने की सुविधा प्रदान करता है, जिसे प्रवाह नियंत्रण कहा जाता है। प्राप्तकर्ता एक प्राप्ति विंडो बनाए रखता है, जबकि प्रेषक एक प्रेषण विंडो बनाए रखता है। यह ध्यान रखना महत्वपूर्ण है कि ये विंडो केवल एक TCP कनेक्शन के लिए होती हैं और सभी कनेक्शन एक ही विंडो साझा नहीं करते हैं।

TCP, रिसीव विंडो के लिए एक वेरिएबल का उपयोग करके फ्लो कंट्रोल प्रदान करता है। रिसीव विंडो से सेंडर को यह जानकारी मिलती है कि कैश में कितनी जगह उपलब्ध है। सेंडर, रिसीवर की वास्तविक स्वीकृति क्षमता के अनुसार भेजे जाने वाले डेटा की मात्रा को नियंत्रित करता है।

प्राप्तकर्ता होस्ट, प्रेषक को उस डेटा के आकार के बारे में सूचित करता है जिसे वह प्राप्त कर सकता है, और प्रेषक इस सीमा तक डेटा भेजता है। यह सीमा विंडो का आकार है, क्या आपको TCP हेडर याद है? इसमें एक रिसीव विंडो फ़ील्ड होता है, जिसका उपयोग यह इंगित करने के लिए किया जाता है कि प्राप्तकर्ता कितने बाइट्स प्राप्त करने में सक्षम या इच्छुक है।

प्रेषक होस्ट समय-समय पर एक विंडो प्रोब पैकेट भेजेगा, जिसका उपयोग यह पता लगाने के लिए किया जाता है कि प्राप्तकर्ता होस्ट अभी भी डेटा स्वीकार करने में सक्षम है या नहीं। जब प्राप्तकर्ता का बफर ओवरफ्लो होने के खतरे में होता है, तो विंडो का आकार कम कर दिया जाता है ताकि प्रेषक को भेजे जाने वाले डेटा की मात्रा को नियंत्रित करने का निर्देश दिया जा सके।

यहां नेटवर्क फ्लो कंट्रोल का आरेख दिया गया है:

तट्राफिक कंट्रोल

नेटवर्क भीड़ नियंत्रण
कंजेशन कंट्रोल को समझने से पहले, यह जानना ज़रूरी है कि रिसीव विंडो और सेंड विंडो के अलावा एक कंजेशन विंडो भी होती है। इसका मुख्य उद्देश्य यह तय करना है कि सेंडर किस दर से रिसीव विंडो पर डेटा भेजना शुरू करे। इसलिए, TCP सेंडर द्वारा कंजेशन विंडो को भी मैनेज किया जाता है। हमें यह तय करने के लिए एक एल्गोरिदम की आवश्यकता होती है कि कितना डेटा भेजना उचित है, क्योंकि बहुत कम या बहुत अधिक डेटा भेजना आदर्श स्थिति नहीं है, इसीलिए कंजेशन विंडो की अवधारणा है।

पिछले नेटवर्क फ्लो कंट्रोल में, हमने प्रेषक द्वारा प्राप्तकर्ता के कैश को डेटा से भरने से तो बचा लिया था, लेकिन हमें नेटवर्क में क्या हो रहा है, इसकी जानकारी नहीं थी। आमतौर पर, कंप्यूटर नेटवर्क एक साझा वातावरण में होते हैं। परिणामस्वरूप, अन्य होस्टों के बीच संचार के कारण नेटवर्क में भीड़भाड़ हो सकती है।

नेटवर्क पर अत्यधिक भीड़ होने पर, यदि बड़ी संख्या में पैकेट लगातार भेजे जाते हैं, तो इससे विलंब और पैकेट हानि जैसी समस्याएं उत्पन्न हो सकती हैं। ऐसी स्थिति में, TCP डेटा को पुनः प्रेषित करता है, लेकिन पुनः प्रेषण से नेटवर्क पर भार बढ़ जाता है, जिसके परिणामस्वरूप विलंब और पैकेट हानि की संख्या में वृद्धि होती है। यह एक दुष्चक्र में तब्दील हो सकता है और समस्या बढ़ती ही जाती है।

इसलिए, TCP नेटवर्क पर होने वाली घटनाओं को अनदेखा नहीं कर सकता। जब नेटवर्क में भीड़भाड़ होती है, तो TCP भेजे जाने वाले डेटा की मात्रा कम करके खुद को जोखिम में डालता है।

इसलिए, कंजेशन कंट्रोल का प्रस्ताव रखा गया है, जिसका उद्देश्य प्रेषक से आने वाले डेटा से पूरे नेटवर्क को भरने से रोकना है। प्रेषक द्वारा भेजे जाने वाले डेटा की मात्रा को नियंत्रित करने के लिए, TCP कंजेशन विंडो नामक एक अवधारणा को परिभाषित करता है। कंजेशन कंट्रोल एल्गोरिदम नेटवर्क में कंजेशन की मात्रा के अनुसार कंजेशन विंडो के आकार को समायोजित करेगा, ताकि प्रेषक द्वारा भेजे गए डेटा की मात्रा को नियंत्रित किया जा सके।

कंजेशन विंडो क्या है? इसका सेंड विंडो से क्या संबंध है?

कंजेशन विंडो एक स्टेट वेरिएबल है जिसे सेंडर द्वारा बनाए रखा जाता है और यह निर्धारित करता है कि सेंडर कितना डेटा भेज सकता है। नेटवर्क के कंजेशन स्तर के अनुसार कंजेशन विंडो गतिशील रूप से बदलती रहती है।

सेंडिंग विंडो प्रेषक और प्राप्तकर्ता के बीच तय की गई एक निश्चित विंडो साइज़ होती है, जो यह दर्शाती है कि प्राप्तकर्ता कितना डेटा प्राप्त कर सकता है। कंजेशन विंडो और सेंडिंग विंडो आपस में संबंधित हैं; सेंडिंग विंडो आमतौर पर कंजेशन और रिसीविंग विंडो के न्यूनतम मान के बराबर होती है, यानी swnd = min(cwnd, rwnd)।

कंजेशन विंडो cwnd में निम्नलिखित परिवर्तन होते हैं:

यदि नेटवर्क में कोई भीड़भाड़ नहीं है, यानी कोई रीट्रांसमिशन टाइमआउट नहीं होता है, तो भीड़भाड़ की अवधि बढ़ जाती है।

यदि नेटवर्क में भीड़भाड़ है, तो भीड़भाड़ की अवधि कम हो जाती है।

प्रेषक यह निर्धारित करता है कि नेटवर्क जाम है या नहीं, इसके लिए वह यह देखता है कि ACK पावती पैकेट निर्धारित समय के भीतर प्राप्त हुआ है या नहीं। यदि प्रेषक को निर्धारित समय के भीतर ACK पावती पैकेट प्राप्त नहीं होता है, तो नेटवर्क को जाम माना जाता है।

कंजेशन विंडो के अलावा, अब टीसीपी कंजेशन कंट्रोल एल्गोरिदम पर चर्चा करने का समय है। टीसीपी कंजेशन कंट्रोल एल्गोरिदम के तीन मुख्य भाग हैं:

धीमी शुरुआत:प्रारंभ में, cwnd कंजेशन विंडो अपेक्षाकृत छोटी होती है, और प्रेषक नेटवर्क की क्षमता के अनुकूल होने के लिए कंजेशन विंडो को तेजी से बढ़ाता है।
भीड़ को परिहार:जब कंजेशन विंडो एक निश्चित सीमा से अधिक हो जाती है, तो प्रेषक कंजेशन विंडो की वृद्धि दर को धीमा करने और नेटवर्क को ओवरलोड होने से बचाने के लिए इसे रैखिक तरीके से बढ़ाता है।
तेजी से पुनःप्राप्ति:यदि नेटवर्क में भीड़भाड़ होती है, तो प्रेषक भीड़भाड़ की अवधि को आधा कर देता है और प्राप्त डुप्लिकेट स्वीकृति के माध्यम से नेटवर्क रिकवरी के स्थान का पता लगाने के लिए तीव्र रिकवरी स्थिति में प्रवेश करता है, और फिर भीड़भाड़ की अवधि को बढ़ाना जारी रखता है।

धीमी शुरुआत
जब कोई TCP कनेक्शन स्थापित होता है, तो कंजेशन विंडो (cwnd) को शुरू में न्यूनतम MSS (अधिकतम सेगमेंट आकार) मान पर सेट किया जाता है। इस तरह, प्रारंभिक भेजने की दर लगभग MSS/RTT बाइट्स/सेकंड होती है। वास्तविक उपलब्ध बैंडविड्थ आमतौर पर MSS/RTT से कहीं अधिक होती है, इसलिए TCP इष्टतम भेजने की दर ज्ञात करना चाहता है, जिसे स्लो-स्टार्ट तकनीक के माध्यम से प्राप्त किया जा सकता है।

स्लो-स्टार्ट प्रक्रिया में, कंजेशन विंडो (cwnd) का मान 1 MSS से शुरू किया जाता है, और हर बार जब प्रेषित पैकेट सेगमेंट की स्वीकृति मिलती है, तो cwnd का मान एक MSS से बढ़ जाता है, यानी cwnd का मान 2 MSS हो जाता है। इसके बाद, प्रत्येक सफल पैकेट सेगमेंट के संचरण के लिए cwnd का मान दोगुना हो जाता है, और यह प्रक्रिया आगे भी जारी रहती है। विशिष्ट वृद्धि प्रक्रिया को निम्नलिखित चित्र में दर्शाया गया है।

 नेटवर्क भीड़ नियंत्रण

हालांकि, भेजने की दर हमेशा नहीं बढ़ सकती; यह वृद्धि कभी न कभी तो रुकती ही है। तो, भेजने की दर में वृद्धि कब रुकती है? धीमी शुरुआत आमतौर पर कई तरीकों में से किसी एक तरीके से भेजने की दर में वृद्धि को रोकती है:

पहला तरीका स्लो स्टार्ट प्रक्रिया के दौरान पैकेट लॉस की स्थिति है। पैकेट लॉस होने पर, TCP सेंडर के कंजेशन विंडो cwnd को 1 पर सेट कर देता है और स्लो स्टार्ट प्रक्रिया को पुनः आरंभ करता है। इस बिंदु पर, स्लो स्टार्ट थ्रेशोल्ड ssthresh की अवधारणा सामने आती है, जिसका प्रारंभिक मान पैकेट लॉस उत्पन्न करने वाले cwnd के मान का आधा होता है। यानी, जब कंजेशन का पता चलता है, तो ssthresh का मान विंडो मान का आधा होता है।

दूसरा तरीका है स्लो-स्टार्ट थ्रेशोल्ड ssthresh के मान से सीधा संबंध स्थापित करना। चूंकि कंजेशन का पता चलने पर ssthresh का मान विंडो मान का आधा होता है, इसलिए cwnd का मान ssthresh से अधिक होने पर प्रत्येक बार दोगुना होने पर पैकेट हानि हो सकती है। इसलिए, cwnd को ssthresh के बराबर सेट करना सबसे अच्छा है, जिससे TCP कंजेशन कंट्रोल मोड में चला जाएगा और स्लो-स्टार्ट समाप्त हो जाएगा।

स्लो स्टार्ट के समाप्त होने का अंतिम तरीका यह है कि यदि तीन अनावश्यक ACK का पता चलता है, तो TCP तेजी से पुनः ट्रांसमिशन करता है और रिकवरी स्थिति में प्रवेश करता है। (यदि यह स्पष्ट नहीं है कि तीन ACK पैकेट क्यों हैं, तो इसे पुनः ट्रांसमिशन तंत्र में अलग से समझाया जाएगा।)

भीड़ को परिहार
जब TCP कंजेशन कंट्रोल स्टेट में प्रवेश करता है, तो cwnd को कंजेशन थ्रेशोल्ड ssthresh के आधे पर सेट किया जाता है। इसका मतलब है कि पैकेट सेगमेंट प्राप्त होने पर cwnd का मान हर बार दोगुना नहीं हो सकता। इसके बजाय, एक अपेक्षाकृत रूढ़िवादी दृष्टिकोण अपनाया जाता है जिसमें प्रत्येक ट्रांसमिशन पूरा होने के बाद cwnd का मान केवल एक MSS (अधिकतम पैकेट सेगमेंट लंबाई) से बढ़ाया जाता है। उदाहरण के लिए, यदि 10 पैकेट सेगमेंट की स्वीकृति भी मिल जाती है, तो cwnd का मान केवल एक MSS से बढ़ेगा। यह एक रैखिक वृद्धि मॉडल है और इसकी वृद्धि पर एक ऊपरी सीमा भी है। पैकेट हानि होने पर, cwnd का मान MSS में बदल दिया जाता है, और ssthresh का मान cwnd के आधे पर सेट किया जाता है। या फिर, 3 रिडंडेंट ACK प्रतिक्रियाएँ प्राप्त होने पर MSS की वृद्धि रोक दी जाती है। यदि cwnd का मान आधा करने के बाद भी तीन रिडंडेंट ACK प्राप्त होते हैं, तो ssthresh का मान cwnd के आधे के रूप में दर्ज किया जाता है और फास्ट रिकवरी स्टेट में प्रवेश किया जाता है।

तेजी से पुनःप्राप्ति
फास्ट रिकवरी स्थिति में, प्राप्त प्रत्येक अतिरिक्त ACK (यानी, अनुक्रम में न आने वाले ACK) के लिए कंजेशन विंडो cwnd का मान एक MSS से बढ़ा दिया जाता है। इसका उद्देश्य नेटवर्क में सफलतापूर्वक प्रेषित पैकेट सेगमेंट का अधिकतम उपयोग करके ट्रांसमिशन दक्षता को यथासंभव बेहतर बनाना है।

खोए हुए पैकेट सेगमेंट की स्वीकृति मिलने पर, TCP cwnd का मान घटा देता है और फिर कंजेशन अवॉइडेंस स्टेट में प्रवेश कर जाता है। इसका उद्देश्य कंजेशन विंडो के आकार को नियंत्रित करना और नेटवर्क कंजेशन को और बढ़ने से रोकना है।

यदि कंजेशन कंट्रोल स्टेट के बाद टाइमआउट हो जाता है, तो नेटवर्क की स्थिति और गंभीर हो जाती है और TCP कंजेशन अवॉइडेंस स्टेट से स्लो-स्टार्ट स्टेट में चला जाता है। इस स्थिति में, कंजेशन विंडो cwnd का मान 1 MSS (पैकेट सेगमेंट की अधिकतम लंबाई) पर सेट किया जाता है, और स्लो-स्टार्ट थ्रेशोल्ड ssthresh का मान cwnd के आधे पर सेट किया जाता है। इसका उद्देश्य नेटवर्क के सामान्य होने के बाद कंजेशन विंडो के आकार को धीरे-धीरे बढ़ाकर ट्रांसमिशन दर और नेटवर्क कंजेशन के स्तर को संतुलित करना है।

सारांश
एक विश्वसनीय परिवहन प्रोटोकॉल के रूप में, TCP अनुक्रम संख्या, स्वीकृति, पुनः प्रेषण नियंत्रण, कनेक्शन प्रबंधन और विंडो नियंत्रण द्वारा विश्वसनीय परिवहन को लागू करता है। इनमें से, प्रवाह नियंत्रण तंत्र प्रेषक द्वारा भेजे गए डेटा की मात्रा को प्राप्तकर्ता की वास्तविक प्राप्ति क्षमता के अनुसार नियंत्रित करता है, जिससे नेटवर्क संचलन और प्रदर्शन में गिरावट जैसी समस्याओं से बचा जा सकता है। संचलन नियंत्रण तंत्र प्रेषक द्वारा भेजे गए डेटा की मात्रा को समायोजित करके नेटवर्क संचलन की स्थिति को रोकता है। संचलन विंडो और प्रेषण विंडो की अवधारणाएँ एक दूसरे से संबंधित हैं, और संचलन विंडो के आकार को गतिशील रूप से समायोजित करके प्रेषक पर डेटा की मात्रा को नियंत्रित किया जाता है। स्लो स्टार्ट, संचलन से बचाव और तीव्र पुनर्प्राप्ति TCP संचलन नियंत्रण एल्गोरिदम के तीन मुख्य भाग हैं, जो नेटवर्क की क्षमता और संचलन की मात्रा के अनुकूल होने के लिए विभिन्न रणनीतियों के माध्यम से संचलन विंडो के आकार को समायोजित करते हैं।

अगले भाग में, हम TCP के रीट्रांसमिशन तंत्र का विस्तारपूर्वक अध्ययन करेंगे। विश्वसनीय ट्रांसमिशन सुनिश्चित करने के लिए रीट्रांसमिशन तंत्र TCP का एक महत्वपूर्ण हिस्सा है। यह खोए हुए, दूषित या विलंबित डेटा को पुनः प्रेषित करके डेटा के विश्वसनीय ट्रांसमिशन को सुनिश्चित करता है। रीट्रांसमिशन तंत्र के कार्यान्वयन सिद्धांत और रणनीति का अगले भाग में विस्तारपूर्वक परिचय और विश्लेषण किया जाएगा। जुड़े रहें!


पोस्ट करने का समय: 24 फरवरी 2025