جلسه بیست و پنجم

خب همانطور که قول داده بودم این جلسه به صورت عملی روتینگ پروتکل OSPF رو کار می کنیم.

در دوره CCNA به صورت خیلی مختصر به این روتینگ پروتکل پرداخته می شود و به صورت تکمیلی و کامل در دوره CCNP این روتینگ پروتکل کاربردی شرح داده می شود. شاید بتوان دوره CCNP را شرح دو روتینگ پروتکل EIGRP و OSPF دانست.

قبل از شروع کار یک نکته رو خدمتتون عرض کنم.

IOS که قبلا در وبلاگ قرار داده بودم، با OSPF مشکل داشت و من مجبور به تعویض آن شدم. پس اگر قبلا این IOS را دانلود کرده اید، حذفش کنید و مجددا این IOS رو  به نرم افزار GNS معرفی اش کنید.

نحوه تعریف روتینگ پروتکل OSPF

تعریف این روتینگ پروتکل مثل تعریف باقی روتینگ پروتکل ها با دستور Router شروع می شود.قطعا می دونید که باید در محیط Config terminal اقدام به تعریف نمایید.

Router(Confige)# Router OSPF 1

دو نکته :

اول اینکه عدد 1 که بعد از OSPF استفاده شده است. مثل IGRP یا EIGRP ، که شرح داده شد، AS Number نیست و در اینجا Process ID نام دارد. برعکس AS number در پراسس ID  لزومی ندارد که در دو روتر یکسان باشد تا دو روتر با هم همسایه شوند و برای یکدیگر آپدیت بفرستند.  بعبارت ساده تر یکسان نبودنش در دو روتر اختلالی در روند همسایگی ایجاد نمی کند. 

کلا پراسس ID برای این است که ما بتوانیم چند تا پروسه OSPF داخل یک روتر اجرا کنیم و بین پردازش OSPFهای مختلف در داخل یک روتر اختلاف بگذاریم . 

دقت داشته باشید که یک اینترفیس را نمی توان با چند پراسس ID تعریف کرد.توصیه می شود که عدد پراسس ID را در هنگام تعریف در همه روترها یکسان گذاشته شود.

دوم اینکه اگر به اینترفیس های داخل یک روتر IP نداده باشید ، چون هنوز Router-ID مشخص نشده است، اجازه تعریف OSPF را به شما نمی دهد.

خب از همان مثال همیشگی مان استفاده می کنیم.

برای پیاده سازی OSPF در داخل هرکدام از روترها به صورت زیر عمل می کنیم.

Router-1(config)#router ospf 1
Router-1(config-router)#network 10.10.10.1 0.0.0.255 area 1
Router-1(config-router)#network 192.168.10.1  0.255.255.255 area 1

برای روتر دوم نیز:

Router-2(config)#router ospf 1
Router-2(config-router)#network 10.10.10.2 0.255.255.255 area 1
Router-2(config-router)#network 172.16.0.1 0.0.255.255 area 1

دونکته بسیار مهم وجود دارد که من در اینجا باید به آن بپردازم

اگر دقت کرده باشید ، در قسمت network ، عدد بعد از 10.10.10.1 قطعا سابنت مسک نیست چرا که ساختار سابنت مسک آن به این صورت است 255.0.0.0 پس چرا در اینجا برعکس و به صورت 0.0.0.255 هست؟

همانطور که می دانید در OSPF به جای Subnet mask از Wildcard mask استفاده می شود. من در اینجا (وبلاگ CCNP ) مفصل توضیح دادم و  از توضیح دوباره اش در اینجا خودداری می کنم. لطفا به آنجا مراجعه کنید.

فقط در یک جمله بگم که wildcard mask برای مشخص کردن قسمت net از هاست نیست و برای این است که ما بتونیم اینترفیس ها را دسته جمعی تعریف کنیم. مثلا در بالا به جای اینکه بیاییم دو خط بنویسیم و نتورک ها را تعریف کنیم می تونیم از دستور زیر استفاده کنیم.

Router-2(config-router)#network 0.0.0.0 0.0.0.0 area 1

با استفاده از این دستور هرچندتا اینترفیس هم که باشد همگی با هم در area 1 قرار می گیرند و همه در OSPF تعریف می شوند. تعریف wildcard mask در ospf اجباری است. به نظر من بهتر هست اگر قصد داریم همه اینترفیس ها را در یک area قرار دهیم به جای تعریف نتورک در OSPF با استفاده از دستور بالا به صورت یکجا همه اینترفیس ها را به OSPF معرفی کنیم.

نکته بعدی اینکه همانطور که در قسمت تئوری گفتیم ، در OSPF با مفهومی به نام area بندی مواجهیم و حتما در تعریف network ها باید شماره area آن اینترفیس را مشخص کنیم و این کارهم اجباری است.

خب . اگر دستور show IP route را در محیط Privilege mode در هر دو روتر اجرا کنیم با تصویر زیر مواجه می شویم. ببینید:

همانطور که در تصویر بالا می بینید، روتر اول نتورک 172.16.0.0 را از طریق OSPF که با علامت اختصاری O مشخص کرده است دریافت کرده است. 

داخل کروشه در جلوی آدرس نتورک [110/65] نوشته شده است.که عدد 110 برای Administrative Distance  هست و عدد 65 برای Cost  مسیر هست که پس از محاسبه به عدد 65 رسیده است. 

در قسمت بعد via 10.10.10.2 درج شده است که یعنی این آپدیت از سریالی با این IP آدرس دریافت شده است.

اگر جای O ، حرف IA نوشته شده باشد یعنی این آپدیت را از یک area دیگر دریافت کرده است.

خب در اینجا چند دستور دیگر را با هم بررسی می کنیم:

اگر بخواهیم وضعیت اینترفیس ها را در روتینگ پروتکل OSPF مشاهده کنیم از دستور زیر استفاده می کنیم:

Router-1#show ip ospf interface

دستور بالا اطلاعات مربوط به همه اینترفیس ها را نشان می دهد. اگر بخواهیم اطلاعات مربوط به  اینترفیس خاصی را ببینیم کافی است نام اینترفیس را جلوی آن بنویسیم.

و اما اگر بخواهیم اطلاعات مربوط به همسایه ها را مشاهده کنیم از دستور زیر استفاده می کنیم.

Router-1#show ip ospf neighbor

همانطور که در تصویر می بینید با تایپ دستور این گزینه ها ظاهر می شوند. فقط در اینجا لازم هست که من توضیحی در مورد Dead Time بدهم.

همانطور که در جلسه پیش دیدیم OSPF ، هر ده ثانیه یکبار پکت های Hello را به سمت همسایه هایش می فرستد، که این زمان را زمان Hello Interval می گویند. اگر روتر Down شود یا بنا به هر دلیلی نتواند به روتر همسایه اش Hello  بفرستد ، روتر همسایه 40 ثانیه صبر می کند تا ببیند پکتی دریافت می کند یا خیر که به این زمان هم Dea Interval می گویند.

در اینجا زمان dead Time به 30 ثانیه رسیده است، که این زمان اگر Hello نرسد کمتر و کمتر می شود تا کلا  همسایه از جدول همسایگی خارج می شود.

اگر در انتهای دستور بالا details بگذاریم مشخصات همسایه ها را با جزئیات به ما نمایش می دهد. به این صورت:

Router-1#show ip ospf neighbor details

با تایپ این دستور می توان فهمید چه روترهایی به عنوان DR و BDR انتخاب شده اند.

در قسمت نکته های جلسه بیست و سوم گفتم که DR و BDR در نتورک های Point To Point انتخاب نمی شوند.اما اگر بخواهیم که در اینجا دو روتری که ما به هم وصل کردیم DR و BDR انتخاب شوند فقط کافی است که به داخل اینترفیس های هر دو روتر برویم و نوع نتورکشون رو به برودکست یا Point to Multi Point تغییر دهیم

به این صورت دقت کنید.به روتر اول می رویم:

Router-1#conf t

Router-1(config)#inter ser 0/0

Router-1(config-if)#ip ospf network Broadcast


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

Router-2#conf t

Router-2(config)#inter ser 0/0

Router-2(config-if)#ip ospf network Broadcast

کار تمام است. حالا اگر چند ثانیه صبر کنید و دستور show ip ospf neighbor details را تایپ کنید می بینید که DR و BDR را مشخص کرده است.( در صورتی که مشخص نشده باشد جای IP آنها 0.0.0.0 می گذارد)

خب یک نکته دیگر هم در جلسه بیست و سوم گفتم که برای انتخاب DR و BDR مشکلی که وجود دارد این هست که اولین روتری که روشن شود فارغ از هر گونه Priority و Router-ID ، بعنوان DR انتخاب می  شود .  و  دیگر DR بودن خودش را پس نمی دهد حتی اگر Priority اش پایین تر از همه باشد.

اما اگر بخواهیم که این پروسه انتخاب DR مجددا در شرایطی که همه روتر ها روشن هستند تکرار شود کافی است از دستور زیر استفاده کنیم.

به این صورت:

Router-1#clear ip ospf process

با تایپ دستور بالا پروسه انتخاب DR و BDR ریست می شود.

خب. بحث OSPF در همینجا بسته می شود. OSPF به صورت بسیار مفصل در CCNP - Route مطرح می شود و مطمئن باشید من به صورت بسیار بسیار کامل به این روتینگ پروتکل کاربردی می پردازم. امیدوارم که براتون مفید واقع شده باشد. موفق باشید.

جلسه بیست و چهارم

خب بی مقدمه می ریم سر اصل مطلب...

انواع بسته هایی که در OSPF ، روتر ها به سمت یکدیگر ارسال می کنند، شامل 5 نوع می باشد.

این 5 نوع یا Type عبارتند از:

Type 1: Hello

روترهایی که روتینگ پروتکل OSPF را اجرا می کنند بر طبق زمانبندی مشخصی که معمولا هر 10 ثانیه یکبار هست به سمت یکدیگر پیغام های Hello را ارسال می کنند. یعنی هر 10 ثانیه یکبار به یکدیگر می گویند سلام. تا هر دو متوجه شوند که همسایه شان هست و کابل ارتباطی سالم هست.

Hello Packet ها شامل اطلاعاتی همچون :  

1.router-id
2.area id 
3.authentication
4.Network mask
5.Hello Interval 
6.Dead Interval
7.DR 
8.BDR 
9.Neighbor IP
10.Authentication type

نگران نباشید همه را به مرور توضیح می دهیم.

اما قبل از اینکه پکت Hello ارسال شود چهار پارامتر، بین دو روتر چک می شود تا آن دو روتر یکدیگر را بعنوان همسایه انتخاب کنند. این 4 پارامتر باید بین دو روتر یکسان باشند. که عبارتند از :

1. area number

2. Hello Interval

3. Dead Interval

4. Authentication

بعد از اینکه مشخص شد که این 4 پارامتر بین دو روتر یکسان هست. آن دو روتر یکدیگر را بعنوان همسایه تشخیص می دهند و شروع به ارسال Hello Packet  به سمت یکدیگر می کنند.

Type 2:DBD

DBD مخفف عبارت Data Base Description هست. بسته های DBD به منظور انتخاب BR و DBR ارسال می شوند.

Type 3:LSR

LSR مخفف Link State Request هست. روترها بعد از اینکه همسایه هایشان را مشخص کردند، و همینطور  DR و BDR مشخص شد، با استفاده از پیغام LSR از روترهای همسایه تقاضا می کنند که برایشان آپدیت ارسال کنند.

Type 4:LSU

LSU مخفف عبارت Link State Update هست . LSU همان پکت های آپدیت  است که روترها به سمت یکدیگر  ارسال می کنند.

Type 5:LSA

مخفف عبارت Link State Acknowledgement هست. LSA همان پیام تصدیق هست. روتر به فرستنده آپدیت پکتی می فرستد تحت عنوان "LSA" تا به او بفهماند آپدیتی که فرستاده بودی دریافت شد. اصطلاحا می گویند در OSPF ، آپدیت ها Reliable هستند. یعنی نیازمند تصدیق هستند.بعبارت دیگر تا مادامی که پیام تصدیق یا LSA دریافت نشود آپدیت مجددا فرستاده میشود.


نکته بسیار مهم: 
اکثر افراد من جمله خود من ، OSPF Packet Types  رو با LSA Packet Types قاطی می کنند. این LSA با LSA که در OSPF Packet Types وجود دارد فرق دارد و این نکته مهمی هست که باید بهش توجه داشته باشید.

LSA که در OSPF Packet Types وجود دارد مخفف عبارت Link State Acknowledgement هست ولی LSA که در اینجا وجود دارد مخفف عبارت Link State Advertisement هست و مربوط به آپدیت هایی است که OSPF به سمت روترهای دیگر می فرستد که این آپدیت ها خودشون انواعی دارند که به هرکدامشان LSA گفته می شود. مثلا LSA Type 1  و LSA Type 2 و ...

برای روشن شدن بیشتر موضوع به تصویر زیر دقت کنید. نیازی نیست که از تمام تصویر سر در بیاورید اما کلیات بحث در تصویر مشخص است.

ان شاء الله انواع LSA هایی که روتر ها در OSPF به سمت یکدیگر می فرستند را در وبلاگ CCNP مفصل بحث خواهم کرد.
تا اینجای کار را داشته باشید. جلسه بعد پیاده سازی این روتینگ پروتکل را با هم بحث خواهیم کرد. موفق باشید.

جلسه بیست و سوم

خب .. روتینگ پروتکل های خانواده Distance Vector ها را با هم بررسی کردیم که عبارت بودند از RIP و IGRP. حال نوبتی هم باشد نوبت به خانواده Link State ها می رسد. ما فقط یکی از روتینگ پروتکل های این خانواده را با هم بررسی می کنیم که عبارت است از OSPF.

روتینگ پروتکل  Open Shortest Path First - OSPF

الگوریتمی که OPSF از آن استفاده می کند SPF هست که به آن Dijkstra هم می گویند. در OSPF هر روتر یک دیدکلی از شبکه دارد و بر مبنای اون دید کلی کوتاه ترین مسیر را انتخاب می کند و آپدیت هایش را به سمت روترهای دیگر روانه می کند.
برخلاف Distance Vector ها که به صورت روتین و ریتمیک مثلا هر سی ثانیه یکبار کل جدول مسیریابی شان را برای روتر های همسایه Advertise می کردند در Link state ها به محض بروز تغییر ، فقط تغییرات در شبکه ارسال می شود.جلوتر بیشتر به این مباحث می پردازیم..

برخی خصوصیات این روتینگ پروتکل را به صورت مختصر می بینیم:

1.Link State: همانطور که می دانید OSPF از خانواده Link State ها هست.

2. Multicast : آپدیت هایش را به صورت مالتی کست در شبکه ارسال می کند. که از دو IP استفاده میکند که عبارتند از 224.0.0.5 و 224.0.0.6

3. Classless هست.  (فرق بین Classfull و Classless رو یادتون هست؟)

4.Triggered Update  : یعنی به محض بروز تغییر در شبکه (مثلا down شدن یک روتر) اون تغییرات را در شبکه ارسال می کند.

5.: Cost  متریک مسیریابی اش بر اساس Cost هست. متریک مسیریابی RIP و IGRP رو یادتون هست؟

این متریک ارتباط مستقیم با Bandwidth اینترفیس دارد. فرمول محاسبه آن به صورت زیر هست:

همانطور که می بینید هر چقدر مخرج کسر عدد بزرگتری باشد(یعنی پهنای باند بیشتری داشته باشیم)، عددی که برای Cost بدست می آید عدد کمتری است. پس بهترین مسیر ، مسیری است که Cost کمتری داشته باشد.

6 . محدودیتی در تعداد روترها ندارد.

اما این محدودیت نداشتن در تعداد روترها و عدم محدودیت Hop Count اگر نظام مند نباشد چیز خوبی نیست. چون فرض بفرمایید با 1000 روتر طرف هستیم. چه پراسس سنگینی بر روی روتر اتفاق می افتد که بخواهد از بین این هزار روتر بهترین مسیر را انتخاب کند و یا به همه آپدیت بفرستد و... .

برای حل این مشکل از مفهومی به نام Area  بندی در داخل OSPF استفاده شده است. حالا این Area بندی یعنی چی؟ عرض می کنم خدمتتون.

Area بندی یعنی قسمت قسمت کردن. منطقه بندی کردن.ما از این طریق میتونیم شبکه را به قسمت های کوچکتر تقسیم کنیم.

برای روشن شدن بیشتر مطلب ،به تصویر زیر که اسکن از جزوه خودم هست دقت بفرمایید:

همانطور که می بینید ما 9 روتر را در سه Area به نام های Area-1 و Area-2 و Area-3 قرار دادیم. در اینجا در هر Area سه روتر قرار گرفته است. پیشنهاد شده است که در هر Area حداکثر تا 200 روتر قرار بگیرد.

قانون کلی در OSPF: هر روتر آپدیت های خودش را فقط برای روترهای Area خودش ارسال می کند.

برای اینکه بتونیم بین Area ها، ارتباط برقرار کنیم ، از یک Area مرکزی استفاده می کنیم که به آن Area-0 یا BackBone گفته می شود. اگر دقت کنید روترهای R-1 و R-2 و R-3 در BackBone یا Area-0 قرار گرفته اند.(در شکل هم مشخص شده است.)

BackBone وظیفه برقراری ارتباط بین Area ها را برعهده دارد پس بهتر است که در روتر های موجود در آن هیچ End User ی قرار نگیرد.

نکته دیگری هم که باید دقت کنید این هست که اینترفیس های روبروی هم حتما باید داخل یک Area باشند البته در شکل یک چیز بدیهی هست ولی در پیاده سازی نکته مهمی است که باید به آن دقت کنید.

تعریف یک سری اصطلاحات در OSPF

Normal Area: به Area ای که وظیفه برقراری ارتباط بین End User ها را برعهده دارد Normal Area گفته میشود.همه Area ها غیر از BackBone، نرمال Area هستند.

Transmit Area: به Area ای که وظیفه برقراری ارتباط بین Area های مختلف رو بر عهده دارد، Transmit Area می گویند. همانطور که خودتون هم متوجه شدید، منظور همان Area-0 یا BackBone هست.

ABR - Area Border Router: به روتری که حداقل دو تا از اینترفیس های آن در دو Area مختلف قرار گرفته باشد، ABR می گویند. اگر دقت کنید تمام روترهای بک بون ، ABR هم هستند، چون هر کدام دو اینترفیس در دو Area مختلف دارند.

ASBR - Autonomous System Border Router: به روتری که روتینگ پروتکل خارجی را وارد شبکه می کند، ASBR می گویند. Redistribution رو در جلسه پیش یادتون هست؟ روتری که روتینگ پروتکل خارجی رو Redistribue می کنه به داخل OSPF بهش ASBR می گویند.

در تصویری که از جزوه ام اسکن کردم روتر R-6 که RIP رو وارد کرده ،ASBR  نام دارد.


مفاهیم DR و BDR در OSPF

DR یا Designated Router در یک کلام نماینده روترها در هر Area هست.یعنی در هر Area یک روتر نماینده انتخاب می شود تا همه آپدیت هایشان را به اون بدهند تا آن روتر DR آپدیت ها را در شبکه پخش کند. BDR هم بک آپ یا پشتیبان هست که اگر این روتر از دسترس خارج شد سریعا BDR جاش رو بگیره.

اما این روتر DR یا نماینده چطوری انتخاب می شود؟ 

دو تا فاکتور برای انتخاب BR دخیل هست:

1- هر روتر Priority دارد، هر کدام از روتر ها که دارای Priority بالاتری باشد بعنوان DR انتخاب می شود.

2- اگر Priority ها یکسان بود ، روتری که Range IP بیشتری داشته باشد، یعنی Router-ID بالاتری داشته باشد، بعنوان DR انتخاب می شود.مثلا بین 10.0.0.1 و 11.0.0.1 مسلما 11 بالاتر هست.

البته این در شرایطی هست که همه روترها باهم روشن شوند چون موقع انتخاب DR، از بین روترهایی که روشن هست DR انتخاب می شود .مثلا اگر روترهای بسیاری باشند که Priority بالاتری داشته باشند ولی خاموش باشند و دیرتر روشن شوند، دیگر DR انتخاب شده عوض نمی شود.

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

یادتونه در بالا گفتیم که در  OSPF آپدیت ها به صورت مالتی کست در شبکه ارسال می شود و از دو آی پی 224.0.0.5 و 224.0.0.6 استفاده می شود؟ خب حالا چرا دو IP ؟

روترهایی داخل یک Area که با DR ارتباط دارند برای ارسال آپدیت هایشان از IP بزرگتر یعنی 224.0.0.6 استفاده می کنند. و روتر DR برای ارسال آپدیت هایش به روترهای دیگر از IP کوچکتر یعنی 224.0.0.5 استفاده می کند.

نکته ای در مورد BDR

هر آپدیتی که روترهای داخل یک Area می فرستند هم DR می گیرد و هم BDR. فقط فرقشان این هست که BDR به کسی جواب نمی دهد. البته این جواب ندادن ها تا زمانی است که DR از شبکه خارج شود و Down شود که در اون موقع BDR تبدیل به DR می شود و وظایف DR را انجام می دهد.

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

آپدیت شده در تاریخ 27/12/90

سه نکته از مبحث تئوری OSPF بحث انتخاب DR و BDR

یک. اگر روتری بخواهد در پروسه انتخاب BDR، DR شرکت نکند، عدد Priority اون رو صفر می گذاریم.

دو. روترها بزرگترین IP آدرس اینترفیس هایشان را به عنوان Router-ID در شبکه Advertise می کنند، اما این تا زمانی است که اینترفیس Loopback وجود نداشته باشد. معمولا بخاطر اینکه اینترفیس های فیزیکی UP و Down شدن زیادی دارند، یک اینترفیس مجازی (LoopBack) می سازند و به آن IP آدرس می دهند. زمانی که روتر اینترفیس LoopBack روی خودش داشته باشد، دیگر به بقیه اینترفیس هایش نگاه نمی کند و اون رو بعنوان Router-ID در شبکه Advertise می کند.

سه: DR و BDR فقط در شبکه های Mesh و Point to Multipoint انتخاب می شوند. و ما در شبکه هایی مثل  Point-to-Point چیزی به نام انتخاب DR و BDR نداریم و نیازی هم بهش نیست. به عبارت واضح تر در روتنیگ پروتکل OSPF در هر نوع شبکه ای DR و BDR انتخاب نمی شود.