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.