حل تشریحی سوال شماره 37 شبکه پیشرفته
کنکور دکتری مهندسی کامپیوتر 1400
یک سطل نشانه (token bucket) برای تنظیم ترافیک مطابق شکل زیر استفاده میشود. هدف داشتن حداکثر نرخ R =20Mbps به سمت شبکه است و مدت ارسال با این نرخ نباید از ۵ ثانیه فراتر رود. همچنین می خواهیم که در هر بازه 10 ثانیه ای حداکثر 150Mb به شبکه ارسال شود نرخ تولید نشانه r و اندازه عمق سطل b چقد باید باشد؟
r=10Mbps,b=50Mb
r=20Mbps,b=50Mb
r=10Mbps,b=100Mb
r=20Mbps,b=100Mb
پاسخ ها
1 پاسخ
گزينه 1 درست است.
در مبحث شکلدهی ترافیک، الگوریتم سطل سوراخدار (Leaky Bucket)، يكي از الگوريتمهاي افزايش QoS و كاهش ازدحام و جلوگيري از تحميل بار اضافي توسط ميزبانها بر شبكه است. اگر ترافيك نامنظم ارسالی يك كاربر را با قطرههاي تصادفي وارد شده به يك سطل سوراخ مدل كنيم و فرض كنيم كه درون بافر اولين مسيرياب سر راه اين بستهها يك فضا با حجم معين به آن مشتري اختصاص دهيم، مدل اين بافر، سطلي با ظرفيت مشخص است که در صورت پر شدن سرريز شده و بار اضافي ورودي دور ريخته ميشود. از آنجا كه اندازه سوراخ زير سطل ثابت است، قطرات از خروجي سيستم به طور منظم و با نرخ ثابت از بافر سطل خارج ميشوند.

الگوريتم سطل سوراخدار بسیار سختگیرانه به نظر میرسد؛ زیرا نرخ میانگین و ثابتی را به ترافیک خروجی تحمیل میکند و مسئله انفجاری (burst) بودن شبکه برایش مهم نیست. ترافیک انفجاری یعنی شبکه در زمان اندکی ترافیک سنگینی دارد، اما در اکثر مواقع ترافیک ناچیز است. در بسیاری از موارد وقتی که ترافیکی انفجاری از راه میرسد، بهتر است که اجازه دهیم سرعت تاحدی افزایش یابد.
الگوریتم سطل نشانهدار (Token Bucket) با هدف ایجاد انعطاف بیشتر در کنترل جریان ساخته شده است؛ به گونهای که ترجیحاً هیچ دادهای از دست نرود. در این الگوریتم، سطل سوراخدار که معرف بافر موجود در سیستمعامل و یا کارت شبکه است، یک خاصیت دیگر نیز دارد؛ این بافر میتواند یک نشانه و یا اصطلاحاً یک Token را نگه دارد. این نشانه در هر T ثانیه یکبار تولید میشود. در سمت چپ شکل زیر، سطلی قابل مشاهده است که در آن سه نشانه وجود دارد. همچنین پنج بسته نیز در پشت سر آن منتظر ارسال هستند. هر بسته برای ارسال باید یک نشانه را بهدست بیاورد. بعد همراه با ارسال خود آن را از بین ببرد. در شکل سمت راست میبینید که سه بسته، به ازای سه نشانهای که در شکل سمت چپ دیدیم، ارسال شده و سه نشانه را نیز از بین بردهاند. دو بسته دیگر نیز باید در انتظار بمانند تا نشانه آماده شود.

تفاوت این دو الگوریتم در این است که در سطل نشانهدار ایستگاههایی که هماکنون دادهای برای ارسال ندارند، اجازه دارند که سهمیه ارسال خود را نگه داشته و در آینده به یکباره براي ارسال انفجارگونه بستهها استفاده کنند، اما این پسانداز حداکثر میتواند به اندازه حجم سطل (ظرفیت بافر) باشد. مثلاً اگر بافر میزان به اندازه n بسته جا داشته باشد و ایستگاه نیز بتواند n نشانه را پسانداز کند، میتواند یک انفجار حداکثر n بستهای داشته باشد. تفاوت دیگر بین این دو الگوریتم این است که در سطل نشانهدار هنگامی که سطل (بافر) پر شود، نشانهها و یا در واقع ظرفیت ارسال دور انداخته میشوند، در حالی که بستهها هرگز حذف نمیشوند. در مقابل، الگوریتم سوراخدار به محض پر شدن سطل، بستهها را حذف میکند.
در برخی از نسخههای الگوریتم سطل نشانهدار، ممکن است هر نشانه مجوز ارسال k بایت تلقی شود و نه ارسال یک بسته. در این حالت یک بسته با m بایت، با فرض k<m، وقتی میتواند ارسال شود که به تعداد کافی نشانه داشته باشد. همچنین اگر یک بسته با m بايت وجود داشته باشد که m<k باشد، سهمیه ارسال مابقی برای استفاده بعدی نگه داشته میشود.
در پیادهسازی، نشانهها به صورت یک متغیر شمارنده تعریف میشوند. در هر T ثانیه این متغیر یک واحد افزایش و با ارسال هر بسته، یک واحد کاهش مییابد. بدیهی است که وقتی مقدار این متغیر 0 باشد، دیگر هیچ بستهای را نمیتوان ارسال کرد. در گونه دیگر این الگوریتم، از روش شمارش بایت استفاده میشود
يعني در هر T ثانیه مقدار متغیر شمارنده، k واحد یا k بایت افزایش مییابد و در هر ارسال، به اندازه مقدار بایت طول بسته ارسالشده از شماره کاسته میشود.
در این تست، اگر طول زمان ارسال انفجاری بستهها را Tb بنامیم که در این مدت میزبان با نرخ حداکثر ورود به بافر Rmax بیت در ثانیه بستهها را تولید میکند و ظرفیت سطل نشانهدار را b بیت فرض کنیم و نیز با فرض نرخ تولید نشانه r بیت در ثانیه داریم:
b+r×Tb=Rmax×Tb
اگر طول کل هر دوره ارسال بستهها را Tt بنامیم که در این مدت میزبان با نرخ میانگین ورود به بافر Rave بیت در ثانیه بسته ها را تولید میکند:
b+r×Tt=Rmax×Tt
b+r×Tb=Rmax×Tb⟹b+r5s=20Mbps×5s=100Mb
b+r×Tt=Rave×Tt⟹b+r×10s=150Mb
یک دستگاه دو معادله دو مجهول داریم:![]()
![]()
{b+r×5=100b+r×10=150⟹5r=50⟹r=10Mbps,b+r×5=100⟹b=100−10×50=50Mb