در پروتكل هاي روتينگ Distance vector ، بهترين مسير به يك شبكه راه دور بر اساس مسافت تعيين مي شود . هر مرتبه كه يك بسته اطلاعاتي از يك روتر عبور مي يابد به آن hop گفته مي شود. مسيري كه داراي تعداد hop كمتري به شبكه مورد نظر باشد به عنوان بهترين مسير انتخاب خواهد شد . در واقعvector ، نشاندهنده مسير و يا جهت رسيدن به شبكه راه دور را مشخص مي نمايد . پروتكل هاي RIP( برگرفته شده از Routing Information Protocol ) و IGRP ( برگرفته شده از Interior Gateway Routing Protocol ) دو نمونه متداول از پروتكل هاي روتينگ Distance-vector مي باشند . الگوريتم هاي روتينگ Distance-Vector ، اطلاعات جداول روتينگ را بطور كامل براي روترهاي همسايه ارسال تا آنها در ادامه اطلاعات دريافتي را با اطلاعات موجود در جداول روتينگ خود تركيب و دانش خود را در خصوص ارتباطات بين شبكه اي كامل نمايند .به روش فوق ، روتينگ مبتني بر شايعه ( rumor ) گفته مي شود چراكه روتر ، بهنگام سازي جدول روتينگ خود را بر اساس اطلاعات دريافتي از روتر همسايه انجام مي دهد. در اين روش روتر به اطلاعات دريافتي در خصوص شبكه هاي راه دور اعتماد مي نمايد بدون اين كه خود مستقيما" به اين نتايج رسيده باشد .
همانگونه كه اشاره گرديد ، RIP يك نمونه از پروتكل هاي روتينگ Distance-vector است كه براي تشخيص بهترين مسير به يك شبكه صرفا" از تعداد hop استفاده مي نمايد . در صورتي كه RIP بيش از يك لينك را به يك شبكه مشابه و با تعداد hop برابر پيدا نمايد ، بطور اتوماتيك از load balancing گردشي بر روي هر يك از لينك ها استفاده مي نمايد . پروتكل RIP قادر به انجام load balancing بر روي حداكثر شش خط با cost يكسان است .
نحوه آغاز به كار يك پروتكل Distance-vector براي آشنائي با پروتكل هاي روتينگ Distance-vector لازم است در ابتدا با نحوه عملكرد آنها پس از آغاز فعاليت آشنا شويم . در شكل 1 ، وضعيت جدول روتينگ چهار روتر پس از راه اندازي نشان داده شده است . در جداول فوق صرفا" اطلاعات مربوط به شبكه هائي كه مستقيما" به هر يك از روترها متصل شده اند ، ذخيره شده است .
پس از آغاز به كار يك پروتكل روتينگ Distance-Vector بر روي هر يك از روترها ، جداول روتينگ با استفاده از اطلاعات مسيرهاي جمع آوري شده توسط هر يك از روترهاي همسايه بهنگام مي گردند .
شكل 1 : وضعيت اوليه جداول روتينگ روترها
همانگونه كه در شكل 1 مشاهده مي نمائيد ، در هر يك از جداول روتينگ صرفا" اطلاعات شبكه هائي كه مستقيما" به هر روتر متصل شده اند ، ذخيره شده است . هر روتر اطلاعات كامل جدول روتينگ خود را براي هر يك از اينترفيس هاي فعال ارسال مي نمايد .
جدول روتينگ هر روتر شامل اطلاعاتي نظير شماره شبكه ، اينترفيس خروجي و تعداد hop به شبكه است . بدين ترتيب ، اطلاعات جدول روتينگ كامل و هر يك از آنها دانش لازم در رابطه با تمامي شبكه هاي موجود در ارتباطات بين شبكه اي را كسب مي نمايد .
شكل 2 ، وضعيت فوق را كه به آن همگرائي (converge) گفته مي شود نشان مي دهد . پس از همگرائي روترها ، اطلاعات موجود در جداول روتينگ بين آنها ارسال نخواهد شد .
بديهي است مدت زماني كه يك شبكه به همگرائي مي رسد بسيار حائز اهميت بوده و كند بودن اين فرآيند مي تواند پيامدهاي نامطلوبي را براي شبكه به دنبال داشته باشد . يكي از مسائل در ارتباط با پروتكل RIP ، كند بودن زمان همگرائي آن است .
شكل 2 : ايجاد همگرائي در شبكه
جدول روتينگ در هر روتر اطلاعاتي راجع به شماره شبكه راه دور ، اينترفيسي كه روتر از آن براي ارسال بسته هاي اطلاعاتي به شبكه استفاده مي نمايد و تعداد hop و يا متريك به شبكه را نگهداري مي نمايد .
حلقه هاي روتينگ ( Routing loops ) پروتكل هاي روتينگ Distance-Vector تغييرات ايجاد شده در ارتباطات بين شبكه اي را با انتشار مستمر اطلاعات بهنگام شده روتينگ به تمامي اينترفيس هاي فعال انجام مي دهند .
در اين فرآيند تمامي اطلاعات موجود در جدول روتينگ منتشر مي گردد. فرآيند فوق علاوه بر اشغال بخشي از پهناي باند لينك ارتباطي ، افزايش load پردازنده روتر را نيز به دنبال خواهد داشت . همچنين ، در صورتي كه يك شبكه با مشكل مواجه شود ، سرعت كند همگرائي پروتكل هاي روتينگ Distance-Vector مي تواند پيامدهاي منفي نظير جداول روتينگ متناقض و حلقه هاي روتينگ را به دنبال داشته باشد .
در پروتكل هاي روتينگ Distance-Vector همواره احتمال ايجاد حلقه هاي روتينگ وجود خواهد داشت چراكه هر روتر بطور همزمان بهنگام نمي گردد . براي آشنائي با نحوه ايجاد حلقه هاي روتينگ يك نمونه مثال را در شكل 3 بررسي مي نمائيم .
فرض كنيد اينترفيس به شبكه شماره 5 با مشكل مواجه شود . تمامي روترها دانش خود را در رابطه با شبكه شماره 5 از طريق روتر E دريافت مي نمايند . در جدول روتينگ روتر A يك مسير به شبكه شماره 5 از طريق روتر B وجود دارد .
زماني كه شبكه شماره 5 دچار مشكل گردد ، روتر E اين موضوع را به اطلاع روتر C مي رساند . اين كار باعث مي شود كه روتر C عمليات روتينگ به شبكه شماره 5 از طريق روتر E را متوقف نمايد . روترهاي B،A و D نسبت به بروز مشكل براي شبكه شماره 5 آگاهي نداشته و همچنان اقدام به ارسال اطلاعات بهنگام مي نمايند .سرانجام روتر C اطلاعات بهنگام شده خود را ارسال و باعث مي گردد كه روتر Bروتينگ به شبكه شماره 5 را متوقف نمايد . علي رغم اطلاع به روتر B ، روترهاي A و D هنوز به دليل عدم دريافت اطلاعات بهنگام شده از اين موضوع آگاهي نداشته و از نظر آنها شبكه شماره 5 همچنان از طريق روتر B با متريك شماره 3 دردسترس است .
شكل 3 : حلقه هاي روتينگ
مشكل زماني ايجاد مي شود كه روتر A پيامي با اين موضوع را ارسال نمايد : " من همچنان اين جا هستم و اين ليست لينك هائي است كه من آنها را مي شناسم " . در پيام فوق قابليت رسيدن به شبكه شماره 5 و نحوه دستيابي به آن تشريح شده است . بدين ترتيب روترهاي B و D اخبار جالبي را دريافت مي نمايند كه به آنها اعلام شده است شبكه شماره 5 از طريق روتر A قابل دستيابي است . روترهاي فوق نيز اقدام به ارسال اطلاعاتي مبني بر در دسترس بودن شبكه شماره 5 مي نمايند. بدين ترتيب هر بسته اطلاعاتي كه مقصد آن شبكه شماره 5 باشد به روتر A و سپس به روتر B رسيده و مجددا" به روتر A برگردانده مي شود .
بدين ترتيب يك "حلقه روتينگ " ايجاد مي گردد كه براي پيشگيري و برخورد با آنها مي بايست يك فكر اساسي كرد .
شمارش نامحدود به "حلقه هاي روتينگ " كه در بخش قبل تشريح گرديد ، " شمارش نامحدود " نيز گفته مي شود و علت اصلي بروز اينچنين مسائلي ، شايعات بياساس و اطلاعات نادرستي است كه در شبكه توزيع شده است . بدون وجود يك سيستم كنترلي ، تعداد hop هر مرتبه كه يك بسته اطلاعاتي از يك روتر عبور مي يابد ، افزايش خواهد يافت . سرعت كند همگرائي شبكه در الگوريتم هاي روتينگ يكي از دلايل اصلي بروز اينچنين مشكلاتي در شبكه است .
براي پيشگيري از اين نوع مسائل ، راه حل هاي مختلفي در هر يك از پروتكل هاي روتينگ پياده سازي شده است . تعريف حداكثر تعداد hop ، روش route poising ، روش poison reverse و split horizon نمونه هائي در اين رابطه مي باشند .
حداكثر تعداد hop يكي از روش هاي حل مشكل "شمارش نامحدود " ، تعريف يك حداكثر براي تعداد hopاست . پروتكل هاي روتينگ Distance-Vector نظير RIP صرفا" امكان افزايش تعداد hop را تا 15 فراهم مي نمايند . بنابراين هر چيزي كه نيازمند 16 hop باشد به منزله غيرقابل دسترس بودن تلقي مي گردد . به عبارت ديگر ، در مثال ارائه شده در بخش قبل ( شكل شماره 3 ) ، پس از ايجاد يك حلقه با پانزده hop، اين موضوع به اثبات مي رسد كه شبكه شماره 5 غيرفعال است .
بنابراين شمارش حداكثر تعداد hop ، باعث پيشگيري از گرفتار شدن بسته هاي اطلاعاتي در حلقه هاي تكرار مي گردد . روش فوق با اين كه راه حلي قابل اعمال در شبكه است ولي قادر به حذف حلقه هاي روتينگ در شبكه نمي باشد و بسته هاي اطلاعاتي همچنان در حلقه هاي روتينگ گرفتار خواهند شد . ولي در مقابل اين كه بسته هاي اطلاعاتي بدون نظارت ، كنترل و بررسي در طول شبكه حركت كنند ، حداكثر مسافتي را طي نموده ( به عنوان نمونه تا 16 hop ) و سپس از بين خواهند رفت .
Split Horizonيكي ديگر از راه حل هاي برخورد با مشكل حلقه هاي روتينگ ، Split Horizon است . در اين روش كه كاهش اطلاعات نادرست و حجم عملياتي اضافه روتينگ در يك شبكه Distance-Vector را به دنبال دارد از اين اصل تبعيت مي شود كه اطلاعات نمي توانند در مسيري كه از طريق آن دريافت شده اند مجددا" ارسال گردند . به عبارت ديگر ، پروتكل روتينگ ، اينترفيسي را كه از طريق آن بسته اطلاعاتي را دريافت كرده است بخاطر سپرده و هرگز از اينترفيس فوق براي ارسال مجدد آن استفاده نخواهد كرد .
بدين ترتيب و با تبعيت از اصل فوق ، روتر A از ارسال اطلاعات بهنگام شده اي كه از طريق روتر B دريافت نموده است براي روتر B منع مي شود .
route poisoning
يكي ديگر از روش هائي كه باعث پيشگيري از اطلاعات بهنگام شده متناقض و توقف حلقه هاي روتينگ مي گردد ، route poisoning ناميده مي شود . مثلا" زماني كه شبكه شماره 5 با مشكل مواجه مي گردد ( شكل 3 ) ، روتر E يك سطر را در جدول روتنيگ خود براي شبكه شماره 5 با مقدار hop شانزده ( غيرقابل دسترس بودن شبكه) درج مي نمايد ( مقدار دهي اوليه route poisoning ) .
با نادرست اعلام كردن مسير رسيدن به شبكه شماره 5 ، روتر C از بهنگام سازي اطلاعات جدول روتينگ خود مبني بر وجود يك مسير براي رسيدن به شبكه شماره 5 پيشگيري مي نمايد .زماني كه روتر C يك route poisoning را از طريق روتر E دريافت مي نمايد ، يك poison reverse را براي روتر E ارسال مي نمايد تا اين اطمينان ايجاد گردد كه تمامي روترهاي موجود در سگمنت اطلاعات مربوط به route poisoning را دريافت نموده اند .
route poisoning و Split Horizon يك شبكه distance-vector با قابليت اطمينان و اعتماد بيشتر را ايجاد مي نمايند كه در آن از بروز حلقه هاي تكرار پيشگيري مي گردد .
Holddown با استفاده از holddown پيشگيري لازم در خصوص بهنگام سازي اطلاعات يك مسير بي ثبات ، انجام مي شود . اين وضعيت معمولا" بر روي يك لينك سريال اتفاق مي افتد كه در يك لحظه برقرار و در لحظه اي ديگر غيرفعال مي گردد (flapping ) . در صورت عدم استفاده از روشي جهت تثبيت اين وضعيت ، شبكه هرگز همگراء نشده و اينترفيسي كه دائما" up و down مي گردد مي تواند تمامي شبكه را با مشكل مواجه سازد .
با استفاده از holddown از ثبت مسيرهائي كه وضعيت آنها با سرعت زياد تغيير پيدا مي نمايد ، پيشگيري بعمل آمده و به آنها يك فرصت زماني داده مي شود تا وضعيت پايداري پيدا نمايند . بدين ترتيب ، به روترها اعلام مي شود كه براي يك بازه زماني خاص هر گونه تغييراتي كه بر روي مسيرهاي حذف شده اخير تاثير مي گذارد را محدود نمايند . با اين كار از درج مسيرهاي بي ثبات در ساير جداول روتينگ پيشگيري بعمل مي آيد .
زماني كه يك روتر اطلاعات بهنگام شده اي را از طريق يكي از همسايگان مبني بر غيرقابل دسترس بودن يك شبكه دريافت مي نمايد ( شبكه اي كه تا پيش از اين فعال بوده است ) ، تايمر holddown آغاز به كار مي كند . در صورتي كه اطلاعات بهنگام شده جديدي از يك همسايه دريافت شود كه داراي متريك بهتري نسبت به وضعيت اوليه موجود در جدول روتينگ باشد ، holddown برداشته شده و داده عبور داده مي شود ولي اگر اطلاعات بهنگام شده اي از يك روتر همسايه دريافت گردد ( قبل از اتمام مدت زمان تايمرholddown ) ، كه داراي متريك برابر و يا كمتر از مسير قبلي باشد ، از اطلاعات جديد بهنگام صرفنظر و تايمر به فعاليت خود ادامه خواهد داد . بدين ترتيب زمان بيشتري براي ايجاد ثبات در شبكه قبل از آغاز فرآيند همگرائي آن فراهم مي گردد .
holddown از فرآيند بهنگام سازي مبتني بر trigger استفاده مي نمايد . در اين فرآيند تايمر reset مي گردد تا به روترهاي همسايه اطلاع داده شود يك تغيير در شبكه اتفاق افتاده است . برخلاف پيام هاي بهنگام از روترهاي همسايه ، در اين نوع بهنگام سازي ( مبتني بر trigger ) يك جدول روتينگ جديد ايجاد و بلافاصله براي روترهاي همسايه ارسال مي گردد چراكه يك تغيير در ارتباطات بين شبكه اي تشخيص داده شده است .