Description
تمرین برنامه نویسی شماره 03
عنوان: پروژهبرنامهنویس ی-شماره03 درس: شبک ههایکامپیوتر ی
استاد راهنما: دکترناصریزدان ی1 رشته: مهند سیکامپیوت ر
دستیاران آموزشی: اسامهایراندوست2،احمدرضاپارسیزاده3نیمسال دوم سال تح صیلی 02-1401
1نشانیپستالکترونیکی:yazdani@ut.ac.ir
osameh.irandoust@ut.ac.ir:نشانیپستالکترونیکی2
3نشانیپستالکترونیک:
أ
فهرست مطالب
عنوانپروژه…………………………………………………………………………………………………………………………………………………………………………………………………………………………….1 مقدمه………………………………………………………………………………………………………………………………………………………………………………………………………………………………………1 1- تعیینتوپولوژیشبکه………………………………………………………………………………………………………………………………………………………………….1
-2 نمایشتوپولوژیشبکه…………………………………………………………………………………………………………………………………………………………………1
-3 تغییرهزینهمسیریابی…………………………………………………………………………………………………………………………………………………………………..2
4- حذفارتباطبیندوگره………………………………………………………………………………………………………………………………………………………………2
5- 3………………………………………………………………………………………………………………….Border Gateway (BGP)پیادهسازیالگوریتم
4………………………………………………………………………………………………………………………………Link State (LSRP)پیادهسازیالگوریتم -6
7- 5………………………………………………………………………………………………………………..Distance Vector (DVRP)پیادهسازیالگوریتم
8- مقایسهنتایج………………………………………………………………………………………………………………………………………………………………………………….5
9- جمعبندیونکاتپایانی…………………………………………………………………………………………………………………………………………………………….7
ب
عنوان پروژه
هدفازاینتمرینآشناییباالگوریتمهایمسیریابیدرشبکهاست.دراینتمرینبازبانC++بهپیادهسازیالگوریتمهایBorder Gatewayوdistance vectorوlink stateومقایسهکردنآنهاخواهدپرداخت. مقدمه
در اینتمرینیکتوپولوژیعمومیکه از تعدادیروتر تشکی لشده است طراحیخواهیدکرد. هرکداماز لینکهایمیانروترها هزینها یخواهندداشتوهرروترجدولروتینگوارسالبستههایخودرابااستفادهازالگوریتمهایBorder Gatewayوdistance vectorوlink stateمحاسبهمیکند.درآخراینجدولهاچاپمیشوند.
دستوراتمربوطهتوسطخطفرمان)CLI(بهبرنامهدادهمیشوند.درادامهشرحایندستوراتراخواهیمداشت:
1- تعیین توپولوژی شبکه
باایندستورارتباطبینگرههایشبکهونیزهزینهمسیریابیبیندوگرهمشخصمیشود. توجه:ارتباطبینگرههابدونجهتمیباشد.
گرههایمبداومقصدنمیتوانندیکسانباشندودرصورتیکسانبودنبایدخطایمناسبچاپشود. برایمثال17-2-1بهاینمعنیاستکهمسیریازنود1بهنود2وباهزینه17وجوددارد.
ورودی
topology <s1>-<d1>-<c1> <s2>-<d2>-<c2> …
خروجی
OK
ورودی نمونه
topology 1-2-19 1-3-9 2-4-3
خروجی نمونه
OK
2- نمایش توپولوژی شبکه
بااستفادهازایندستور،ارتباطبیننودهایمختلفبههمراههزینهبیننودهادرقالبیکجدولنمایشدادهمیشود.
ورودی
show
خروجی
Adjacency Matrix
ورودی نمونه
show
خروجی نمونه
| 1 2 3 4
———————————-
1 | 0 19 9 -1
2 | 19 0 -1 3
3 | 9 -1 0 -1
4 | -1 3 -1 0
3- تغییر هزینه مسیریابی
بااستفادهازایندستورمیتوانهزینهمسیریابیبیندوگرهدرشبکهراتغییرداد.همچنیناگرمسیریبیندوگرهمشخصشدهوجودنداشتهباشد،یکمسیرجدیدایجادخواهدشد.گرههایمبداومقصدنمیتوانندیکسانباشندودرصورتیکسانبودنبایدخطایمناسبچاپشود.
ورودی
modify <s>-<d>-<c>
خروجی
OK | Error
ورودی نمونه
modify 1-3-4
خروجی نمونه
OK
4- حذف ارتباط بین دو گره
بااستفادهازایندستور،مسیرمیاندوگرهمشخصشدهازبینمیرود )اگرگرهیامسیروجودنداشتاروردلخواهبدهد(.
ورودی
remove <s>-<d>
خروجی
OK | Error
ورودی نمونه
remove 1-3
خروجی نمونه
OK
Border Gateway (BGP) پیاده سازی الگوریتم -5
دراینبخشالگوریتمBGPپیادهسازیمیشود.شمابایدکاریکهیکAutonomous System)AS)دراینالگوریتمانجاممیدهدراپیادهسازیکنید.
رابط هیبینASهادوحالتمشتری-تامینکنندهیاهمتا-همتامیباشد.درهنگامساختASتوپولوژیهمسایههاونوعرابطهبهاودادهمیشود.شمابایدقوانینموجوددرالگوریتمونحوهتبلیغاتواولویتبندیهاراپیادهسازیکنید.همجنیندرصورتیکسانشدناولوی تهاابتدابهمسیرکوتاهتروسپسمسیرباشمارهکمتراولینواسطاولیتمیدهیم.
درمسیرBGPممکناستمشکلاتامنیتیرخدهد.مثلایکASپیشوندیراتبلیغکندکهمتعلقبهخودشنیست.بایکASاقدامبهکوتاهتریابلندترنشاندادنیکمسیرنماید.یااینکهیکASخاصراازمسیریحذفیابهآناضافهکند.بایداینمواردرادرنظربگیریدوتشخیصدهید. دراینبخشکهیکشبی هسازیاستنیازیبهدانستنجزئیاتونحوهساختنبستههاندارید.اطلاعاتموردنیازازطریقپارامترهایتوابعارسالمیشود.اماتوصیهمیشودنگاهیبهRFC 4271بیاندازید.همچنینشمارهASهااز0تا31است.
اگرچندمسیربهیکپیشوندپیداکردیدبایداولویتآنهابهترتیب:مسیرهاازمشتری،مسیرهایازهمتا،مسیرهایازسرویسدهندهقراردهیدوبرمبینایآنیکمسیرگزارشکنید.مسیرهاییازهمتابهدستمامیرسدبهدیگرهمتاهاگزارشنمیکنیم.همچنینیکمشتریازمسیرهاییکهازیکسرویسدهندهگرفتهباشدرابهسرویسدهندهدیگرگزارشنمیکند.
درصورتیکهیکپیشوندراازقبلمتعلقبهیکASبدانیموپیامیبامبدامتفاوتبرایآنپیشونددریافتکنیمآنراhijackتشخیصمیدهیم. توجه:بهطوردلخواهمیتوانیداینالگوریتموتوابعآنراطراحیکنید)قالبدستوراتاینبخشبهدلخواهخودتاناستومیتوانیدبابیشازیکدستوراینبخشراپیادهسازیکنید(.
Link State (LSRP) پیاده سازی الگوریتم -6
ایندستورشمارهنودمبداراگرفتهوجدولمسیریابیرابرایآنرسممیکند.همچنینجزئیاتجدولدرهرiterationرانیزچاپکنید. درصورتیکهایندستوربدونآرگومانواردشود،نتایجرابرایتمامیگرههایشبکهچاپکنید.
ورودی
lsrp <source>
خروجی
Cost per destination in iterations. In end It shows final result.
ورودی نمونه
lsrp 1
خروجی نمونه
Iter 1:
Dest 1 | 2 | 3 | 4 | cost 0 | 19 | 9 | -1 |
————————
Iter 2:
Dest 1 | 2 | 3 | 4 | cost 0 | 19 | 9 | -1 |
————————
Iter 3:
Dest 1 | 2 | 3 | 4 | cost 0 | 19 | 9 | 22 | ————————
Path [s] -> [d] | Min-Cost | Shortest-Path
1->2 | 19 | 1->2
1->3 | 9 | 1->3
1 ->4 | 22 | 1->2->4
Distance Vector (DVRP) پیاده سازی الگوریتم -7
ایندستورشمارهنودمبداراگرفتهوجدولمسیریابیرابرایآنرسممیکند.درصورتیکهایندستوربدونآرگومانواردشود،نتایجرابرایتمامیگرههایشبکهچاپکنید.
ورودی
dvrp <source>
خروجی
It shows route table.
ورودی نمونه
dvrp 1
خروجی نمونه
Dest | Next Hop | Dist | Shortest-Path
————————————–
1 | 1 | 0 | [1]
2 | 2 | 19 | [1->2]
3 | 3 | 9 | [1->3]
4 | 2 | 22 | [1->2->4]
8- مقایسه نتایج
عملیاتمسیریابیرابررویتوپولوژیزیربرایتمامیمقصدهاانجامدهیدونتایجهردوروشرابایکدیگرمقایسهکنید.همچنینزمانهمگراییهردوالگوریتممسیریابیرادرهرمورداندازهبگیرید.سپساقدامبهحذفلینکبیندوگره10و4کردهونتایجمسیریابیرابههمراهزمانهمگراییپسازحذفلینکمجددابرایهردوروشمحاسبهکنید.
9- جمع بندی و نکات پایانی
• مهلتتحویل:12 خردادماه
• پروژهدرگروههای2نفرهانجاممیشود.)گروهبندیدرسامانهایلرننیزانجاممیشودوتحویلتمرینبهصورتگروهیخواهدبود(
• هر2نفرمیبایستکارراتقسیمکنند.همچنینازGitبرایساختنbranchوتقسیمissueهااستفادهنمایید.)بااستفادهازcommitها و تعیینissueها میزان مشارکت هر نفر مشخص میشود(. بعد از انجام این کار کدها را در یکrepositoryبه نام1_CN_CHomeworksدراکانتهایGitHub/GitLabخودقراردهید)بهصورتprivate(.همچنیندریکفایلREADME.mdمیتوانیدreportوداکیومنتخودراکاملکنیدودرکنارrepositoryقراردهید.درنهایتلینکاینrepositoryرادرمحلپاسختمرینقراردهید.)ازفرستادنفایلبهصورتزیپجداخوددارینمایید(.اکانتزیرروبهRepoخودتونبهعنوانMaintainerبهپروژهاضافهکنید.
Github ID: UT-CNs02
• برایپیادهسازیاینتمرینازCیاC++استفادهکنید.
• سیستمعاملترجیجاLinuxباشد.
• دقتکنیدگزارشنهاییشمامیبایستهمانندیکDocumentباشدوشاملتوضیحکدوساختارکد،همچنیننتیجهنهاییاجرایکدواسکرینشا تهایدقیقازتماممراحلباشد.)درفایلReadme.mdکنارفایلاصلیخودودرRepoمربوطهقراردهید(.ایننکتهحائزاهمیتاستکهفایلPDFبههیچعنوانموردپذیرشقرارنخواهدگرفت.
• ساختارصحیحوتمیزیکدبرنامه،بخشیازنمرهیاینپروژهشماخواهدبود.بنابرایندرطراحیساختاربرنامهدقتبهخرجدهید.
• برایهرقسمتکد،گزارشدقیقوشفافبنویسید.کدهایضمیمهشدهبدونگزارشمربوطهنمرهاینخواهندداشت.
• هدفاینتمرینیادگیریشماست.لطفاتمرینراخودتانانجامدهید.درصورتمشاهدهیمشابهتبینکدهایدوگروه،مطابقتسیاستدرسباگروهمتقلبوتقلبدهندهبرخوردخواهدشد.
• سؤالاتخودراتاحدممکندرفرومدرسمطرحکنیدتاسایردانشجویاننیزازپاسخآنبهرهمندشوند.درصورتیکهقصدمطرحکردنسؤالخاصتریدارید،ازطریقایمیلزیرارتباطبرقرارکنید.توجهداشتهباشیدکهسایرشبکههایاجتماعیراهارتباطیرسمیبادستیارانآموزشینیستودستیارانآموزشیمؤظفبهپاسخگوییدرمحیطهایغیررسمینیستند.
موفقباشید
Reviews
There are no reviews yet.