دسته بندی | ریاضی |
فرمت فایل | doc |
حجم فایل | 3035 کیلو بایت |
تعداد صفحات فایل | 140 |
مقدمه الگوریتمهای مسیریابی
در هریک از سه قرم گذشته فناوری خاصی رونق داشته باشد قرن هجدهم زمان توسعه سیستم های مکانیکی بزرگ به همراه انقلاب صنعتی بود. قرن نوزدهم عصر موتور بخار بود. قرن بیستم زمان جمع آو ری ،پردازش ، و توزیع اطلاعات بودو در بین سایر پیشرفت ها ،شاهد نصب شبکه های جهانی تلفن، اختراع رادیو و تلویزیون ، تولید و رشد بی سایقه صنعت کامپیوتر و پرتاب ماهواره های ارتباطی بوده ایم.
با پیشرفت فناوری این موارد د رحال همگرایی است و تفاوت هایی بین جمع آوری ، انتثال ذخیره و پردازش اطلاعات به شدت در حال محو شدن است سازمان هایی با صدها شعبه در نقاط مختلف جغرافیایی ،ب فشردن کلید وضعیت فعلی را حتی در دورترین نقاط بررسی می کنند. با افزایش فدرت جمع آوری، پردازش و توزیع اطلاعات، تقاضای پردازش اطلاعات پیچیده تر نیز افزایش می یابد
الگوریتمهای مسیر یابی
وظیفه اصلی لایه شبکه ، هدایت بستهها از ماشین منبع به ماشین مقصد است در اغلب زیر شبکهها ، بستهها باید چند جهش انجام دهند. تا به مقصد برسند. برای شبکههای پخشی،استثنایی وجود دارد، وای در اینجا نیز اگر منبع و مقصد در یک شبکه نباشد مسیر یابی مشکل محسوب میشود. الگورتیم هایی که مسیرها و ساختمان دادههای مربوط به آن را انتخاب میکنند، موضوع مهم را طراحی لایه شبکه اند.
الگوریتم مسیر یابی بخشی از نرم افزار لایه شبکه است که تعیین میکند بسته ورودی باید به کدام خط خروجی منتقل شود. اگر زیر شبکه از دادهها گرامها استفاده کند، این تصمیم گیری دوباره باید برای هر بسته ورودی تکرار شود ،چون تا آن موقع امکان دارد بهترین مسیر، تغییر کند اگر زیر شبکه از مدارهای مجازی استفاده کند ، تصمیمات مسیر یابی وقتی اتخاذ میشوند که مدار مجازی جدیدی استفاده گردد. از آن پس ، بستههای دادهها فقط از مسیر ایجاد شده قبلی منتقل میشوند.حالت دوم گاهی مسیر یابی تماس دارد ، زیرا مسیر در طول مدت تمسا کاربر باقی میماند ( مثل کار کردن با پایانه یا انتقال فایل ) صرف نظر از این که آیا مسیرها برای هر بسته به طور مستقل انتخاب میشوند یا فقط وقتی که اتصال جدیدی برقرار میشود انتخاب میگردند، خواصی وجود دارند. که در الگوریتمهای مسیر یابی مطلوباند صحت ، سهولت تحمل عیب، پایداری ، عدالت و بهینگی صخت وسهولت نیازی به توضیح ندارند، اما نیاز به تحمل عیب چندان روشن نیست. انتظار میرود که شبکههای بزرگ ، سالها بدون عیب کلی سیستم به کار خود ادامه دهند. در این مدت ممکن است اشکالات سخت افزاری و نرم افزاری گوناگونی به وجود آید. میزبانها مسیر یابها مسیر یابها بدون نیاز به توقف انجام انجام کارها در مسیر یابها و راه اندازی مجدد شبکه در هر بار متلاشی شدن مسیریاباز عهده تغییرات در توپولوژی و ترافیک برآید.
پایداری نیز برای الگوریتم مسیر یابی هدف مهمی است. الگوریتمهای مسیر یابی وجود دارند که هرگز وجود دارندکه هرگز به حالت پایداری نمیرسند.مدت زمان اجرای آن بی تاثیر است عدالت وبهینگی مممکن است ساده به نظر میرسند یقیینا کسی با آن مخالف نیست. اماهمان طور که روشن است اهداف متناقضی دارند به عنوان مثال از این تناقض ، شکل 1 را بینید. فرض کنید ترافیک کافی بین A و ش، بین B,B وبین C, C وجود دارد تا پیوندهای افقی را اشباع نماید برای بیشینه کردن کل جریان ترافیک X, X باید کاملا از بین برود. متاسفانه از نظر X وX عادلانه نیست بدیهی است که توافقی بین کارایی کلی و عدالت اتصالهای منفرد لازم است.
قبل از اینکه به متوزان کردن عدالت وبهینگی بپردازیم . باید تصمیم بگیریم که چه چیزی را بهینه کنیم . بدیهی است تاخیر بسته باید کمینه شود ولی توان شبکه باید بیشینه شود. علاوه براین این دو هدف نیز با هم تضاد دارند، زیرا عملکرد هر سیستم صف بندی در حد ظرفیت تاخیر صف بندی را زیاد ی کند. اغلب شبکهها سعی میکنند تعدداد جهشهای بستههای را کمینه نمایند زیرا کاهش تعدادجهش موجب بهبود تاخیر و نیزکاهش میزان پهنای باند مصرفی است که منجر به بهبود توان عملیاتی میشود.
الگوریتمهای مسیر یابی به میتوانند به دو دسته تقسیم شوند غیر وفقی و وفقی الگوریتمهای غیر وفقی تصمیات مسیر یابی خود را بر اندازه گیری یا تخمین توپولوژی و ترافیک فعلی بنا نمینهند بلکه برای انتخاب مسری جهت رسیدن از I به J برای تمام I را به تمام J از قبل محاسبه میشود در حالت OFF-LINE و هنگام راه اندازی شبکه به مسیر یابها بار میشود این روند گاهی مسیر یابی ایستا نام دارد.
برعکس الگوریتمهای وقفی تصمیات مسیر یابی خود را براساس تغییرات توپولوژی و ترافیک تغییر میدهند الگوریتمهای وفقی ، وقتی که مسیرها را عوض میکنند. مثلا هر ثانیه وقتی بار تغییر میکند، با وقتی توپولوژی تغییر میکند از نظر جایی که اطلاعات را میگیرند مثلا محلی از مسیریابهمجوار یا تمام مسیریابومعیارهایی که برای بهینه سازی مورد استفاده قرارمی گیرند. (مثلا ، محلی از مسیریاب همجواریا تمام مسیر یابها و معیارهایی که برای بهینه سازی مورد استفاده قرار میگیرند (مثلاً فاصله ، تعداد جهشها یا زمان انتقال تقریبی با یکدیگر متفاوتاند . در بخشهای بعدی الگوریتمهای الگوریتمهای گوناگونی را چه ایستا و چه پویا ،مورد بررسی قرار میدهیم.
اصل بهینگی
قبل از پرداختن به الگوریتم توجه به مهم است که صرف نظر از توپولوژی شبکه وتر افیکی ، میتوان حکمی کلی راجع به مسیرهای بهینه ارائه کرد این حکم را به عنوان اصل بهینگی شناخته میشود. این اصل بیا میکند که اگر مسیریابJ از مسیریاب I به مسیریابK در مسیریاب بهینهای شناخته میکند آنگاه مسر بهینهای از J و K نیز در مسیر مشابهی قرار میگیرد. برای مشاهده این موضوع ، بخشی از مسیر I به J را به بنامید و بقیه را نامگذاری کنید اگر مسیری بهتر از وجود داشت میتوانست با الحاق شود تا مسیری از I به K بهبود بخشد، و حکم ما را میگوید ? بهینه است نقض کند.
از اصل بهینگی میتوان نتیجه گرفت که مجموعهای از مسیرهای بهینه از تمام منابع به مقصدی معین ، درختی را تشکیل مید هد که ریشه اش مقصد است چنین درختی، درخت بایگانی نام دارد.شکل 2 در این درخت مقیاس فاصله تعداد جهشها است توجه داشته باشید. که درختهای دیگری با همان طول مسیر وجود داشته باشند هدف الگوریتمهای مسیر یابی، یافتن درختهای بایگانی و استفاده از انها برای تمام مسیر یابها است .
چون درخت بایگانی یک درخت است، فاقد هرگونه حلقه است. لذا هر بسته در تعداد مشخصی از جهشهای دریافت میشود. در عمل همیشه به این سادگی نیست.در اثنای کار، پیوندهای ومسیریابمیتوانند به طرف پایین بروند وبه طرف بالا برگردند. بنابراین امکان دارد مسیر یابهای مختلف راجع بع توپولوژی فعلی ایدههای متفاوتی داشته باشند .همچنین سوال دیگری که مطرح بود این بود که آیا هر مسیریابمجبور است به طور انفرادی اطلاعات مورد نیاز جهت محاسبه درخت بایگانی را به دست آورد یا این اطلاعات توسط وسایل دیگری جمع آوری میشوند در ادامه به طور مختصر به این موضوع میپردازیم با این وجود، اصل بهینگی ودرخت بایگانیهای معیارهایی را تهیه کردند که سایر الگوریتمهای مسیر یابی میتوانند براساس آنها ارزیابی شوند.
مسیر یابی کوتاه ترین مسیر
مطالعه الگوریتمهای مسیر یابی را با تکنیکی که به طور گسترده به شکلهای مختلفی به کار میرود شروع میکنیم، زیرا الگوریتم سادهای است ودرک آن آسان است. ایده ، ساختن گرافی از زیر شبکه است ، به طوری که ، هر گره گراف نشان دهنده مسیریاب است و هریال نشان دهنده خط ارتباطی است ( که اغلب پیوند نام دارد.) برای انتخاب مسیری بین دو مسیریابمعین ، الگوریتم ، کوتاهترین مسیر بین آنها را درگراف مییابد.
در مورد کوتاهترین مسیر توضیحاتی باید ارائه شود . یک راه اندازه گیری طول مسیر ، تعداد جهش است با این معیار ، طول مسیرهای ABC,ABE در شکل 3 یکسان است.و معیار دیگر معیار دیگر فاصله جغرافیایی به کیلومتراست ، در این حالت بدیهی است که ABC خیلی طولانی تر از ABE است با فرض این که شکل با مقیاس رسم شده است.
علاوه بر جهشها و فاصله فیزیکی معیارهای دیگری نیز قابل استفادهاند به عنوان مثال هریال میتواند به میانگین تاخیر صف بندی و انتقال برای بعضی از بستههای آزمایشی برچسب گذاری شود. با این برچسب گذاری، کوتاهترین مسیر به جای مسیری به جای مسیری که با کمترین یال یا فاصله سریع تر مسیر است.
در حالت کلی، برچسبهای یالها باید به صورت تابعی از فاصله ، پهنای باند، میانگین ترافیک هزینه ارتباط میانگین طول صف تاخیر اندازه گیری شده و سایر عوامل محاسبه شود. با تغییر تابع وزنی ، الگوریتم ،کوتاهترین مسیر وزن دار را براساس هریک از معیارهای فوق یا ترکیبی از آنها محاسبه میکند.
الگوریتمهای متعددی برای محاسبه کوتاهترین مسیربین در گره گراف شناسایی شدهاند یکی از این الگوریتمهای به دیکسترا 1995 نسبت داده میشود. هر گره دارای برچسب هایی در پرانتز است که فاصله آن تا گره منبع، از طریق بهترین مسیر شناخته شده نیست لذا تمام گرهها دارای بر چسب بی نهایت هستند .با ادامه اجرای الگوریتم وپیدا شدن مسیرها، امکان دارد برچسبها تغییر کنند تا مسیرهای بهتری منعکس نمایند. برچسب ممکن است موقتی یا دائمی باشد. در آغاز ، تمام برچسبها موقتیاند وقتی مشخص شد که برچسبی کوتاهترین مسیر بین منبع به آن گروه تمام برچسبها مو قتی اندوقتی مشخص شد که برچسبی کوتاهترین مسیر بین منبع به آن گره را نمایش میدهد، دائمی میشود و از آن پس تغییر نمیکند.
برای اینکه که مشخص شود الگوریتن برچسب گذاری چگونه کار میکند. گراف وزن دار بدون جهت شکل 3 الف را در نظر بگیرید. که وزنها ، مثلا فاصله را نشان میدهد میخواهیم کوتاهترین مسیر از A به D را بیابیم. با علامت گذاری گره A به عنوان گره ثابت که به صورت دایره پر نشان شده است. شروع میکنیم. سپس نوبت ، تمام همجوار A همجوار A گره کاری را تست میکنیم .هر کدام را با فاصله آن به A مجددا برچسب میدهیم. هر وقت گرهای مجددا برچسب دهی شد، آن رابا گره اس که کار از آنجا آغاز شد برچسب میدهیم به این ترتیب میتوانیم مسیر نهایی را بازسازی کنیم. با بررسی تمام گرهها همجوار A تمام گره هایی را که در کل گراف به طور موقت برچسب دهی شدند بررسی میکنیم و گرهای که دارای کوچک ترین برچسب است دائمی میکنیم. (شکل 3- ب) این گروه به عنوان گره کاری جدید انتخاب میشود.
اکنون از B شروع میکنیم و تمام گره هایی همجوار آن را مورد بررسی قرار میدهیم. اگر مجموع برچسب در B و فاصله B تا گرهای که باید در نظر گرفته شود کمتر از برچسب موجود در ان گره باشد کوتاهترین مسیر پیدا شده ، این گره مجددا برچسب گذاری میشود.
پس از این تمام کرهها همجوار گره کاری بررسی شدند و گرههای موقتی تغییر کردند ، کل گراف مورد جست وجو قرار میگیرد تا گرهای موقتی با کمترین مقدار برچسب گذاری میشود
برای پی بردن به عملکرد الگوریتم شکل 3 ج را ببیند در این شکل، E دائمی است فرض کنید مسیر AXYZA کوتاهتر از ABE باشد دو امکان وجود دارد: یا گره Z به عنوان گره دائمی منظور شده است یا نشده است اگر دائمی باشد E تاکنون بررسی شده است در سیکلی بعد از ان که Z دائمی شد. لذا AXYZE از دید ما خارج نبوده است و نمیتواند مسیر کوتاهتری باشد
اکنون حالتی را در نظر بگیرید که هنوز بر چسب Z موقتی باشد.برچسب موجود در Z بزرگتر یا مساوری برچسب در E است که در این حالت XYZE نسبت به ABC مسیر کوتاهتری نیست، یا کمتر از E است که در این حالت Z وE تاکنون بررسی مورد جستجو قرار میگیرد.
این الگوریتم در شکل 4 آمده است متغیرهایی عمومی N و DIST گراف را توصیف میکنند و قبل از فراخوانی SHORTEST PATH مقدار میگیرند . تنها بین برنامه والگوریتمی که تشریح شد این است که کوتاهترین مانند کوتاهترین مسیر از Sبه T محاسبه شده است .چون کوتاهترین مسیر از T به S در گراف بدون جهت است مهم نیست که از کدام طرف شروع کنیم مکر اینکه کوتاهترین مسیر متعددی وجود داشته باشد که در آن حالت جست و جستجوی معکوس مسیر دیگری را انتخاب مینماید. دلیل جستجوی معکوس این است که هرگره با گره قبلی خود (به جای گره بعدی) برچسب گذاری میشود. هنگام کپی کردن مسیر نهایی در متغیر خروجی PATH مسیر، معکوس میشود با معکوس کردن جستجو این دو اثر خنثی میشود. پاسخ به ترتیب درستی تولید میگردد.
الگوریتم غرق کردن
الگوریتم ایبستای دیگر غرق کردن است که درآن، هر بسته ورودی به تمام خطوط خروجی به جز خطی که از آن آمده است ارسال میشود. این الگوریتم ،بستههای تکراری زیادی در واقع نامحدود ایجاد میکند. مگر اینکه تدبیری اندیشیده شود که این کار را کند نماید یکی از این مقیاسها قرار داردن شمارنده جهش در سرآیندهر بسته است مقدار این شمارنده در هر جهش بسته یک واحد کم میشود. وقتی که این شمارنده به صفر رسید بسته دور انداخته میشود ایده آل این است که مقدار اولیه شمارنده جهش برابر با طول مسیر از منبع به مقصد قرار گیرد. اگر فرستنده طول مسیر را نداند، میتواند مقدار آن را برابربا بدترین حالت، یعنی ، قطر کامل زیرشبکه، قرار دهد،
تکنیک دیگر برای محدود کردن الگوریتم غرق کردن این است که بسته هایی که تاکنون ارسال شدهاند مشخص باشند، تا مجددا ارسال نگردند یک روش انجام این کار این است که مسیریابمنبع ، در بسته هایی که از میزبانهایش دریافت میکند شماره ترتیبی را قرار دهد در این صورت هر مسیریاببه ازای هر مسیریابمنبع به لیستی نیاز دارد تا مشخث کند کدام شماره ترتیب هایی که تاکنون از منبع ارسال شدند دریافت گردیدند. اگر بسته ورودی در آن لیست موجود باشد: ارسال نشده است.
برای جلوگیری از رشد بی رویه لیست، هر لیست باید دارای شمارندهای به نام K باشد،معنایش این است که تمام شماره ترتیبها از 1 تا K مشاهده شدهاند وقتی بستهای دریافت میشود، به راحتی میتوان تشخیص داد که این آیا تکراری است یا خیر اگر تکراری باشد، از آن صرف نظر میگردد. علاوه بر این ،به لیست کامل کمتر ازK نیازی نیست،زیرا K آن را خلاصه میکند.
شکل خاصی از الگوریتم غرق کردن که عملی تر است غرق کردن انتخابی نام دارد. در این الگوریتم،مسیر یابها هر بسته ورودی را به تمام خطوط خروجی نمیفرستند ، فقط به خط هایی میفرستند که تقریبا درجهت درستی منتقل میشوند کمتر اتفاق میافتد بستهای که میخواهد به غرب برود به خطی در قسمت شرق ارسال شود، مگر این که توپولوژی ویژهای به کار گرفته شود ومسیریاببه این حقیقت مطمئن باشد.
الگوریتم غرق کردن، در اغلب کاربردها عملی نیست، اما کاربردهایی دارد به عنوان مثال در کاربردهیای نظامی ، که لازم است در هر لحظه بیت هایی برای بسیاری از مسیر یابها ارسال شود، الگوریتم غرق کردن توانمند نوسازی شوند سومین کاربرد غرق کردن همواره کوتاهترین مسیر را انتخاب میکند، زیرا تمام مسیرهای ممکن را به طور موازی آزمایش میکند در نتیجه هیچ الگوریتم دیگری نمیتواند تاخیر کمتری ایجاد نماید. اگر سربار حاصل ازخود فرایند غرق کردن را نادیده بگیریم.
مسیر یابی بردار فاصله
شبکه هایی کامپیوتری مدرن به جای الگوریتمهای مسیر یابی ایستا از الگوریتم مسیریابی پویا استفاده میکنند، زیرا الگوریتمهای ایستا بار فعلی شبکه را در نظر نمیگیرند و دو الگوریتم پویا به نامهای مسیر یابی بردار فاصله و مسیر یابی حالت پیوند، عمومیت بیشتری دارند در این بخش به الگوریتم مسیر یالی بردار فاصله و در بخش بعدی به الگوریتم مسیر یابی حالت پیوند میپردازیم.
در الگوریتمهای مسیریابی بردار فاصله هر مسیریابجدول یا برداری دارد که بهترین فاصله به هر مقصد را نگهداری میکند خطی را که برای رسیدن به آن مقصد لازم است مشخص میکند. این جدولها از طریق تبادل اطلاعات با همسایهها بازسازی میشوند.
الگوریتم مسیر یابی بردار فاصله به اسامی دیگر نیز خوانده میشود. ازجمله الگوریتم مسیر یابی بلمن –فورد و الگوریتم و الگوریتم فورد – فورکرسون که نامگذاری آنها را نام مخترعین آنها بلمن 1975- فورد و فوکرسون، 1962 اقتباس شده است. این الگوریتم مسیر یابی ARPANET اولیه بود و تحت نام RIP در اینترنت مورد استفاده قرارگرفت.