TCP चे गुप्त शस्त्र: नेटवर्क फ्लो कंट्रोल आणि नेटवर्क कँजेशन कंट्रोल

TCP विश्वसनीयता वाहतूक
आपण सर्व TCP प्रोटोकॉलला एक विश्वसनीय ट्रान्सपोर्ट प्रोटोकॉल म्हणून ओळखतो, पण तो ट्रान्सपोर्टची विश्वसनीयता कशी सुनिश्चित करतो?

विश्वसनीय प्रसारण साध्य करण्यासाठी, डेटा दूषित होणे, डेटा गमावणे, डेटाची पुनरावृत्ती आणि विस्कळीत शार्ड्स यांसारख्या अनेक घटकांचा विचार करणे आवश्यक आहे. जर या समस्या सोडवता आल्या नाहीत, तर विश्वसनीय प्रसारण साध्य होऊ शकत नाही.

त्यामुळे, विश्वसनीय प्रसारण साध्य करण्यासाठी TCP अनुक्रम क्रमांक, पोचपावती उत्तर, पुनर्प्रेषण नियंत्रण, कनेक्शन व्यवस्थापन आणि विंडो नियंत्रण यांसारख्या यंत्रणांचा वापर करते.

या शोधनिबंधात, आम्ही TCP च्या स्लाइडिंग विंडो, फ्लो कंट्रोल आणि कन्जेशन कंट्रोलवर लक्ष केंद्रित करणार आहोत. रिट्रान्समिशन यंत्रणा पुढील विभागात स्वतंत्रपणे स्पष्ट केली आहे.

नेटवर्क प्रवाह नियंत्रण
नेटवर्क फ्लो कंट्रोल, ज्याला नेटवर्क ट्रॅफिक कंट्रोल असेही म्हणतात, हे खरे तर प्रोड्युसर आणि कन्झ्युमर यांच्यातील सूक्ष्म संबंधांचेच एक प्रकटीकरण आहे. कामाच्या ठिकाणी किंवा मुलाखतींमध्ये तुम्हाला ही परिस्थिती अनेकदा अनुभवायला मिळाली असेल. जर प्रोड्युसरची उत्पादन क्षमता कन्झ्युमरच्या वापर क्षमतेपेक्षा खूप जास्त झाली, तर त्यामुळे रांग (queue) अनिश्चित काळासाठी वाढत जाईल. अधिक गंभीर बाबतीत, तुम्हाला माहीत असेल की जेव्हा RabbitMQ मेसेजेस खूप जास्त साठतात, तेव्हा त्यामुळे संपूर्ण MQ सर्व्हरच्या कार्यक्षमतेत घट होऊ शकते. TCP च्या बाबतीतही हेच खरे आहे; जर यावर नियंत्रण ठेवले नाही, तर नेटवर्कमध्ये खूप जास्त मेसेजेस टाकले जातील आणि कन्झ्युमर त्यांच्या क्षमतेपेक्षा जास्त वापर करतील, तर दुसरीकडे प्रोड्युसर डुप्लिकेट मेसेजेस पाठवत राहतील, ज्यामुळे नेटवर्कच्या कार्यक्षमतेवर मोठा परिणाम होईल.

या समस्येवर उपाय म्हणून, TCP प्रेषकाला प्राप्तकर्त्याच्या प्रत्यक्ष ग्रहण क्षमतेनुसार पाठवल्या जाणाऱ्या डेटाचे प्रमाण नियंत्रित करण्यासाठी एक यंत्रणा प्रदान करते, ज्याला 'फ्लो कंट्रोल' म्हणून ओळखले जाते. प्राप्तकर्ता एक 'रिसीव्ह विंडो' राखतो, तर प्रेषक एक 'सेंड विंडो' राखतो. हे लक्षात घेतले पाहिजे की या विंडोज केवळ एकाच TCP कनेक्शनसाठी असतात आणि सर्व कनेक्शन्स एकच विंडो वापरत नाहीत.

TCP रिसीव्ह विंडोसाठी व्हेरिएबल वापरून फ्लो कंट्रोल प्रदान करते. रिसीव्ह विंडो पाठवणाऱ्याला किती कॅशे स्पेस अजून उपलब्ध आहे याचा संकेत देते. पाठवणारा, प्राप्तकर्त्याच्या प्रत्यक्ष स्वीकार क्षमतेनुसार पाठवल्या जाणाऱ्या डेटाचे प्रमाण नियंत्रित करतो.

प्राप्तकर्ता होस्ट, तो किती डेटा स्वीकारू शकतो याच्या आकाराबद्दल प्रेषकाला सूचित करतो आणि प्रेषक या मर्यादेपर्यंत डेटा पाठवतो. या मर्यादेला 'विंडो साईज' म्हणतात, तुम्हाला TCP हेडर आठवतो का? त्यात एक 'रिसीव्ह विंडो' फील्ड असते, ज्याचा उपयोग प्राप्तकर्ता किती बाइट्स स्वीकारण्यास सक्षम किंवा इच्छुक आहे हे दर्शवण्यासाठी केला जातो.

प्रेषक होस्ट ठराविक कालावधीने एक विंडो प्रोब पॅकेट पाठवतो, ज्याचा उपयोग प्राप्तकर्ता होस्ट अजूनही डेटा स्वीकारण्यास सक्षम आहे की नाही हे तपासण्यासाठी केला जातो. जेव्हा प्राप्तकर्त्याचा बफर ओव्हरफ्लो होण्याचा धोका असतो, तेव्हा पाठवल्या जाणाऱ्या डेटाचे प्रमाण नियंत्रित करण्यासाठी प्रेषकाला सूचना देण्यासाठी विंडोचा आकार लहान केला जातो.

नेटवर्क फ्लो कंट्रोलचा आकृतीबंध येथे दिला आहे:

वाहतूक नियंत्रण

नेटवर्क गर्दी नियंत्रण
गर्दी नियंत्रणाची ओळख करून देण्यापूर्वी, आपल्याला हे समजून घेणे आवश्यक आहे की रिसीव्ह विंडो आणि सेंड विंडो व्यतिरिक्त, एक गर्दी विंडो देखील असते, जी मुख्यत्वे प्रेषक कोणत्या दराने रिसीव्ह विंडोमध्ये डेटा पाठवणे सुरू करतो, ही समस्या सोडवण्यासाठी वापरली जाते. त्यामुळे, गर्दी विंडो देखील TCP प्रेषकाद्वारेच सांभाळली जाते. किती डेटा पाठवणे योग्य आहे हे ठरवण्यासाठी आपल्याला एका अल्गोरिदमची आवश्यकता असते, कारण खूप कमी किंवा खूप जास्त डेटा पाठवणे आदर्श नसते, म्हणूनच गर्दी विंडोची संकल्पना अस्तित्वात आली.

मागील नेटवर्क फ्लो कंट्रोलमध्ये, आपण पाठवणाऱ्याने प्राप्तकर्त्याची कॅशे डेटाने भरणे टाळले होते, परंतु नेटवर्कमध्ये काय घडत आहे हे आपल्याला माहीत नव्हते. सामान्यतः, संगणक नेटवर्क्स एका सामायिक वातावरणात असतात. परिणामी, इतर होस्ट्समधील संवादामुळे नेटवर्कमध्ये गर्दी होऊ शकते.

जेव्हा नेटवर्कवर गर्दी असते, तेव्हा जर मोठ्या संख्येने पॅकेट्स सतत पाठवली जात राहिली, तर त्यामुळे विलंब आणि पॅकेट गहाळ होण्यासारख्या समस्या निर्माण होऊ शकतात. अशा वेळी, TCP डेटा पुन्हा प्रसारित करेल, परंतु या पुनर्प्रसारणामुळे नेटवर्कवरील भार वाढेल, परिणामी अधिक विलंब होईल आणि पॅकेट गहाळ होण्याचे प्रमाण वाढेल. हे एका दुष्टचक्रात अडकू शकते आणि ते वाढतच जाऊ शकते.

त्यामुळे, नेटवर्कवर काय घडत आहे याकडे TCP दुर्लक्ष करू शकत नाही. जेव्हा नेटवर्कवर गर्दी होते, तेव्हा TCP पाठवण्याच्या डेटाचे प्रमाण कमी करून स्वतःचे बलिदान देते.

म्हणून, गर्दी नियंत्रणाचा प्रस्ताव आहे, ज्याचा उद्देश प्रेषकाकडून येणाऱ्या डेटाने संपूर्ण नेटवर्क भरणे टाळणे हा आहे. प्रेषकाने किती डेटा पाठवावा याचे नियमन करण्यासाठी, TCP ने 'गर्दी विंडो' नावाची एक संकल्पना परिभाषित केली आहे. गर्दी नियंत्रण अल्गोरिदम नेटवर्कमधील गर्दीच्या प्रमाणानुसार गर्दी विंडोचा आकार समायोजित करेल, जेणेकरून प्रेषकाने पाठवलेल्या डेटाचे प्रमाण नियंत्रित करता येईल.

कंजेशन विंडो म्हणजे काय? याचा सेंड विंडोशी काय संबंध आहे?

कंजेशन विंडो हे प्रेषकाने सांभाळलेले एक स्टेट व्हेरिएबल आहे, जे प्रेषक किती डेटा पाठवू शकतो हे ठरवते. नेटवर्कमधील गर्दीच्या पातळीनुसार कंजेशन विंडो गतिमानपणे बदलते.

सेंडिंग विंडो ही प्रेषक आणि प्राप्तकर्ता यांच्यात सहमतीने ठरवलेली एक विंडो साईज आहे, जी प्राप्तकर्ता किती डेटा प्राप्त करू शकतो हे दर्शवते. कन्जेशन विंडो आणि सेंडिंग विंडो एकमेकांशी संबंधित आहेत; सेंडिंग विंडो सामान्यतः कन्जेशन आणि रिसिव्हिंग विंडोच्या किमान मूल्याइतकी असते, म्हणजेच, swnd = min(cwnd, rwnd).

कंजेशन विंडो (cwnd) खालीलप्रमाणे बदलते:

नेटवर्कमध्ये गर्दी नसल्यास, म्हणजेच, पुनर्प्रसारण वेळेची मर्यादा (retransmission timeout) येत नसल्यास, गर्दीची मर्यादा (congestion window) वाढते.

नेटवर्कमध्ये गर्दी असल्यास, गर्दीची मर्यादा कमी होते.

निर्दिष्ट वेळेत ACK पोचपावती पॅकेट प्राप्त होते की नाही हे पाहून प्रेषक नेटवर्कवर गर्दी आहे की नाही हे ठरवतो. जर प्रेषकाला निर्दिष्ट वेळेत ACK पोचपावती पॅकेट मिळाले नाही, तर नेटवर्कवर गर्दी आहे असे मानले जाते.

कंजेशन विंडो व्यतिरिक्त, आता TCP कंजेशन कंट्रोल अल्गोरिदमवर चर्चा करण्याची वेळ आली आहे. TCP कंजेशन कंट्रोल अल्गोरिदममध्ये तीन मुख्य भाग असतात:

हळू सुरुवात:सुरुवातीला, 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 (मॅक्सिमम पॅकेट सेगमेंट लेंथ) ने वाढवले ​​जाते. उदाहरणार्थ, जरी १० पॅकेट सेगमेंटना पोचपावती मिळाली, तरी cwnd चे मूल्य फक्त एका MSS ने वाढेल. हे एक रेषीय वाढीचे मॉडेल आहे आणि याच्या वाढीवर एक वरची मर्यादा देखील आहे. जेव्हा पॅकेट लॉस होतो, तेव्हा cwnd चे मूल्य एका MSS मध्ये बदलले जाते आणि ssthresh चे मूल्य cwnd च्या निम्मे सेट केले जाते. किंवा ३ रिडंडंट ACK प्रतिसाद मिळाल्यावर MSS ची वाढ देखील थांबवली जाते. cwnd चे मूल्य निम्मे केल्यानंतरही जर तीन रिडंडंट ACK प्रतिसाद मिळाले, तर ssthresh चे मूल्य cwnd च्या निम्मे म्हणून नोंदवले जाते आणि फास्ट रिकव्हरी स्टेटमध्ये प्रवेश केला जातो.

जलद पुनर्प्राप्ती
फास्ट रिकव्हरी अवस्थेमध्ये, प्राप्त झालेल्या प्रत्येक रिडंडंट ACK साठी (म्हणजेच, क्रमाने न आलेल्या ACK साठी) कंजेशन विंडो cwnd चे मूल्य एका MSS ने वाढवले ​​जाते. नेटवर्कमध्ये यशस्वीरित्या प्रसारित झालेल्या पॅकेट सेगमेंटचा वापर करून ट्रान्समिशनची कार्यक्षमता शक्य तितकी सुधारण्यासाठी हे केले जाते.

जेव्हा गमावलेल्या पॅकेट सेगमेंटचा ACK येतो, तेव्हा TCP 'cwnd' चे मूल्य कमी करते आणि नंतर गर्दी टाळण्याच्या स्थितीत प्रवेश करते. हे गर्दीच्या विंडोचा आकार नियंत्रित करण्यासाठी आणि नेटवर्कमधील गर्दी आणखी वाढणे टाळण्यासाठी केले जाते.

कंजेशन कंट्रोल स्टेटनंतर टाइमआउट झाल्यास, नेटवर्कची स्थिती अधिक गंभीर होते आणि TCP कंजेशन अव्हॉइडन्स स्टेटमधून स्लो-स्टार्ट स्टेटमध्ये स्थलांतरित होते. अशावेळी, कंजेशन विंडो (cwnd) चे मूल्य 1 MSS (मॅक्सिमम पॅकेट सेगमेंट लेंथ) वर सेट केले जाते आणि स्लो-स्टार्ट थ्रेशोल्ड (ssthresh) चे मूल्य cwnd च्या निम्मे केले जाते. नेटवर्क पूर्ववत झाल्यावर ट्रान्समिशन रेट आणि नेटवर्कमधील गर्दीचे प्रमाण यांच्यात संतुलन साधण्यासाठी कंजेशन विंडोचा आकार पुन्हा हळूहळू वाढवणे, हा यामागील उद्देश आहे.

सारांश
एक विश्वसनीय ट्रान्सपोर्ट प्रोटोकॉल म्हणून, TCP अनुक्रम क्रमांक, पोचपावती, पुनर्प्रसारण नियंत्रण, कनेक्शन व्यवस्थापन आणि विंडो नियंत्रणाद्वारे विश्वसनीय वाहतूक अंमलात आणतो. त्यापैकी, प्रवाह नियंत्रण यंत्रणा प्राप्तकर्त्याच्या प्रत्यक्ष ग्रहण क्षमतेनुसार प्रेषकाने पाठवलेल्या डेटाचे प्रमाण नियंत्रित करते, ज्यामुळे नेटवर्क गर्दी आणि कार्यक्षमतेतील घसरणीच्या समस्या टाळल्या जातात. गर्दी नियंत्रण यंत्रणा प्रेषकाने पाठवलेल्या डेटाचे प्रमाण समायोजित करून नेटवर्क गर्दीची घटना टाळते. गर्दी विंडो आणि पाठवणारी विंडो या संकल्पना एकमेकांशी संबंधित आहेत, आणि गर्दी विंडोचा आकार गतिशीलपणे समायोजित करून प्रेषकाकडील डेटाचे प्रमाण नियंत्रित केले जाते. मंद सुरुवात, गर्दी टाळणे आणि जलद पुनर्प्राप्ती हे TCP गर्दी नियंत्रण अल्गोरिदमचे तीन मुख्य भाग आहेत, जे नेटवर्कची क्षमता आणि गर्दीच्या प्रमाणाशी जुळवून घेण्यासाठी वेगवेगळ्या धोरणांद्वारे गर्दी विंडोचा आकार समायोजित करतात.

पुढील विभागात, आपण TCP च्या पुनर्प्रसारण यंत्रणेचे सविस्तर परीक्षण करणार आहोत. विश्वसनीय प्रसारण साध्य करण्यासाठी पुनर्प्रसारण यंत्रणा हा TCP चा एक महत्त्वाचा भाग आहे. गहाळ झालेला, सदोष किंवा विलंबित डेटा पुन्हा प्रसारित करून ती डेटाचे विश्वसनीय प्रसारण सुनिश्चित करते. पुनर्प्रसारण यंत्रणेचे अंमलबजावणीचे तत्त्व आणि धोरण पुढील विभागात सविस्तरपणे सादर करून त्याचे विश्लेषण केले जाईल. सोबत रहा!


पोस्ट करण्याची वेळ: २४ फेब्रुवारी २०२५