Routing آموزش CCNA

فصل سوم قسمت سوم: Dynamic Routing Protocol

حمیدرضا وطنی
نوشته شده توسط حمیدرضا وطنی

در ادامه مبحث آموزش CCNA در بخش سوم یعنی CCNA Routing میرسیم به بخش  Dynamic Routing Protocol . ما در قسمت قبل static route را توضیح دادیم و گفتیم که بیشترین بحث CCNA Routing سر این موضوع است که Routing Table یک روتر چگونه پر میشود. حال در این بخش خواهیم گفت که علاوه بر اینکه میتوان با static route جدول مسیریابی روتر یا routing table را پر کرد، پروتکل های دیگری نیز هستند که به صورت Dynamic جدول مسیریابی روتر یا routing protocol را پر میکنند.

Dynamic Routing Protocol :

همانطور که توضیح دادیم هدف از این بحث ، ایجاد route در جدول مسیریابی روترها به صورت dynamic است. dynamic routing protocol بهترین مسیر یا route را در جدول مسیریابی قرار میدهد. اگر route (مسیر)ای fail شود ، روتر ها باید آن route را از جدول مسیریابی (routing protocol) به صورت dynamic حذف کنند.

نکته : fail شدن subnet با fail شدن route متفاوت است. fail شدن subnet معمولا منجر به fail شدن یک و یا چند route در یک و یا چند روتر میشود.

اگر route ای جایگزین fail  route شده وجود داشته باشد ، باید به صورت dynamic اضافه شود.زمان همگرایی باید حداقل مقدار خود را داشته باشد یا به عباراتی پروتکل Loop Free ، routing باشد.

زمان همگرایی در بدترین شرایط:

  1. زمان تشخیص روت fail شده زیاد بشود.
  2. زمان تشخیص روت جایگزین زیاد بشود.

ممکن است زمان همگرایی فقط شامل حذف روت fail شده باشد.(روت جایگزین وجود نداشته باشد) و یا اینکه زمان همگرایی فقط شامل ایجاد روت جدید برای یک subnet جدید باشد.

تعریف Loop : ایجاد Loop در شبکه routing لزوما به این معنی نیست که بسته به دور خودش بچرخد. اگر بسته در روتر به مسیر اشتباه Forward شود، آن بسته دچار Loop شده است.

انواع Routing Protocol ها:

 

Routing Protocol : IGP هایی هستند که در داخل A.S (سازمان) اجرا میشوند.

Routing Protocol : EGP هایی هستند که در مابین A.S (سازمان) اجرا میشوند.

BGP پروتکل اینترنت است و بین همه A.S های اینترنتی ، BGP اجرا میشود.

ما در ccna routing همه داستانی که داریم روی IGP است و BGP را در ccnp routing بحث خواهیم کرد.

تعریف(A.S (Autonomous System

مجموعه subnet هایی که به یک سازمان تعلق داشته باشند و تحت مدیریت واحدی باشد. A.S یا autonomous system نامیده میشود. مثلا A.S مخابرات یا A.S بانک ملی و … .

حال به بررسی دو دسته از dynamic routing protocol ها یعنی distance vector و link state میپردازیم.

Distance Vector :

هر روتر اطلاعات route های کل جدول مسیریابی خود را فقط در اختیار روتر های همسایه قرار میدهد و این عمل را در زمان های دوره ای تکرار میکند.خیلی به درد به خور نیستند چون خیلی وابسته به شایعه هستند و گول میخورند.بهم دیگر route یاد میدهند.route یک چیز حساب شده است و چیزی است که process روش انجام شده است و هلو برو تو گلو.پس در اینجا route یهم یاد میدهند.

Link State :

هر روتر اطلاعات لینک های خود را در اختیار کلیه روتر های A.S و فقط یک بار قرار میدهد.اطلاعات لینک یعنی این اینترفیس up است ، down است ، ip اش چند است ، … . Link state ها مثلا ospf اطاعات مربوط به لینک را در data base ای به نام LSDB (Link State Data Base) جمع میکنند و به روتر های A.S یاد میدهد.

نحوه عملکرد پروتوکل های Distance Vector :

  1. هر روتر مستقل از نوع route ، routing protocol مربوط به subnet های directly connected را با برچسب c به جدول مسیریابی اش اضافه میکند.
  2. هر روتر کلیه route های جدول مسیریابی خود را در قالب routing update روی همه اینترفیس هایش advertise میکند.این routing update شامل directly connected route و route هایی است که یاد میگیرد.
  3. روتر ها به routing update های دریافتی روی اینترفیس هایشان گوش میدهند تا یاد بگیرند.
  4. فیلدهای routing update فقط شامل subnet number و metric می باشد. به عدد metric قبل از ارسال یکی اضافه میشود.
  5. آدرس مقصد broadcast ، routing update (در multi cast ، Ripv2) است، لذا همه روتر های روی یک اینترفیس ، routing update های ارسالی را دریافت میکند.
  6. اگر یک روتر برای یک subnet خاص چند route را یاد بگیرد ، فقط route ای را در جدول مسیریابی قرار میدهد که بهترین metric را داشته باشد. نکته : metric پارامتری است که بر اساس آن بهترین مسیر انتخاب میشود.
  7. ارسال و دریافت routing update به صورت دوره ای تکرار میشود.
  8. route ای که از طریق اینترفیس X یک روتر یاد گرفته میشود، انیترفیس خروجی آن X است.
  9. اگر روتری route ای را یاد بگیرد که آدرس مبدا ارسال کننده X ، route باشد ، به این معنی است که next hop آن X ، route است. نکته : تنها پروتکل هایی که mask را ارسال نمیکنند، ripv1 و igrp هستند.
  10. ارسال routing update تز جانب هر روتر در زمان Hello Time تکرار میشود ( Hello Time در ripv1 ، سی ثانیه است) و اگر روتر route ای را که قبلا یاد گرفته است را در زمان dead time دوباره یاد نگیرد، (زمان dead time در ripv1 شش برابر hello time است.یعنی ۱۸۰ ثانیه) به منزله fail بودن آن route و حذف آن از جدول مسیریابی است.

سوال : پروتکل های Distance Vector تا چه حد شرایط Dynamic Routing Protocol را دارا است؟

برای پاسخ به این سوال Distance Vector Loop Avoidance Feature را بررسی میکنیم.

نکته : حد اکثر metric در پروتکل Rip ، پانزده (۱۵) است.

Distance Vector Loop Avoidance Feature :

مشکلات پروتکل های Distance Vector و راه حل های آن عبارتند از:

مشکل ۱) زمان تشخیص Failed Route بالا است.یعنی زمان همگرایی یا convergence time بالا است.

در شکل بالا متوجه میشویم که هر روتر ۱۸۰ ثانیه طول میکشد تا بفهمد بسته ای از طرف روتری کناری نمی آید و آن route را حذف کند.پس اگر روتری را یاد گرفته باشد و از یاد ببرد ، ۱۸۰ ثانیه طول میشکد تا به نفر بعدی اعلام کند که من این route را بلد نیستم.بعدی به بعدی ۱۸۰ ثانیه ، بعدی بازهم ۱۸۰ ثانیه ، پس اگر ۱۶ تا روتر داشته باشیم ، ۱۵ تا ۱۸۰ ثانیه یعنی ۴۵ دقیقیه طول میکشد تا روتر اولی یا R1 متوجه بشود روتی حذف شده است.

راه حل : Route Poisoning ( سعی کردن Route ) ، دلیل اینکه این زمان همگرایی بالا است اینه که نمیگه مشکل پیش اومده ، دعا میکند تا ۳ دقیقه که ایشالا می آید و به طرف مقابل هم اعلام نمیکند. اما route poisoning میگوید تو قطع شدی ، به جای اینکه اون روت رو اعلام نکنی و دعا کنی ، اعلام کن.یعنی به محض اینکه قطع شدی ، اولین update ات که خواستی بفرستی بیا اون route را یاد بده ولی با metric شانزده (۱۶) یاد بده.

روتر زمانی که متوجه Failed شدن route میشود، به جای عدم ارسال آن ، آن route را با metric بی نهایت (بی نهایت در Ripv1 ، شانزده (۱۶) است.)

مشکل ۲) Counting To Infinity In One Link :

فرض : زمان ارسال Routing Update در روتر R1 و R2 دقیقا روی هم افتاده است.

به مثال زیر توجه کنید:

ابتدا R1 با metric =1 (A) شبکه یا network 172.16.1.0 را به R2 یاد میدهد.اگر فرض داشته باشیم که در اینجا routing protocol rip راه انداخته ایم و از آنجا که hop count ، rip است، یعنی تعداد روترهای داخل مسیر، پس R2 شبکه ۱۷۲٫۱۶٫۱٫۰ را با metric =2 (B) یاد میگیرد زیرا از یک روتر (R1) یاد گرفته است.پس R2 شبکه ۱۷۲٫۱۶٫۱٫۰ را با metric =2 (B) به همه از جمله R1 یاد میدهد، اما چون R1 آن را با metric =1 بلد است، دیگر لازم نیست از R2 یاد بگیرد.حالا network 172.16.1.0 قطع میشود و fail ، route 172.16.1.0 میشود، پس در rip برای اینکه روتر R1 به بقیه بفهماند که fail ، route 172.16.1.0 شده است، آن زا با metric =16 (C) به R2 یاد میدهد اما چون زمان ارسال Routing Update در روتر R1 و R2 دقیقا روی هم افتاده است، همان موقع R2 نیز route 172.16.1.0 را به R1 با metric =2 یاد میدهد، چون R1 قبل از این با metric =16 بلد بود ، الان با metric =3 بلد است، اگر بسته ای به مقصد ۱۷۲٫۱۶٫۱٫۰ بخواهد برود ، R2 بسته را به R1 میدهد زیرا از R1 این network را یاد گرفته است، R1 نیز چون با metric =3 از R2 یاد گرفته است، بسته را به R2 میدهد و metric R2 =4 میشود. دوباره R2 بسته را به R1 و R1 بسته را به R2 و بالعکس اتفاق می افتد و بسته دچار Loop در شبکه میشود.

راه حل : Split Horizon

نکته : قانون split horizon مهمترین قانون همه پروتکل های routing است.

در این قانون ارسال Routing Update مربوط به Subnet X به روتری که از طریق آن روتر این route را یاد گرفته است ممنوع میباشد.به عبارتی دیگر”چیزی را که از من یاد میگیری را به خودم یاد نده”

اگر بخواهیم فنی تر قانون Split Horizon را تعریف کنیم اینگونه میشود : مسیری را روی Best Route خودت Advertise نکن. (از آن کسی که یاد گرفتی ، به آن یاد نده.)

مشکل ۳) Counting To Infinity In More Than One Link :

فرض میکنیم زمان ارسال routing update دو روتر R1 و R3 دقیقا روی هم افتاده است.

در این جا Network R3 قطع میشود. R3 میخواهد به R1 و R2 یاد بدهد که قطع است ، در همان لحظه و قبل از اینکه R3 به R1 بگوید قطع است، R1 به R2 میگوید R3 وصل است.آیا قانون Split Horizon در اینجا به کمک ما می آید؟ خیر ، چون R1 بر طبق قانون Split Horizon حق ندارد Network ای را که از R3 یاد گرفته است را دوباره به R3 یاد بدهد، اما در اینجا میتواند به R2 یاد بدهد.در اینجا زمان ارسال Routing update دو روتر R3 و R1 روی هم افتاده است و R3 به R2 میگوید network ، قطع شده است اما در همان موقع R1 به R2 میگوید network را از من یاد بگیر.R2 مسیرش را از R3 به R1 تغییر میدهد و میگوید خب من network را از R1 باید بلد باشم به جای R3.پس best route اش R1 میشود و همین network را به R3 یاد میدهد.R3 که میگفت من قطع شدم الان باز بلد میشود و میدهد به R1 ، باز R1 به R2 میدهد و دچار Loop میشود.

راه حل: Hold Down Timer :

اگر روتری route ای را با metric بی نهایت یاد بگیرد، فرض میکند آن Failed ، route شده است و تا زمان hold down time که برابر ۱۸۰ ثانیه است،حرف هیچ روتر دیگری را در خصوص route مورد نظر باور نمیکند تا زمانی که مطمان شود کل شبکه نسبت به وضعیت جدید همگرا شده است.

مشکل ۴) زمان تشخیص Failed Route بالا است.

چرا؟چون گفتیم وقتی route ای failed میشود ، طرف باز باید صبر کند، routing update هر ۳۰ ثانیه یک در پروتکل rip بار ارسال میگردد.گفتیم route ای که failed میشود بیا به صورت infinity اعلامش کن یا poisoning اش کن بگو ۱ ثانیه قبل یک routing update ای ارسال شده است ، باز باید ۲۹ ثانیه صبر کند، تا اعلامش کند.این ۲۹ یا ۳۰ ثانیه باید صبر کند، حالا اگر ۱۰ تا روتر باشند، ۱۰ تا ۳۰ ثانیه میشود، قبلا ۱۰ تا ۱۸۰ ثانیه طول میکشید که با poisoning کردیمش ۳۰ ثانیه.

راه حل: Flush update / Trigger update : اگر روتری تشخیص دهد که route ای failed شده است ، برای اعلام failed شدن route زمان routing update را منتظر نمی ماند بلکه بلافاصله route را سعی می نماید و روی همه اینترفیس ها advertise (پخش) میکند.به عبارت دیگر اگر route ای failed شود ، با قانون فوق failed شدن آن route بلافاصله در کل شبکه advertise میشود.

قانون Split Horizon With Poison Reverse :

این قانون بیان میکند که قانون split horizon در خصوص route هایی که failed شده است ، صدق نمیکند. به عبارت دیگر جهت اطمینان بیشتر از همگرا شدن شبکه در خصوص failed route ، روتر ها route مورد نظر را روی همه اینترفیس ها از جمله انترفیسی  که سعی شدن ، از طریق آن اینترفیس یاد گرفته شده است ، سعی و advertise میشود.در واقع این قانون میگوید اگر route ای poison ای شد، قانون split horizon را در آن route رعایت نکن.یعنی من این route رو مثلا از کسی یاد گرفتم ، حالا failed میشه و اون با metric =16 به  من یاد میدهد، من هم با metric =16 به اون یاد میدهم. کار از محکم کاری عیب نمیکند.پس split horizon رو همیشه رعایت کن به غیر از اینکه route ات poisoning باشد.

 

نتیجه : زمان همگرایی در Distance Vector :

۱) زمان تشخیص Failed Route و ۲) زمان یادگیری Route جایگزین جدید

به طور متوسط زمان همگرایی Distance Vector ، برابر است با ۴٫۵ دقیقه.

در ادامه به توضیح dynamic routing protocol میپردازیم.

قسمت قبل قسمت بعد فهرست آموزش CCNA
[تعداد رای:2]

درباره نویسنده

حمیدرضا وطنی

حمیدرضا وطنی

درج دیدگاه