إدارة الازدحام في بروتوكول التحكم بالنقل

يستخدم ميفاق (بروتوكول) ضبط الإرسال (TCP) خوارزمية تعمل في نطاق الشبكة محاولةً تجنب حدوث الازدحام، و تتضمن هذه الخوارزمية عدة عوامل من خطة الزيادة المضاعفة/الانخفاض المضاعف، بالإضافة إلى مخططات أخرى كالبداية البطيئة و نافذة الازدحام، ذلك لتجنب حدوث ازدحام في الشبكة.

العملية

لتجنب الانهيار الاحتقاني، يستخدم برنامج التعاون الفني استراتيجية متعددة الأوجه للتحكم في الازدحام . بالنسبة إلى كل وصلة،  TCP يحافظ على نافذة الازدحام، ويحدد العدد الاجمالي من الحزم الغير معترف بها التي تنتقل من طرف إلى اخر، وهذا يشبه إلى حد ما نافذة انزلاق  TCP يستخدم لتحكم في التدفق. TCP يسنخدم الية بداية بطيئة. لزيادة نافذة الازدحام بعد تهيئة أو بعد مهلة، يبدأ من نافذة حجمها ضعفي حجم شريحة الMSS ، وعلى الرغم من أن المعدل الأولي منخفض، فإن معدل الزيادة سريع جدا؛ حيث تزداد نافذة الازدحام بمقدار 1 MSS بحيث تتضاعف نافذة الازدحام بشكل فعال لكل وقت ذهابا وإيابا (RTT)
عندما تتجاوز نافذة الازدحام عتبة ستريش (ssthresh )، تدخل الخوارزمية حالة جديدة تسمى تجنب الازدحام. في بعض التطبيقات (على سبيل المثال Linux)، ستريش (ssthresh ) الأولية كبيرة، وبالتالي فإن أول بداية بطيئة ينتهي عادة بعد خسارة ومع ذلك، يتم تحديث سثريش في نهاية كل بداية بطيئة و غالبا ما تؤثر على بداية بطيئة لاحقة الناجمة عن المهلات، في وضع تجنب الازدحام اذا لم تتلقى نافذه الازدحام ACKs مكرره فانها تقوم بزياده  MSS في كل زمن دوره في حاله فقدان رزمة على الارجح استقبال ACKs مكرره تكون عاليه.

نافذة الازدحام

في TCP نافذة الازدحام هي واحدة من الحقائق التي تحدد عدد وحدات البايت التي يمكن أن تكون معلقة في أي وقت، يتم الحفاظ على نافذة الازدحام من قبل المرسل لاحظ أن هذا لا ينبغي الخلط بينه وبين حجم نافذة TCP التي يتم الحفاظ عليها من قبل المتلقي، نافذة الازدحام هي وسيلة لوقف ارتباط بين المرسل والمستقبل من أن تكون مثقلة بكثرة مع حركة المرور، التي يتم حسابها من خلال تقدير مدى الازدحام هناك على الرابط. عند إعداد اتصال، يتم تعيين نافذة الازدحام، وهي قيمة محفوظة بشكل مستقل في كل مضيف، على مجموعة صغيرة من MSSالمسموح بها على هذا الاتصال. ويملي المزيد من التباين في نافذة الازدحام نهج AIMD . وهذا يعني أنه في حالة استلام جميع الشرائح وإيصال الإشعارات إلى المرسل في الوقت المحدد، تتم إضافة بعض الثابت إلى حجم النافذة. وتظل النافذة تنمو اضعاف مضاعفة حتى يحدث مهلة أو يصل المرسل إلى حده (قيمة عتبة "ssthresh") .
وإذا وصل المرسل إلى هذه العتبة، فإن نافذة الازدحام تزداد خطيا بمعدل 1 / (نافذة الازدحام)  شريحة على كل إقرار جديد مستلم. 
في المهلة:
1- يتم إعادة تعيين نافذة الازدحام إلى 1 MSS
2- يتم تعيين "ssthresh" إلى نصف حجم نافذة الازدحام قبل أن تبدأ خسارة القطاع.
3- يبدأ "بداية بطيئة".
مسؤول النظام قد ضبط الحد الأقصى لحجم النافذة، أو ضبط ثابت المضافة خلال زيادة إضافية، كجزء من ضبطTCP.
كما يتم التحكم في تدفق البيانات عبر اتصال  TCPباستخدام نافذة استقبال TCP التي يعلن عنها المستقبل. من خلال مقارنة نافذة الازدحام الخاصة بها مع نافذة استقبال المتلقي، يمكن للمرسل تحديد مقدار البيانات التي قد ترسل في أي وقت من الأوقات

بداية بطيئة

بداية بطيئة هى جزء من استراتيجية التحكم في الازدحام التى يستخدمها بروتوكول TCP، فان بروتوكول نقل البيانات المستخدمة من قبل العديد من تطبيقات الانترنت. ويستخدم الخوارزميات الاخرى لتجنب إرسال بيانات أكثر من الشبكة قادرة على نقل البيانات، لتجنب حدوث ازدحام في  الشبكة، الخوارزمية التى يحددها RFC 5681.
بداية بطيئة تبدا مبدئيا مع ازدحام( CWND) حجم النافذة (من 1 او 2 او 10).. قيمة الازدحام نافذة بنسبة واحد مع كل اقرار (ACK)، لتضاعف حجم الاطار كل وقت الذهاب والعودة (على الرغم من انه ليس تماما وذلك لأن استقبال الاعتراف سوف يأخذ وقت مختلف بالنسبة لكل حزمة،عادة يرسل اعتراف لكل حزمتين." )معدل الإرسال سوف يزداد مع هذه الخوارزمية(بداية بطيئة)حتى تنتهي أو يتم اكتشاف الجزء المفقود،أو نافذة المستقبل المعلن عنها هي العامل المحدد،اوعند الوصول إلى عتبة البداية البطيئة في حالة حدوث الخسارة.
(TCP)يفترض أن هذا  يرجع إلى ازدحام الشبكة ويتخذ خطوات لتقليل الحمل المعروض على الشبكة،تعتمد هذه القياسات على خوارزمية تجنب الازدحام المستخدمة من قبل TCP))،بمجرد الوصول إلى      (TCP) يتغير من خوارزمية البداية البطيئة إلى خوارزمية النمو الخطي (تجنب الازدحام) عند هذه النقطة يتم زيادة الاطار بمقدار ا جزء لكل RTT)).على الرغم من أن الاستراتيجية يشار اليها باسم (بطيئة البداية) ونمو نافذة الازدحام لها عدوانية أخرى،أكثر عدوانية من مرحلة تجنب الازدحام. ، قبل البدء بخوارزمية البدايةالبطيئة الاولى ان نتجنب الازدحام بشكل أسرع،ويعتمد السلوك عند فقدان اي من الحزم على خوازمية تفادي الازدحام المستخدمة من قبل (TCP).
(TCP TAHOE) 
عند حدوث الخسارة،يتم اعادة الإرسال بشكل سريع،يتم الاحتفاظ بنصف نافذة الازدحام كعتبة للبداية البطيئة،و تبدأ بداية بطيئة أخرى من نافذة الازدحام الاولية،وعندما تصل نافذة الازدحام إلى (SSThresh) يغير ال(TCP) الخوارزمية إلى تجنب الازدحام وهذا يؤدي إلى اعتراف جديد يزيد من نافذة الازدحام عن طريق (MSS / CWND) والنتجية زيادة خطية  بنافذة الازدحام.                            
(TCP RENO)
(TCP RENO) تنفذ خوارزمية تسمى الانتعاش السريع،يتم اعادة الإرسال بشكل سريع،ونصف نافذة الازدحام تحفظ (SSThresh) وكنافذة ازدحام جديدة وبهذا نتخطى خوارزمية البداية البطيئة ونذهب مباشرة إلى خوارزمية تجنب الازدحام.
البداية البطيئة تفترض ان الحزم غير المعترف بها تعزى إلى الازدحام بالشبكة،في حين أن هذا الافتراض مقبول لكثير من الشبكات،فقد تضيع الأجزاء لأسباب أخرى مثل ضعف نوعية خط نقل البيانات وهكذا يمكن أن تعمل خوارزمية البداية البطيئة بشكل سيء في الشبكات اللاسلكية.
بروتوكول البداية البطيئة يعمل بشكل سيء في حالة الاتصالات قصيرة المدى، فبالتالي متصفحات الويب القديمة سوف تنشيء العديد من الاتصالات قصيرة المدى المتتالية وتصلها بخادم الويب،وسوف تغلق او تفتح الاتصال لكل ملف مطلوب،هذا الشيء أبقى معظم الاتصالات في وضع البداية البطيئة مما أدى إلى ضعف وقت الاستجابة.
ولتجنب هذه المشكلة،المتصفحات الحديثة اما انها تفتح اتصالات متعددة بنفس الوقت او تعيد استخدام اتصال واحد لجميع الملفات المطلوبة من خلال خادم ويب معين.
ومع ذلك لا يمكن اعادة استخدام الاتصالات لخوادم الطرف الثالت المتعددة التي تستخدمها مواقع الويب لتفيذ الاعلان على شبكة الانترنت وتقاسم ميزات خدمات الشبكات الاجتماعية. والبرامج النصية المضادة لتحليلات الويب.

خوازمية "زيادة مضاعفة/انخفاض مضاعف"

خوارزمية "زيادة مضاعفة/انخفاض مضاعف" هي خوارزمية للتحكم بالتغذية الراجعة،هذه الخوارزمية تجمع بين النمو الخطي لنافذة الازدحام مع انخفاض أسي عندما يحدث هذا الازحام (ازدحام البيانات) وتتقابل التدفقات المتعددة التي تستطيع التحكم بالازدحام عن طريق هذه الخوارزمية،سوف تتلاقى في النهاية لاستخدام كميات متساوية من وصلات الربط.

اعادة الإرسال بشكل سريع

اعادة الإرسال بشكل سريع يستخدم للتقليل من الوقت الذي ينتظره المرسل قبل اعادة إرسال الجزء المفقود،حيث أن المرسل يستخدم مؤقت للتعرف على الشرائح المفقودة،فاذا لم يتم استلام اشعار باستلام جزء معين خلال فترة زمنية محددة،المرسل سيعيد إرسال الجزء المفقود مرة أخرى.
الاقرار المكرر هو الأساس الذي تقوم عليه ألية اعادة الإرسال بشكل سريع التي تعمل على النحو الآتي:بعد استلام الحزم(مثلا،بالتتابع رقم 1)،يرسل المستقبل اشعارا بالاستلام باضافة رقم 1 إلى رقم التتابع (اي رقم الاشعار2) يعني استقبال الحزمة رقم 1 والمرسل يتوقع هذا الرقم.
لنفترض أن ثلاث حزم لاحقة قد فقدت،في هذه الأثناء يستقبل المستقبل الرقمين 5 و6 من الحزمة،وبعد تلقي رقم الحزمة 5 يرسل المستقبل اشعارا بالاستلام ولكنه لا يزال قائما فقط بالنسبة للرقم 2،وعندما يستقبل المستقبل رقم الحزمة 6 فانه يرسل قيمة اشعار آخر بقيمة 2 فبالتالي يتلقى المرسل أكثر من اشعار بالاستلام بنفس رقم التتابع (2 في هذا المثال) وهذا ما يطلق عليه الاقرار المتكرر.
ويعمل تعزيز اعادة الإرسال بشكل سريع على النحو التالي :اذا تلقى المرسل عددا محددا من الاشعارات التي تعين عادة على ثلاث اشعارات بالاستلام مع نفس رقم الاقرار(أي ما مجموعه أربعة اشعارات باستلام نفس رقم الاشعار)، عندها يكون المرسل على ثقة أن الحزمة التالية ضاعت(لم تصل للمستقبل) وبهذه الحالة يعود المرسل ويرسل الحزمة مرة أخرى.

الرينو و التاهو

تم تسمية الخوارزميتين بأثر رجعي بعد نظام التشغيل 4.3BSD الذي ظهر فيه كل منهما لأول مرة (التي كانت تسمى نفسها بعد بحيرة تاهو ومدينة رينو القريبة، نيفادا). وظهرت خوارزمية "تاهو" لأول مرة في 4.3BSD-تاهو (الذي تم تقديمه لدعم جهازCCL 6/32 "تاهو" حواسيب صغيرة)، وتم إتاحته لغير المرخص لهم من   non-AT&Tكجزء من "الإصدار 4.3BSD من الشبكات 1" ؛ وهذا يكفل توزيعه وتنفيذه على نطاق واسع. وأدخلت تحسينات في 4.3BSD-رينو وأفرج عنه في وقت لاحق للجمهور باسم "الإصدار 2 للشبكات" وفي وقت لاحق4.4BSD-Lite..
في حين أن كليهما يعتبر مهلة إعادة الإرسال RTO وACKS متكررة كأحداث فقدان الرزم، فإن سلوك تاهو ورينو يختلفان في المقام الأول في كيفية تفاعلهما مع ACKs المكررة:
- تاهو: إذا استقبلت ثلاثة ACKs مكررة (أي أربعة ACKs تعترف بنفس الحزمة، التي لا يتم الاحتفاظ بها على البيانات ولا تغير نافذة المستقبل للمستقبل) ، تقوم تاهو بعملية إعادة إرسال سريعة، وتحدد عتبة البداية البطيئة إلى نصف نافذة الازدحام الحالي ، ويقلل من نافذة الازدحام إلى 1 MSS، ويعيد إلى بطء بدء الدولة.
رينو: إذا تم استلام ثلاثة ACKs مكررة ، رينو سوف يقوم بإجراء إعادة إرسال سريع وتخطي مرحلة بداية بطيئة عن طريق خفض بدلا من ذلك نافذة الازدحام (بدلا من وضعها إلى 1 MSS مثل تاهو) ، ووضع عتبة بداية بطيئة يساوي نافذة الازدحام الجديدة ، ويبدأ مرحلة تسمى شفاء عاجل(Fast Recovery).
في كل من تاهو ورينو، اذا انتهت مهلة ACK (مهلة (RTO  يتم استخدام بداية بطيئة، وكل من الخوارزميات تقوم بتقليل نافذة الازدحام إلى 1MSS .
شفاء عاجل (رينو فقط): في هذه الحالة، يعيد بروتوكول TCP إعادة إرسال الحزمة المفقودة التي تم الإشارة إليها بواسطة ثلاثة  ACKsمكررة، وينتظر الاعتراف باستلام نافذة الإرسال بأكملها قبل العودة إلى تجنب الازدحام. إذا لم يكن هناك اعتراف، TCP رينو يختبر مهلة ويدخل حالة بداية بطيئة.