بخشی از مقاله
الگوريتمهاي مسيريابي
مقدمه الگوريتمهاي مسيريابي
در هريك از سه قرم گذشته فناوري خاصي رونق داشته باشد قرن هجدهم زمان توسعه سيستم هاي مكانيكي بزرگ به همراه انقلاب صنعتي بود. قرن نوزدهم عصر موتور بخار بود. قرن بيستم زمان جمع آو ري ،پردازش ، و توزيع اطلاعات بودو در بين ساير پيشرفت ها ،شاهد نصب شبكه هاي جهاني تلفن، اختراع راديو و تلويزيون ، توليد و رشد بي سايقه صنعت كامپيوتر و پرتاب ماهواره هاي ارتباطي بوده ايم.
با پيشرفت فناوري اين موارد د رحال همگرايي است و تفاوت هايي بين جمع آوري ، انتثال ذخيره و پردازش اطلاعات به شدت در حال محو شدن است سازمان هايي با صدها شعبه در نقاط مختلف جغرافيايي ،ب فشردن كليد وضعيت فعلي را حتي در دورترين نقاط بررسي مي كنند. با افزايش فدرت جمع آوري، پردازش و توزيع اطلاعات، تقاضاي پردازش اطلاعات پيچيده تر نيز افزايش مي يابد
-
الگوريتمهاي مسير يابي
وظيفه اصلي لايه شبكه ، هدايت بستهها از ماشين منبع به ماشين مقصد است در اغلب زير شبكهها ، بستهها بايد چند جهش انجام دهند. تا به مقصد برسند. براي شبكههاي پخشي،استثنايي وجود دارد، واي در اينجا نيز اگر منبع و مقصد در يك شبكه نباشد مسير يابي مشكل محسوب ميشود. الگورتيم هايي كه مسيرها و ساختمان دادههاي مربوط به آن را انتخاب ميكنند، موضوع مهم را طراحي لايه شبكه اند.
الگوريتم مسير يابي بخشي از نرم افزار لايه شبكه است كه تعيين ميكند بسته ورودي بايد به كدام خط خروجي منتقل شود. اگر زير شبكه از دادهها گرامها استفاده كند، اين تصميم گيري دوباره بايد براي هر بسته ورودي تكرار شود ،چون تا آن موقع امكان دارد بهترين مسير، تغيير كند اگر زير شبكه از مدارهاي مجازي استفاده كند ، تصميمات مسير يابي وقتي اتخاذ ميشوند كه مدار مجازي جديدي استفاده گردد. از آن پس ، بستههاي دادهها فقط از مسير ايجاد شده قبلي منتقل ميشوند.حالت دوم گاهي مسير يابي تماس دارد ، زيرا مسير در طول مدت تمسا كاربر باقي ميماند ( مثل كار كردن با پايانه يا انتقال فايل ) صرف نظر از اين كه آيا مسيرها براي هر بسته به طور مستقل انتخاب ميشوند يا فقط وقتي كه اتصال جديدي برقرار ميشود انتخاب ميگردند، خواصي وجود دارند. كه در الگوريتمهاي مسير يابي مطلوباند صحت ، سهولت تحمل عيب، پايداري ، عدالت و بهينگي صخت وسهولت نيازي به توضيح ندارند، اما نياز به تحمل عيب چندان روشن نيست. انتظار ميرود كه شبكههاي بزرگ ، سالها بدون عيب كلي سيستم به كار خود ادامه دهند. در اين مدت ممكن است اشكالات سخت افزاري و نرم افزاري گوناگوني به وجود آيد. ميزبانها مسير يابها مسير يابها بدون نياز به توقف انجام انجام كارها در مسير يابها و راه اندازي مجدد شبكه در هر بار متلاشي شدن مسيرياباز عهده تغييرات در توپولوژي و ترافيك برآيد.
پايداري نيز براي الگوريتم مسير يابي هدف مهمي است. الگوريتمهاي مسير يابي وجود دارند كه هرگز وجود دارندكه هرگز به حالت پايداري نميرسند.مدت زمان اجراي آن بي تاثير است عدالت وبهينگي مممكن است ساده به نظر ميرسند يقيينا كسي با آن مخالف نيست. اماهمان طور كه روشن است اهداف متناقضي دارند به عنوان مثال از اين تناقض ، شكل 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 در اينترنت مورد استفاده قرارگرفت.
درمسير يابي بردار فاصله ، هر مسير باب داراي جدول است كه به ازاي هر مسير در زير شبكه يك وارده دارد اين وارده دو بخش است : خط خروجي پيشنهادي براي استفاده از آن مقصد و تخميني از زمان يا فاصله به آن مقصد مقياس مورد استفاده ممكن است تعداد جهشها ، زمان تاخير به ميلي ثانيه ، بسته هايي كه در مسير در صف قرار گرفتهاند يا چيزهايي مشابه آنها باشند.