شبکه‌های کامپیوتری/مسیریابی: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
خط ۱۹:
! مسیر روتر !! متریک
|-
| روتر A به B || ٢
|-
| روتر B به C || ٣
خط ۲۸:
|}
 
به عنوان نمونه بهترین مسیر به هر مقصدی در این الگوریتم مسیریابی مسیری است که کمترین مقدار متریک را داشته باشد. متریک یک عدد است که به عنوان یک استاندار اندازه گیری برای لینک های یک شبکه استفاده میشود. در واقع هر متریک به یک لینک اختصاص دارد که به معنی هزینه استفاده از پهنای باند (Bandwidth) آن مسیر است.
 
 
به عنوان نمونه بهترین مسیر به هر مقصدی در این الگوریتم مسیریابی مسیری است که کمترین مقدار متریک را داشته باشد. متریک یک عدد است که به عنوان یک استاندار اندازه گیری برای لینک های یک شبکه استفاده میشود. در واقع هر متریک به یک لینک اختصاص دارد که به معنی هزینه استفاده از پهنای باند (Bandwidth) آن مسیر است.
 
<nowiki>##</nowiki>وقتی که روتر A نماینده یک packet bound از روتر C است،
سطر ۳۶ ⟵ ۳۴:
جدول مسیریابی دو مسیر ممکن به مقصد انتخابی را نشان میدهد. انتخاب اول فرستادن بسته از روتر A به روتر C به طور مستقیم است و گزینه دوم ارسال بسته از روتر A به روتر B و سپس از آن به روتر C است. الگوریتم مسیریابی برای تشخیص بهترین مسیر و انتخاب آن استفاده میشود. بعضی از پروتکل های مسیریابی ممکن است یک متریک را برای الگوریتم مسیریابی فراهم کنند، درحالی که پروتکل های دیگر ممکن است بیشتر از 10 متریک فراهم کنند. از طرف دیگر ممکن است دو پروتکل متفاوت یک متریک مشابه را برای یک الگوریتم همسان ارسال کنند، اما ممکن است منبع یک متریک در پروتکل های مختلف تفاوت داشته باشد. همچنین یک پروتکل مسیریابی ممکن است برای الگوریتم مسیریابی تنها یک معیار اراده دهد، اما این معیار میتواند معنی متفاوتی در الگوریتم دیگر داشته باشد. در الگوریتم مثال زده شده بهترین مسیر، مسیری است که کمترین هزینه متریک را دارد، بنابراین توسط اضافه کردن عدد متریک مرتبط با هر پیوند، میبینیم که مسیری از A به B و سپس به C که مقدار مجموع معیار آن عدد 5 است انتخاب میشود در حالی که مقدار متریک لینک مستقیم به روتر C عدد 6 است. بنابراین الگوریتم مسیر A-B-C را انتخاب و اطلاعات را توسط آن ارسال میکند.<br />
 
=== الگوریتم فاصله راس ها (Distance Vector Algorithms) ===
 
 
سطر ۳۰۶ ⟵ ۳۰۴:
 
 
[[پرونده:LSA.svg|جایگزین=|راست|بندانگشتی|500x500پیکسل]]
 
<br />
[[پرونده:LSA.svg|660x660پیکسل]]<br />
 
الگوریتم های بردار فاصله و الگوریتم های حالت لینک هر دو مسیری را با کمترین هزینه انتخاب  می کنند. با این حال، پروتکل های حالت لینک به صورت محلی تر کارها را انجام می دهند. اگرچه روتری که یک الگوریتم بردار فاصله را برای مسیریابی استفاده می کند،برای هر بسته داده شده هزینه مسیر را از مبدا تا مقصد محاسبه می کند. اما پروتکل حالت اتصال ، هزینه لینک های متصل و ضروری را محاسبه میکند. بدین معنی که در آن الگوریتم بردار فاصله، کمترین متریک بین گره A و گره C را محاسبه می کند، اما یک پروتکل حالت اتصال، آن را به عنوان دو مسیر متمایز از A به B و B به C محاسبه می کند. این فرآیند برای محیط های بزرگ بسیار کارآمد است. الگوریتم های حالت لینک روتر ها را قادر می سازد که روی لینک ها و اینترفیس های خود تمرکز کنند. هر روتر در یک شبکه  اطلاعات خود را فقط از روترها و شبکه هایی که به طور مستقیم به آن متصل است بدست می آورد. درواقع درمحیط های بزرگتر، روتر از قدرت پردازشی کمتری برای محاسبه مسیرهای پیچیده استفاده خواهد کرد. روتر نیاز دارد به شناختن واسطی مستقیم که می خواهد اطلاعات را به سرعت از طریق آن ارسال کند(واسط در اینجا به معنی مسیری است که شرایط ارسال اطلاعات به مقصد را مهیا میکند به طور مثال یک واسط می تواند شامل مسیری از یک یا روتر ها باشد). روتر بعدی در خط روند را تکرار می کند تا اطلاعات به مقصد خود برسد. مزیت دیگری برای چنین فرآیندهای مسیریابی محلی این است که پروتکل ها می توانند جداول مسیریابی کوچکتری را حفظ کنند. از آنجا که یک پروتکل حالت پیوند تنها اطلاعات مسیریابی را برای واسط های مستقیم آن حفظ می کند، جدول مسیریابی حاوی اطلاعات بسیار کمتری نسبت به پروتکل بردار فاصله است که ممکن است اطلاعات روی چند روتر وجود داشته باشد. پروتکل های حالت لینک مانند پروتکل های بردار فاصله، برای به اشتراک گذاشتن اطلاعات با یکدیگر نیاز به بروزرسانی دارند. این به روز رسانی  به نام (Link State Advertisements)  و به صورت خلاصه  (LSAs) شناخته می شود و هنگامی که وضعیت لینک های روتر تغییر می کند، این فرآیند اجرا می شود. هنگامی که یک لینک خاص در دسترس نیست (وضعیت تغییر می کند)، روتر از طریق شبکه به تمام روتر هایی که با آنها ارتباط مستقیم دارد اعلام می دارد و این روتر ها اطلاعات خود را بروز رسانی می کند.
سطر ۳۲۲ ⟵ ۳۲۰:
 
=== الگوریتم دایجسترا ===
<br />
[[پرونده:Dijkstra algorithm example 19.svg|راست|قاب]]
'''''الگوریتم Dijkstra از طریق مراحل زیر انجام می شود:'''''
 
خط ۳۳۰:
#* فیلد حالت که وضعیت گره را نشان می دهد هر گره یک حالت وضعیت دارد: "دائمی" یا "پیش فرض".
# در مرحله بعد، روتر پارامترهای وضعیت (برای تمام گره ها) را اولویت می دهد و فیلد حالت و وزن آنها را به ترتیب "پیش فرض" و"بی نهایت" تنظیم می کند.
# در طی این مرحله، روتر یک گره T-node را تنظیم می کند. برای مثال، اگر R1 منبعجد گره Tt-node باشد، روتر R1فیلد حالت این گره را به "دائمی" تغییر می دهد. هنگامی که فیلد حالت یک برچسبگره به "دائمی" دیگر تغییر مینمی کند، هرگز تغییری نخواهد کردکند.
#روتر رکورد وضعیت را برای تمام گره های پیشنهادی که به طور مستقیم به گره منبع متصل هستند، به روز می کند.
#روتر تمام گره های متصل را جستجو میکند و گره ای را انتخاب می کند که وزن آن تا گره R1 کمتر است. این گره سپس مقصد T-node است.
#اگر T-node جدید R2 نبود (مقصد مورد نظر)، روتر به مرحله 5 باز می گردد.
#اگر این گره R2 باشد، روتر گره قبلی خود را از رکوردهای وضعیت استخراج می کند و این کار را تا زمانی که به R1 برسدادامه میدهد. این لیست بهترین مسیر را از R1 تا R2 نشان می دهد.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
'''''مثالی از الگوریتم دایجسترا:'''''
 
بیایید بهترین مسیر را بین روترهای A و E پیدا کنیم. شش مسیر ممکن بین آنها وجود دارد (ABE، ACE، ABDE، ACDE، ABDCE، ACDBE)، و واضح است که ABDE بهترین مسیر است زیرا وزن آن کمترین است. اما همیشه به این آسانی نیست، و برخی از موارد پیچیده وجود دارد که در آن ما باید از الگوریتم ها برای یافتن بهترین مسیر استفاده کنیم.
 
1. گره A  به عنوان گره ریشه انتخاب شده است بنابراین فیلد حالت آن دائمی است.
[[پرونده:Dijkstra algorithm example 1.svg|راست|بندانگشتی|300x300پیکسل]]
 
 
 
 
 
 
 
 
 
2. در این مرحله، وضعیت گره هایی که به طور مستقیم به گره A متصل هستند(گره B و C) بررسی می شود. بنابراین گره B که هزینه مسیر آن از گره A کمتر از گره C است انتخاب میشود و فیلد حالت آن به دایمی تغییر میکند.
[[پرونده:Dijkstra algorithm example 2.svg|راست|بندانگشتی|300x300پیکسل]]
 
 
 
 
 
 
 
 
 
 
3. در این مرحله مانند مرحله قبل گره های متصل به گره B بررسی میشوند که در نتیجه گره D که هزینه کمتری دارد انتخاب میشود.
[[پرونده:Dijkstra algorithm example 3.svg|راست|بندانگشتی|300x300پیکسل]]
 
 
 
 
 
 
 
 
 
 
4. از آنجا که گره D به طور مستقیم به گره E متصل و هزینه این مسیر از مسیر DC کمتر است بنابراین گره E انتخاب میشود.
 
حالا ما باید مسیر را بررسی و صحت آن را تعیین کنیم. مجموع هزینه های مسیر ABDE <math>1+2+1=4</math> است، بنابراین میتوان فهمید که این مسیر بهترین است زیرا هیچ مسیر دیگری با هزینه کمتر نمی توان یافت. این الگوریتم به خوبی کار می کند، اما این عملیات در مقیاس بزرگ بسیار پیچیده است و زمان زیادی را برای پردازش مصرف می کند. این مسئله باعث کاهش بهره وری سیستم میشود. مورد مهم دیگر این است که اگر یک روتر به روترهای دیگر اطلاعات اشتباه داده ارسال کند، همه تصمیمات مسیریابی اشتباه شده که باعث کاهش بهره وری شبکه میشود.
 
مثال بعدی نشان می دهد که چگونه بهترین مسیرها را در میان تمام گره ها در یک شبکه پیدا کنید. مثال از الگوریتم Dijkstra Shortest Path استفاده می کند. شبکه زیر را در نظر بگیرید:
[[پرونده:Dj 1.png|راست|بندانگشتی|350x350پیکسل]]
 
 
 
 
 
 
 
 
 
 
در این مثال از الگوریتم دایجسترا  استفاده می کنیم تا مسیرهایی که گره A میتواند برای انتقال اطلاعات به هر یک از گره های دیگر استفاده کند را  پیدا می کنیم.  نحوه اجرا این فرآیند در جدول زیر نشان داده شده است:
 
{| border=1 cellpadding=5 cellspacing=0 style="text-align: center; background-color: #FFFFDD;"
! !! !! B !! C !! D !! E !! F !! G !! H !! I
|-
| Step 1 || A || 2-A || 3-A || 5-A || <math>\infty</math> || <math>\infty</math> || <math>\infty</math> || <math>\infty</math> || <math>\infty</math>
|-
| Step 2 || AB || || 3-A || 5-A || 7-B || 9-B || <math>\infty</math> || <math>\infty</math> || <math>\infty</math>
|-
| Step 3 || ABC || || || 4-C || 4-C || 9-B || <math>\infty</math> || <math>\infty</math> || <math>\infty</math>
|-
| Step 4 || ABCD || || || || 4-C || 9-B || <math>\infty</math> || 11-D || <math>\infty</math>
|-
| Step 5 || ABCDE || || || || || 8-E || 12-E || 7-E || <math>\infty</math>
|-
| Step 6 || ABCDEH || || || || || 8-E || 12-E || || 11-H
|-
| Step 7 || ABCDEHF || || || || || || 10-F || || 11-H
|-
| Step 8 || ABCDEHFG || || || || || || || || 11-H
|-
| Step 9 || ABCDEHFGI || || || || || || || ||
|}
 
<br />
[[رده:شبکه‌های کامپیوتری]]