سفر به اعماق پروتکل های مسیریابی: Link State ها (3)

سلام به همه ی همراهان عزیز. در دو قسمت قبلی سعی کردیم تا در رابطه با این که در پروتکل های link state روترها چطور همسایه هاشون رو پیدا می کنن و با اونها ارتباط همسایگی تشکیل میدن و این که چطور خودشون رو به همسایه هاشون معرفی می کنن، توضیح بدیم. در این قست قصد داریم تا با هم بررسی کنیم، بعد از این که روتری معرفی نامه ی سایر روترها در ساختار رو دریافت کرد، اون ها رو کجا ذخیره می کنه و بعد چطور با استفاده از این اطلاعات جدول روت خودش رو می سازه.

Link State Database
بعد از این که روترها معرفی نامه ی خودشون رو در قالب Link State Information ها ارسال کردند، این اطلاعات در دیتابیسی به اسم Link State Database ذخیره میشه. هر Link State Information باید دارای اطلاعاتی باشه که به کمک اون ها روتر توانایی محاسبه ی کوتاهترین مسیر رو داشته باشه. حداقل این اطلاعات عبارتند از: شناسه ای از روتر تولید کننده ی Link State Information، شناسه ای از همسایه ی متصل به این روتر و Cost یا همون هزینه از روتر تولید کننده ی Link State Information تا همسایش.
خوب فرض کنید یک ساختار ساده مثل تصویر زیر داریم:

ادامه خواندن “سفر به اعماق پروتکل های مسیریابی: Link State ها (3)”

سفر به اعماق پروتکل های مسیریابی: Link State ها (۲)

سلام به همه ی همراهان عزیز. اگر از مطلب قبل یادتون باشه، گفتیم که پیچیده ترین و مهم ترین بخش عملکرد Link State ها مربوط می شد به جریان Link State Information ها در ساختار. و گفتیم برای این که این جریان درست انجام بشه از فیلدهایی داخل فرمت Link State Information (اگر براتون سواله که چرا من از لفظ Link State Information استفاده می کنم، در قسمت قبل این موضوع رو توضیح دادم 🙂 ) استفاده می شد که یکی از اون ها Sequence Number بود. طراحی عملکرد این فیلد تاثیر زیادی بر نحوه ی فلودینگ Link State Information ها میذاشت. به همین دلیل مدل های مختلفی برای نحوه ی عملکرد این فیلد معرفی شد که عبارت بودند از : Linear , Circular و Lollipop. قصد داریم تا در این مطلب، با هم این مدل ها رو بررسی کنیم.

***

  • در نظر گرفتن فضای خطی برای Sequence Number:

در این مدل تصمیم بر آن شد که مقدار فیلد Sequence Number در یک بازه ی خطی متناهی از اعداد مثبت قرار داشته باشد. بنابراین اینطور در نظر گرفته شد که اگر Sequence Number، یک فیلد N بیتی باشد مثلا 32 بیتی، حداکثر مقداری که می تواند در آن قرار گیرد: 4,293,967,296=232 ‏‎ خواهد بود. ‏پس بازه ی خطی از 0 شروع شده و تا ‏‎4,293,967,296 ادامه می یابد و شمارش Sequence Number هم از صفر شروع شده تا به حداکثر این بازه برسد.

در این روش اگر چند Link State Information یکسان با Sequence Number های مختلف دریافت می گردید، Link State Information با Sequence Number بزرگتر جدیدتر در نظر گرفته می شد. اما این مدل دو مشکل بزرگ داشت: اول این که در این مدل، بازه به صورت متناهی در نظر گرفته شده بود و  زمان طراحی این مدل فرض بر این بود که مقدار حداکثر بازه، آنقدر بزرگ است که روتر ‏به این مقدار حداکثر نمی رسد. اما این موضوع در نظر گرفته نشد که روتر یک دستگاه است و ممکن است دچار تداخل در عملکرد شده و همین امر باعث شود که مقدار Sequence Number به حداکثر مقدار تعیین شده برای آن برسد. در این صورت اتفاقی که رخ می داد آن بود که کل فرآیند از ‏کار می افتاد و آنقدر منتظر می ماند تا ‏Age‏ آنLink State Information ‎  در تمام ‏دیتابیس ها منقضی شده و حذف شود و حال فرآیند می توانست نمونه ی جدیدی از آنLink State Information ‎  با مقدار حداقل برای Sequence Number را تولید و ارسال نماید. ادامه خواندن “سفر به اعماق پروتکل های مسیریابی: Link State ها (۲)”

سفر به اعماق پروتکل های مسیریابی: Link State ها (1)

سلام به همه ی همراهان عزیز. اگر با موفقیت از سرزمین Distance Vector عبور کنیم، سرزمین بعدی که بهش خواهیم رسید ‏Link State‏ نام داره. زمانی که از  Link State Routing Protocol ها یاد میشه، اون ها رو ‏هوشمند ولی پر از رمز و راز و پیچیدگی معرفی می کنن. بهتره پیش از ورود به این سرزمین، ‏کمی با خصوصیات این روتینگ پروتکل ها آشنا بشیم!  🙂

***

تاریخچه ی مختصری از تکنولوژی مسیریابی ‏Link State
برخلاف Distance Vector ها که فقط مسیرها را تبلیغ می کنند و هیچ  دیدی از کل شبکه در اختیار قرار نمی دهند، در ‏link state‏ ها روتر، مسیر تبلیغ نمی کند بلکه اطلاعاتی راجع به لینک های متصل به خود، وضعیت این لینک ها و همسایه ‏هایی که به این لینک ها متصل می باشند را به همسایه های خود تبلیغ می کند. روترها تا زمانی که این اطلاعات را از ‏همسایه های خود دریافت نکنند مسیری را برای رسیدن به مقصدی انتخاب نمی کنند. پس می توان اینگونه بیان کرد که:

اگر Distance Vector ‏ها حکم یک تابلو سر دو راهی را دارند، Link State ها در حکم یک نقشه ی کامل می باشند.

اما نحوه ی عملکرد ‏link state‏ ها به طور کلی به اینصورت است که:‏

  • تشکیل رابطه ی ‏adjacency‏ یا مجاورت با همسایه ها
  •  معرفی خود به همسایه ها
  • ساخت دیتابیسی از اطلاعاتی که از همسایه ها فراگرفته شده
  • ساخت جدول روت بر اساس اطلاعات دیتابیس تشکیل شده

    ‏تمام عملکرد ‏Link State‏ ها در این چهار خط خلاصه می شود. اما این فقط ظاهر امر می باشد، بیایید دقیق تر بررسی کنیم و ببینیم ‏پشت هر کدام از این موارد چه اتفاقی در حال رخ دادن است.‏

ادامه خواندن “سفر به اعماق پروتکل های مسیریابی: Link State ها (1)”

سفر به اعماق پروتکل های مسیریابی: Distance Vector ها (۲)

سلام به همه ی مهندسين گرامی. در اين قسمت سعی داريم تا با هم بررسی کنيم که پروتکل های مسیریابی Distance Vector  برای حل مشکلاتی که در پايان قسمت قبل مطرح کرديم، چه راهکارهايی رو به کار می برند.

***

  • اگر از قسمت قبل به یاد داشته باشید، بیان شد که Distance Vector ها بر طبق قانون خود بايد کل Routing Table را بعد از گذشت يک بازه ی زمانی مشخص ارسال می کردند. اما تصور کنيد روتر X همسايه ای با نام Y دارد و از آن مسيرها به مقاصد A و B را فرا گرفته و در Routing Table خود ثبت نموده است. بازه ی زمانی مشخص مي گذرد و X بايد تمام مسيرهای موجود در Routing Table خود را با يک پيام آپديت برای همسايه ی خود یعنی Y ارسال نماید، در اين صورت روتر X بايد مسيرها به مقاصد A و B اي را که از Y فرا گرفته، دوباره به آن تبليغ کند.

اينجا دو مساله مطرح مي شود: اول اين که روتر X با اين کار بيهوده به نوعی سبب هدر رفت منابع می شود (پهنای باند براي ارسال جداول روتی با حجم بالا که اکثر مسيرها از طريق همان همسايه فراگرفته شده باشد)

دوم اين که فرض کنيد مقصد A، از دسترس خارج شود. روتر Y از اين موضوع باخبر می شود و قصد دارد تا با يک پيام آپديت اين موضوع رو به همسايه اش اطلاع دهد، اما قبل از اين که بتواند اين کار را انجام دهد ناگهان آپديتی از روتر X دريافت مي کند مبنی بر اين که روتر X به مقصد A که يک گام با آن فاصله دارد، دسترسی دارد. اگر به خاطر داشته باشید بیان شد که Distance Vector ها حکم تابلویی سر دو راهي را دارند که فقط فاصله و جهت تا یک مقصد را اطلاع می دهند، اما اين که آيا اين اطلاعات واقعا درست است يا نه، هيچ تضمينی نيست. بنابراين روتر Y، حرف X را قبول کرده و دوباره مسير به مقصد A را با افزايش يک گام به hop-count آن، به جدول روت خود اضافه می کند. به اين ترتيب اگر پکتی به مقصد A به دست X برسد، آن را برای Y ارسال می کند و Y دوباره آن را برای X ارسال می کند و این عمل همينطور ادامه پيدا کرده و  Loop در مسیریابی رخ ميدهد.

در اینجا قانونی مطرح می شود که : اگر آپديتی از طريق يک اينترفيس ارسال شود، نبايد شامل مسيرهايی باشد که از طريق دريافت پيام آپديتی از روي همان اينترفيس، فرا گرفته شده باشند. به این قانون يک خطی Simple Split Horizon گفته می شود. پس Simple Split Horizon با سرکوب مسيرها از بروز loop جلوگيری ميکند.

ادامه خواندن “سفر به اعماق پروتکل های مسیریابی: Distance Vector ها (۲)”