الگوریتم TCP Slow Start چگونه با افزایش نمایی پنجره ازدحام، از ترافیک شبکه جلوگیری میکند؟
الگوریتم شروع کند TCP با آغاز محتاطانه انتقال دادهها و دو برابر کردن نرخ ارسال در هر رفتوبرگشت تا زمان یافتن حداکثر ظرفیت شبکه، از زیرساختهای اینترنت محافظت میکند.
به قلم کامران صادقی
این خبر را به اشتراک بگذارید
- مهندسان پروتکل شبکه
- اولویت دادن به پایداری شبکه و جلوگیری از پدیده بافربلوت (bufferbloat) در زیرساخت مسیریابی جهانی.
- بهینهسازان عملکرد وب
- حمایت از پنجرههای ازدحام اولیه بزرگتر برای کاهش تاخیر بارگذاری صفحات در اتصالات پهنباند مدرن.
- آموزشی و مرجع
- تمرکز بر استانداردسازی تعاریف و مدلهای ریاضی ماشینهای حالت TCP برای آموزش علوم کامپیوتر.
دیدگاههایی که این گزارش پوشش نداده
- ارائهدهندگان خدمات اینترنت (ISP) در لایه دسترسی نهایی (Last-Mile)
- اپراتورهای شبکههای موبایل
نکات کلیدی
- الگوریتم شروع کند TCP با آغاز انتقال دادهها از طریق یک پنجره بسته کوچک و محافظهکارانه، از ازدحام شبکه جلوگیری میکند.
- نرخ ارسال در هر زمان رفتوبرگشت دو برابر میشود تا زمانی که حد ظرفیت شبکه شناسایی شود.
- از دست رفتن بستهها باعث تغییر فاز از رشد نمایی به فاز خطی اجتناب از ازدحام میشود.
- عملکرد وب مدرن به تنظیم پنجره ازدحام اولیه برای ایجاد تعادل بین سرعت و پایداری وابسته است.
وقتی کاربری برای دانلود یک فایل روی لینکی کلیک میکند، سرور بلافاصله اتصال او را با حداکثر پهنای باند موجود پر نمیکند. در عوض، انتقال دادهها با سرعتی بسیار پایین و حسابشده آغاز میشود؛ در کسری از ثانیه اول تنها چند کیلوبایت داده ارسال میشود و سپس سرعت به سرعت افزایش مییابد. این کنترلکننده نامرئی، سرعت تقریبا هر صفحه وب، پخش ویدیو و انتقال فایلی را در اینترنت مدرن تعیین میکند.[4][5]
این رفتار توسط الگوریتم شروع کند پروتکل کنترل انتقال (TCP) کنترل میشود؛ یک مکانیزم اساسی برای کنترل ازدحام که طراحی شده تا از فروپاشی روترهای ستون فقرات اینترنت در برابر فوران ناگهانی ترافیک جلوگیری کند. بدون این الگوریتم، یک سرور پرسرعت میتواند یک گیرنده کندتر یا لینکهای شبکه میانی را تحت فشار قرار دهد و منجر به از دست رفتن گسترده بستههای داده (packet loss) و قطع اتصال شود.[3][6]
سازوکار شروع کند به متغیری به نام پنجره ازدحام یا cwnd وابسته است. این متغیر حداکثر مقدار دادههای تاییدنشدهای را تعیین میکند که فرستنده میتواند پیش از توقف و انتظار برای تایید دریافت توسط گیرنده، ارسال کند. هنگام برقراری یک اتصال جدید، فرستنده مقدار cwnd را روی یک عدد بسیار محافظهکارانه تنظیم میکند که معمولا بر اساس حداکثر اندازه سگمنت (MSS) اندازهگیری میشود.[1][7]
برای یک اتصال استاندارد اترنت، یک MSS معمولا ۱۴۶۰ بایت است. در روزهای اولیه اینترنت، همانطور که توسط کارگروه مهندسی اینترنت (IETF) در استاندارد RFC 2001 سال ۱۹۹۷ تعریف شد، پنجره ازدحام اولیه دقیقا روی یک سگمنت تنظیم میشد. این یعنی سرور تنها ۱.۴ کیلوبایت داده ارسال میکرد و تا زمانی که گیرنده آن را تایید نمیکرد، متوقف میماند.[8]
برخلاف نامش، فاز شروع کند در واقع رشد نمایی را دیکته میکند. به ازای هر تاییدیه (ACK) که فرستنده از کلاینت دریافت میکند، مقدار cwnd را یک MSS افزایش میدهد. از آنجا که ارسال موفقیتآمیز یک سگمنت منجر به یک ACK میشود، فرستنده سپس میتواند دو سگمنت ارسال کند. وقتی آن دو تایید شدند، چهار سگمنت و سپس هشت سگمنت ارسال میکند و عملا نرخ ارسال را در هر زمان رفتوبرگشت (RTT) دو برابر میکند.[4][5][7]
در استاندارد RFC 5681 سازمان IETF (مشخصات سال ۲۰۰۹ که کنترل ازدحام TCP را بهروز کرد) آمده است: «الگوریتم شروع کند زمانی استفاده میشود که cwnd < ssthresh باشد، در حالی که الگوریتم اجتناب از ازدحام زمانی به کار میرود که cwnd > ssthresh باشد.» این آستانه که به عنوان ssthresh (آستانه شروع کند) شناخته میشود، مرز بین بررسی تهاجمی شبکه و مدیریت محتاطانه پهنای باند است.[1]
به محض اینکه پنجره ازدحام از مقدار ssthresh عبور کند، دو برابر شدن نمایی متوقف میشود. الگوریتم وارد فاز اجتناب از ازدحام میشود؛ جایی که پنجره به صورت خطی افزایش مییابد (معمولا فقط یک MSS در هر رفتوبرگشت کامل). این رشد خطی، حد مطلق ظرفیت شبکه را بدون ایجاد خرابی فاجعهبار بررسی میکند.[1][3][7]
به محض اینکه پنجره ازدحام از مقدار ssthresh عبور کند، دو برابر شدن نمایی متوقف میشود.
الگوریتم زمانی متوجه میشود که به سقف ظرفیت شبکه رسیده است که یک بسته داده از دست برود. در پروتکل TCP، از دست رفتن بسته (که با تاییدیههای تکراری یا پایان زمان انتظار مشخص میشود) نشانگر جهانی ازدحام است. روترهای شبکه به سادگی فضای بافر بیشتری برای نگهداری دادههای ورودی ندارند و مجبور میشوند بستههای اضافی را دور بریزند.[3][6]
با تشخیص از دست رفتن بسته، فرستنده واکنش شدیدی نشان میدهد. مقدار ssthresh را به نصف کاهش میدهد و این حد پایینتر جدید را به عنوان مرز عملیاتی ایمن ثبت میکند. بسته به پیادهسازی خاص TCP، ممکن است مقدار cwnd را به مقدار اولیه برگرداند و دوباره وارد فاز شروع کند شود، یا برای حفظ یک توان عملیاتی متوسط، وارد فاز بازیابی سریع (fast recovery) شود.[1][8]
با گذشت زمان و تغییر زیرساخت اینترنت از دایالآپ به پهنباند، تعریف شروع «کند» نیز باید تکامل مییافت. محدودیت یک سگمنتی سال ۱۹۹۷ به یک گلوگاه جدی برای عملکرد وب تبدیل شد، زیرا اتصالات با پهنای باند بالا بیکار میماندند تا رشد نمایی در طول چندین رفتوبرگشت سرعت بگیرد.[2][8]
تا سال ۲۰۰۹، استاندارد RFC 5681 به طور رسمی پنجره ازدحام اولیه مجاز را بسته به اندازه MSS به سه تا چهار سگمنت افزایش داد. این تغییر به سرورها اجازه داد تا در اولین ارسال، حدود ۴.۳ تا ۵.۸ کیلوبایت داده بفرستند و زمان لازم برای رسیدن به حداکثر توان عملیاتی در اتصالات پهنباند استاندارد را کاهش دهند.[1]
تلاش برای سرعتهای اولیه بالاتر، در مقاله بسیار تاثیرگذار سال ۲۰۱۰ از Google Research با عنوان «استدلالی برای افزایش پنجره ازدحام اولیه TCP» به اوج خود رسید. مهندسان گوگل نشان دادند که افزایش پنجره اولیه به ۱۰ سگمنت (حدود ۱۴.۶ کیلوبایت) میتواند تاخیر بارگذاری صفحات وب را ۱۰ درصد یا بیشتر کاهش دهد، زیرا بسیاری از فایلهای کوچک وب میتوانند به طور کامل در همان اولین رفتوبرگشت تحویل داده شوند.[2]
امروزه، آن پنجره اولیه ۱۰ سگمنتی به پیشفرض هسته لینوکس تبدیل شده است که اکثریت قریب به اتفاق سرورهای وب در سراسر جهان را قدرت میبخشد. الگوریتم شروع کند همچنان میانجی نامرئی سرعت اینترنت است و تضمین میکند که هر اتصالی (چه به یک ترموستات هوشمند و چه به یک استریم ویدیوی 4K) ظرفیت دقیق پهنای باند خود را بدون از کار انداختن شبکه پیدا کند.[2][4][9]
بررسی عمیق دیدگاهها
مهندسان پروتکل شبکه
مهندسانی که معماری هسته اینترنت را طراحی میکنند، شروع کند را به عنوان یک مکانیزم دفاعی ضروری در برابر فروپاشی سیستماتیک میبینند.
برای طراحان پروتکل در سازمانهایی مانند IETF و سیسکو، نگرانی اصلی تراژدی منابع مشترک است. اگر هر سروری بلافاصله با حداکثر سرعت سختافزاری داده ارسال کند، روترهای میانی که ستون فقرات اینترنت را تشکیل میدهند، فورا بافرهای حافظه خود را تخلیه میکنند. این وضعیت که به عنوان بافربلوت (bufferbloat) شناخته میشود، منجر به از دست رفتن گسترده بستهها شده و همه سرورها را مجبور میکند دادههای خود را به طور همزمان دوباره ارسال کنند که این امر تنها ازدحام را بدتر میکند. شروع کند نه به عنوان یک جریمه عملکردی، بلکه به عنوان تنها راه ریاضی برای بررسی ایمن یک مسیر شبکه ناشناخته بدون نابود کردن آن در نظر گرفته میشود.
بهینهسازان عملکرد وب
مهندسان عملکرد، محدودیتهای تاریخی شروع کند را به عنوان یک گلوگاه منسوخ برای پهنباند مدرن میدانند.
سازمانهایی که روی تاخیر کاربر نهایی تمرکز دارند، مانند گوگل و شبکههای تحویل محتوا (CDN) مانند KeyCDN، استدلال میکنند که محدودیتهای اولیه یک یا سه سگمنتی برای مودمهای دایالآپ طراحی شده بودند. در یک اتصال مدرن فیبر نوری یا 5G، انتظار برای چندین رفتوبرگشت جهت افزایش سرعت، پهنای باند موجود را هدر داده و رندر صفحه را به تاخیر میاندازد. آنها با حمایت از پنجره اولیه ۱۰ سگمنتی، قصد دارند کدهای HTML، CSS و اسکریپتهای حیاتی یک صفحه وب را به طور کامل در همان اولین فوران دادهها تحویل دهند و عملا جریمه شروع کند را برای فایلهای کوچک وب دور بزنند.
پرسشهای متداول
اگر سرعت به صورت نمایی رشد میکند، چرا به آن «شروع کند» میگویند؟
این روش تنها در مقایسه با جایگزین آن (یعنی ارسال فوری دادهها با حداکثر سرعت سختافزاری فرستنده) «کند» است. با شروع از یک پنجره کوچک، از شبکه محافظت میکند، حتی اگر نرخ ارسال به سرعت دو برابر شود.
پروتکل TCP چگونه متوجه ازدحام شبکه میشود؟
پروتکل TCP برای تشخیص ازدحام، در درجه اول به از دست رفتن بستهها (packet loss) متکی است. اگر بافر یک روتر پر شود، بستهها را دور میریزد که باعث میشود گیرنده دادهها را از دست بدهد و زمانسنج تاییدیه فرستنده منقضی شود.
آیا میتوانم TCP slow start را غیرفعال کنم تا دانلودها سریعتر شوند؟
خیر، این یک بخش الزامی از پروتکل TCP است که در پشته شبکه سیستمعامل شما تعبیه شده است. با این حال، مدیران سرور میتوانند اندازه پنجره ازدحام اولیه را برای بهینهسازی عملکرد تنظیم کنند.
چرا مهم است
هر صفحه وب، ویدیوی در حال پخش و فایل دانلودی برای تنظیم سرعت به این الگوریتم نامرئی وابسته است. درک نحوه کار آن نشان میدهد که چرا اینترنتهای پرسرعت همچنان در ابتدا با بافرینگ مواجه میشوند و چرا پیکربندی سرور به اندازه پهنای باند خام اهمیت دارد.
منابع
[1]RFC Editorمهندسان پروتکل شبکهRFC 5681: TCP Congestion Control
مطالعه در RFC Editor →
[2]Google Researchبهینهسازان عملکرد وبAn Argument for Increasing TCP's Initial Congestion Window
مطالعه در Google Research →
[3]Ciscoمهندسان پروتکل شبکهChapter: Congestion Avoidance Overview
مطالعه در Cisco →
[4]MDN Web Docsبهینهسازان عملکرد وبTCP slow start - Glossary
مطالعه در MDN Web Docs →
[5]KeyCDN Supportبهینهسازان عملکرد وبWhat Is TCP Slow Start
مطالعه در KeyCDN Support →
[6]Purdue e-Pubsمهندسان پروتکل شبکهTCP Congestion Control: Overview and Survey Of Ongoing Research
مطالعه در Purdue e-Pubs →
[7]GeeksforGeeksآموزشی و مرجعTCP Congestion Control
مطالعه در GeeksforGeeks →
[8]RFC Editorمهندسان پروتکل شبکهRFC 2001: TCP Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery Algorithms
مطالعه در RFC Editor →
[9]تیم سردبیری کوهستانآموزشی و مرجعتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
نظرات
بیشتر در راهنماها
مشاهده همه →شبکه خانگی
چرا ارتباط بیسیم در شبکههای مش، سرعت NAS شما را نابود میکند؟
5 منبع
باورهای غلط درباره باتری
چرا بستن کامل برنامههای گوشی، باتری را سریعتر خالی میکند؟
4 منبع
حریم خصوصی ابری
فضای ابری «دانش صفر» چیست و چگونه با حذف کلید، امنیت فایلها را تضمین میکند
6 منبع
اصلاحات گمرکی اتحادیه اروپا
واقعیت جدید تجارت الکترونیک جهانی: راهنمای حذف معافیت گمرکی «دی مینیمیس» اتحادیه اروپا و آستانه عوارض ۱۵۰ یورویی
5 منبع
هر زاویه. هر روز.
دریافت راهنماها اخبار همراه با پوشش کامل منابع و تحلیل دیدگاهها، مستقیم در صندوق ورودی شما.





