Exercises – به نام خدای آزادی Solved

$ 29.99
Category:

Description

تمرین برنامه نویسی شماره 04

عنوان: پروژه‌برنامه‌نویس ‌ی-‌شماره‌04 ‌درس: شبک ‌ههای‌کامپیوتر ‌ی ‌
استاد راهنما: دکتر‌ناصر‌یزدان ‌ی1
رشته: مهند ‌سی‌کامپیوت ‌ر ‌
دستیاران آموزشی: اسامه‌ایراندوست2،‌محمدرضا‌ول ‌ی3 ‌نیمسال دوم سال تح صیلی 02-1401

yazdani@ut.ac.ir:نشانی‌پست‌الکترونیکی‌1 osameh.irandoust@ut.ac.ir:نشانی‌پست‌الکترونیکی‌2 mvali@ut.ac.ir:نشانی‌پست‌الکترونیکی‌3

‌أ

فهرست مطالب

عنوان‌پروژه‌)‌پیاده‌‌سازی‌و‌تحلیل‌‌الگوریتمهای‌کنترل‌ازدحام(‌………………………………………………………………………………………………………………………………………..‌1 1- مقدمه‌…………………………………………………………………………………………………………………………………………………………………………………………….‌1
2- ‌پیاده‌‌سازی‌الگوریتم‌Reno………………………………………………………………………………………………………………………………………………………..‌1
1- 1………………………………………………………………………………………………………………………………………………………………………TCPConnectionتعریف‌کلاس‌-2
2- 2………………………………………………………………………………………………………………………………………………………………………………………SendDataتعریف‌متد‌-2
3- 2………………………………………………………………………………………………………………………………………………………………………………onPacketLossتعریف‌متد‌-2
4- 2……………………………………………………………………………………………………………………………………………………………………………..onRTTUpdateتعریف‌متد‌-2
5- 2-‌تعریف‌تابع‌اصلی‌‌……………………………………………………………………………………………………………………………………………………………………………………………………‌3
6- 2-‌‌تست‌و‌اجرا‌…………………………………………………………………………………………………………………………………………………………………………………………………………….‌3
3- ‌پیاده‌‌سازی‌الگوریتم‌New Reno‌…………………………………………………………………………………………………………………………………………….‌4
4- ‌پیاده‌‌سازی‌الگوریتم‌BBR‌…………………………………………………………………………………………………………………………………………………………..‌4
5- سوالات‌…………………………………………………………………………………………………………………………………………………………………………………………..‌5
6-‌ جمع‌بندی‌و‌نکات‌پایان‌ی‌…………………………………………………………………………………………………………………………………………………………….‌6

ب‌

عنوان پروژه )پیاده سازی و تحلیل الگوریتمهای کنترل ازدحام(
در‌این‌پروژه‌شما‌به‌پیاده‌سازی‌و‌تحلیل‌سه‌الگوریتم‌کنترل‌ازدحام‌New Reno،Reno‌و‌BBR‌میپردازید‌. ‌
1- مقدمه
در‌این‌تمرین‌میخواهیم‌سه‌الگوریتم‌کنترل‌ازدحام‌را‌برای‌TCP‌پیاده‌سازی‌کنیم؛‌TCP‌یک‌پروتکل‌لایه‌انتقال‌است‌که‌به‌صورت‌گسترده‌مورد‌استفاده‌قرار‌میگیرد‌و‌مشخصه‌مهم‌آن،‌توانایی‌برقراری‌ارتباط‌قابل‌اطمینان‌است.‌ ‌
‌هدف‌از‌انجام‌این‌تمرین،‌دستیابی‌به‌درک‌عمیقتر‌از‌نحوه‌برقراری‌ارتباط‌TCP‌و‌ساز‌و‌کارهای‌مختلفی‌است‌که‌الگوریتمهای‌کنترل‌ازدحام‌در‌هنگام‌مواجهه‌با‌ازدحام‌به‌کار‌میگیرند‌. ‌

2- پیاده سازی الگوریتم Reno
TCP Reno‌از‌سه‌مکانیزم‌برای‌شناسایی‌و‌واکنش‌به‌ازدحام‌استفاده‌میکند:‌ ‌
1. ‌TCP:Slow start‌ابتدا‌نرخ‌ارسال‌خود‌را‌به‌صورت‌نمایی‌افزایش‌میدهد‌تا‌به‌آستانه‌مشخص‌CWND‌برسد‌و‌پس‌از‌رسیدن‌به‌حد‌
.تغییر‌فاز‌میدهد‌Congestion avoidanceبه‌حالت‌CWND
2. TCP:Congestion avoidance‌نرخ‌ارسال‌خود‌را‌به‌صورت‌خطی‌افزایش‌میدهد‌و‌با‌هر‌RTT‌موفق،‌مقدار‌CWND‌را‌به‌مقدار‌ثابتی‌افزایش‌میدهد؛‌اگر‌Timeout‌رخ‌دهد‌یا‌ازدحام‌تشخیص‌داده‌شود،‌به‌فاز‌Slow start‌تغییر‌فاز‌میدهد‌.
3. Fast recovery:‌اگر‌بستهای‌Lost‌شود،‌TCP‌وارد‌این‌فاز‌میشود.‌در‌این‌فاز،‌TCP‌نرخ‌ارسال‌خود‌را‌کاهش‌میدهد،‌CWND‌را‌نصف‌میکند‌و‌از‌مکانیزم‌Fast retransmit‌برای‌بازیابی‌بسته‌Lost‌شده‌بدون‌انتظار‌برای‌Timeout‌استفاده‌میکند‌.

TCPConnection تعریف کلاس -2-1
کلاسی‌به‌نام‌TCPConnection‌تعریف‌کنید‌که‌نشان‌دهنده‌TCP Connection‌است.‌این‌کلاس‌باید‌دارای‌متغیرهایی‌private‌برای‌ذخیره‌
CWND‌فعلی‌،ssthresh‌و‌RTT‌فعلی‌باشد‌و‌مقادیر‌اولیه‌به‌صورت‌public‌تعریف‌میشوند:‌

2-2- تعریف متد SendData متدی‌با‌عنوان‌SendData‌در‌کلاس‌TCPConnection‌تعریف‌کنید‌که‌ارسال‌داده‌را‌روی‌شبکه‌شبیه‌سازی‌میکند.‌این‌متد‌برای‌محاسبه‌نرخ‌ارسال،‌از‌مقدار‌CWND‌فعلی‌و‌ssthresh‌استفاده‌میکند‌.

3-2- تعریف متد onPacketLoss متدی‌با‌عنوان‌onPacketLoss‌در‌کلاس‌TCPConnection‌تعریف‌کنید‌که‌شناسایی‌بسته‌گمشده‌را‌شبیه‌سازی‌میکند‌.
This method should trigger the appropriate congestion control mechanism, such as reducing the cwnd and ssthresh, and entering fast recovery mode.

4-2- تعریف متد onRTTUpdate متدی‌با‌عنوان‌onRTTUpdate‌در‌کلاس‌TCPConnection‌تعریف‌کنید‌که‌دریافت‌آپدیت‌در‌RTT‌جاری‌را‌شبیه‌سازی‌میکند‌.
This method should update the RTT and adjust the cwnd accordingly, based on the current congestion control mode (slow start, congestion avoidance, or fast recovery).

5-2- تعریف تابع اصل ی
تابعی‌را‌تعریف‌کنید‌که‌یک‌محیط‌شبکه‌را‌شبیه‌سازی‌میکند.‌در‌این‌تابع،‌چند‌نمونه‌از‌کلاس‌TCPConnection‌را‌برای‌نمایش‌اتصالات‌مختلف‌TCP‌ایجاد‌کنید‌و‌ارسال‌داده‌و‌دریافت‌آپدیت‌RTT‌را‌برای‌هر‌اتصال‌شبیه‌سازی‌کنید‌.
همچنین‌شرایطی‌را‌شبیه‌سازی‌کنید‌که‌بسته‌ای‌Lost‌شده‌و‌با‌استفاده‌از‌متد‌onPacketLoss‌مکانیزم‌مناسب‌را‌فعال‌کنید‌. ‌

توجه‌کنید‌که‌شبه‌کد‌بالا‌صرفا‌برای‌درک‌بهتر‌نحوه‌پیاده‌سازی‌این‌تابع‌اضافه‌شده‌است‌و‌لازم‌است‌شما‌با‌خلاقیت‌خوتان،‌سناریوهای‌متفاوتی‌را‌در‌این‌تابع‌پیاده‌سازی‌کنید‌.

6-2- تست و اجر ا
برنامه‌خود‌را‌با‌سناریوهای‌مختلف‌نظیر‌مقادیر‌مختلف‌اولیه‌برای‌CWND‌و‌ssthresh‌و‌نرخ‌های‌متفاوت‌Packet loss‌تست‌کنید‌و‌الگوریتم‌پیاده‌سازی‌شده‌را‌از‌نظر‌Performance‌تحلیل‌کنید.‌همچنین‌لازم‌است‌اطلاعات‌هر‌TCP Connection‌شامل‌RTT،CWND‌و‌مکانیزم‌کنترل‌ازدحام‌نمایش‌داده‌شوند‌. ‌

3- پیاده سازی الگوریتم New Reno
حال‌که‌الگوریتم‌Reno‌را‌‌پیاده‌‌سازی‌کردیم‌،‌به‌سراغ‌‌پیاده‌‌سازی‌نسخه‌جدیدتر‌این‌الگوریتم‌یعنی‌‌New Reno‌میرویم.‌ ‌
مراحل‌‌پیاده‌سازی‌New Reno‌تا‌حد‌بسیار‌زیادی‌با‌مراحل‌‌پیاده‌سازی‌Reno‌همپوشانی‌دارند؛‌در‌ادامه‌این‌تمری ‌ن‌با‌اعمال‌تغییرات‌لازم‌در‌مراحل‌بالا،‌الگوریتم‌New Reno‌را‌‌پیاده‌سازی‌کنید‌،‌سپس‌مرحله‌6-2‌را‌برای‌این‌الگوریتم‌تکرار‌کنید. ‌راهنمایی:
برای‌‌پیاده‌سازی‌New Reno‌لازم‌است‌متد‌onSelectiveAck‌در‌کلاس‌TCPConnection‌اضافه‌شود.
This method should update the SACK (Selective Acknowledge) information and adjust the cwnd accordingly, based on the current congestion control mode (slow start, congestion avoidance, or fast recovery with
SACK).

4- پیاده سازی الگوریتم BBR
حال‌به‌سراغ‌الگوریتم‌سوم‌یعن ‌ی‌BBR‌م‌یرویم؛‌این‌الگوریتم‌نسبت‌به‌دو‌الگوریتم‌ذکر‌شده‌جدی‌دتر‌است‌و‌توسط‌شرکت‌Google‌توسعه‌داده‌شده‌است‌. ‌
هر‌چند‌استفاده‌از‌Reno‌و‌New Reno‌در‌شبکه‌های‌امروزی‌رای ‌جتر‌است‌ولی‌روز‌به‌روز‌بر‌محبوبیت‌الگوریتم‌BBR‌افزوده‌میشود. ‌
فلسفه‌الگوریتم‌BBR‌تا‌حدی‌با‌دو‌الگوریتم‌ذکر‌شده‌متفاوت‌است؛‌در‌ادامه‌این‌تمرین‌با‌اعمال‌تغییرات‌لازم‌در‌مراحل‌بالا،‌الگوریتم‌BBR‌را‌‌پیاده‌سازی‌کنید،‌سپس‌مرحله‌6-2‌را‌برای‌این‌الگوریتم‌تکرار‌کنید.

5- سوالات
اکنون‌که‌این‌سه‌الگوریتم‌را‌‌پیاده‌سازی‌کردی‌د‌و‌به‌درک‌عمیق‌تری‌از‌مفاهیم‌هر‌یک‌از‌آنها‌‌پی‌بردید‌به‌سوالات‌زیر‌پاسخ‌دهید‌:‌ ‌
• تفاوت‌کنترل‌ازدحام‌و‌کنترل‌جریان‌را‌صورت‌خلاصه‌بیان‌کنید‌.
• الگوریتم‌New Reno‌را‌به‌صورت‌خلاصه‌شرح‌دهید.
• الگوریتم‌BBR‌را‌به‌صورت‌خلاصه‌شرح‌دهید‌. ‌
• تفاوت‌این‌سه‌الگوریتم‌را‌به‌صورت‌خلاصه‌بیان‌کنید.‌ ‌
• بر‌اساس‌خروجی‌های‌مرحله‌6‌پیاده‌سازی‌برای‌هر‌الگوریتم،‌در‌شرایط‌یکسان،‌این‌سه‌الگوریتم‌را‌تحلیل‌و‌با‌هم‌مقایسه‌کنید.‌کدام‌الگوریتم‌بهترین‌و‌کدام‌بدترین‌کارایی‌را‌داشت؟‌آیا‌به‌صورت‌کلی‌می‌توان‌گفت‌یکی‌از‌این‌سه‌الگوریتم‌همیشه‌بر‌دو‌الگوریتم‌دیگر‌برتری‌دارد؟‌دلیل‌خود‌را‌با‌بررسی‌حالت‌های‌مختلف،‌تغییر‌معیار‌های‌مختلف‌و‌با‌ذکر‌مقادیر‌خروجی‌کد‌مربوطه‌تحلیل‌کنید.‌ ‌
• تعدادی‌از‌الگوریتم‌های‌کنترل‌ازدحام‌را‌که‌در‌این‌تمرین‌به‌آنها‌اشارهای‌نشده‌به‌صورت‌مختصر‌بررسی‌کنید‌؛‌یکی‌از‌این‌الگوریتم‌ها‌را‌که‌از‌نظر‌شما‌حداقل‌در‌یک‌معیار‌بر‌الگوریتم‌های‌New Reno،Reno‌و‌BBR‌برتری‌دارد‌را‌نام‌ببرید‌و‌دلیل‌
خود‌را‌توج‌یه‌کنید. ‌
6- جمع بندی و نکات پایانی
• مهلت‌تحویل:‌26 خرداد
• پروژه‌در‌گروههای‌2‌نفره‌انجام‌میشود.‌)گروه‌بندی‌در‌سامانه‌ایلرن‌نیز‌انجام‌میشود‌و‌تحویل‌تمرین‌به‌صورت‌گروهی‌خواهد‌بود(‌
• هر‌2‌نفر‌می‌بایست‌کار‌را‌تقسیم‌کنند.‌همچنین‌از‌Git‌برای‌ساختن‌branch‌و‌تقسیم‌issue‌ها‌استفاده‌نمایید‌.‌)با‌استفاده‌از‌commit‌ها‌ و‌ تعیین‌‌issue‌‌ها‌ میزان‌ مشارکت‌ هر‌ نفر‌ مشخص‌ میشود(.‌ بعد‌ از‌ انجام‌ این‌ کار‌ کدها‌ را‌ در‌ یک‌‌repository‌‌به‌ نام‌4_CN_CHomeworks‌در‌اکانتهای‌GitHub/GitLab‌خود‌قرار‌دهید)به‌صورت‌private(.‌همچنین‌در‌یک‌فایل‌README.md‌میتوانید‌report‌و‌داکیومنت‌خود‌را‌کامل‌کنید‌و‌در‌کنار‌repository‌قرار‌دهید.‌در‌نهایت‌لینک‌این‌repository‌را‌در‌محل‌پاسخ‌تمرین‌قرار‌دهید‌.‌)از‌فرستادن‌فایل‌به‌صورت‌زیپ‌جدا‌خودداری‌نمایید(.‌‌اکانت‌تی‌ایهای‌این‌تمرین‌رو‌به‌Repo‌خودتون‌به‌عنوان‌
Maintainer‌به‌پروژه‌اضافه‌کنید‌.
Github ID: UT-CNs02
• برای‌پیاده‌سازی‌این‌تمرین‌از‌C‌یا‌C++‌استفاده‌کنید‌.
• سیستم‌عامل‌ترجیجا‌Linux‌باشد‌.
• دقت‌کنید‌گزارش‌نهایی‌شما‌میبایست‌همانند‌یک‌Document‌باشد‌و‌شامل‌توضیح‌کد‌و‌ساختار‌کد،‌همچنین‌نتیجه‌نهایی‌اجرای‌کد،‌اسکرین‌شا ‌تهای‌دقیق‌از‌تمام‌مراحل‌و‌پاسخ‌سوالات‌باشد.‌)در‌فایل‌Readme.md‌کنار‌فایل‌اصلی‌خود‌و‌در‌Repo‌مربوطه‌قرار‌دهید(.‌این‌نکته‌حائز‌اهمیت‌است‌که‌فایل‌PDF‌به‌هیچ‌عنوان‌مورد‌پذیرش‌قرار‌نخواهد‌گرفت‌.
• ساختار‌صحیح‌و‌تمیزی‌کد‌برنامه،‌بخشی‌از‌نمرهی‌این‌پروژه‌شما‌خواهد‌بود.‌بنابراین‌در‌طراحی‌ساختار‌برنامه‌دقت‌به‌خرج‌دهید‌.
• برای‌هر‌قسمت‌کد‌،گزارش‌دقیق‌و‌شفاف‌بنویسید.‌کدهای‌ضمیمه‌شده‌بدون‌گزارش‌مربوطه‌نمر‌های‌نخواهند‌داشت.
• هدف‌این‌تمرین‌یادگیری‌شماست.‌لطفا‌تمرین‌را‌خودتان‌انجام‌دهید.‌در‌صورت‌مشاهدهی‌مشابهت‌بین‌کدهای‌دو‌گروه،‌مطابقت‌سیاست‌درس‌با‌گروه‌متقلب‌و‌تقلب‌دهنده‌برخورد‌خواهد‌شد.‌
• سؤالات‌خود‌را‌تا‌حد‌ممکن‌در‌فروم‌درس‌مطرح‌کنید‌تا‌سایر‌دانشجویان‌نیز‌از‌پاسخ‌آن‌بهرهمند‌شوند.‌در‌صورتی‌که‌قصد‌مطرح‌کردن‌سؤال‌خاصتری‌دارید،‌از‌طریق‌ایمیل‌زیر‌ارتباط‌برقرار‌کنید.‌توجه‌داشته‌باشید‌که‌سایر‌شبکههای‌اجتماعی‌راه‌ارتباطی‌رسمی‌با‌دستیاران‌آموزشی‌نیست‌و‌دستیاران‌آموزشی‌مؤظف‌به‌پاسخگویی‌در‌محیطهای‌غیررسمی‌نیستند.
mvali@ut.ac.ir o

موفق‌باشید‌

Reviews

There are no reviews yet.

Be the first to review “Exercises – به نام خدای آزادی Solved”

Your email address will not be published. Required fields are marked *