OSPF چیست
جواب کوتاه
OSPF (Open Shortest Path First) پروتکل مسیریابی پویایی از خانوادهی link state است که درون شبکهی یک سازمان کار میکند. روترها با پیام Hello همسایه میشوند، اتصالهایشان را با LSA به هم میگویند و همه یک نقشهی یکسان میسازند. هر روتر با این نقشه کوتاهترین راه را خودش حساب میکند؛ کوتاه یعنی کمترین جمع هزینه، و هزینه از سرعت کابل میآید. شبکهی بزرگ به ناحیهها تقسیم میشود که همه به ناحیهی ۰ وصلاند.
نام
OSPF کوتاهشدهی Open Shortest Path First است: «اول کوتاهترین راه، و باز». «کوتاهترین راه» یعنی هر روتر کوتاهترین راه را حساب میکند؛ «باز» یعنی استاندارد است و مال یک سازنده نیست. OSPF همان نمونهی link state است که در درس مسیریابی پویا دیدید، و در شبکههای بزرگ سازمانی بسیار رایج است.
پنج کلمه
- LSAپیام کوتاهی که روتر با آن اتصالهایش را خبر میدهد؛ یک صفحه از کتاب نقشه.
- پایگاه وضعیت پیوند (LSDB)مجموعهی همهی LSAها در هر روتر؛ همان کتاب نقشه که در یک ناحیه برای همه یکسان است.
- هزینه (cost)عددی برای هر کابل که از سرعتش میآید؛ OSPF راهی را برمیگزیند که جمع هزینهاش کمتر است.
- ناحیه (area)بخشی از شبکه که نقشهی کاملش فقط درون خودش دانسته است؛ ناحیهی ۰ ستون اصلی است.
- DRروتر «تعیینشده» در شبکهای که چند روتر دارد؛ همه به او خبر میدهند و او به همه.
همسایه شدن
دو روتر OSPF که با کابل به هم وصلاند، اول باید همسایه شوند. مثل دو دانشجوی تازه که اول سلام میکنند، بعد جزوههایشان را مقایسه میکنند تا هر دو یک جزوهی کامل داشته باشند:
کلمههای انگلیسی کنار هر قدم، نام حالت آن قدم است. در Init روتر Hello را گرفته ولی هنوز گفتوگو دوطرفه نیست؛ در Two-way هر کدام دیده که دیگری او را دیده است؛ در Exchange فهرست کتاب نقشهشان را میفرستند؛ در Loading صفحههایی را که ندارند میخواهند؛ و در Full کتاب نقشهی هر دو کاملا یکسان است.
نقشهی مشترک
وقتی همه همسایه شدند، هر روتر در یک ناحیه همان کتاب نقشه را دارد. هر روتر با روش Dijkstra درختی از کوتاهترین راهها میکشد که ریشهاش خودش است، و جمع هزینهها تصمیم میگیرد:
اگر کابلی قطع شود، روترهای دو سرش خبر را با LSA تازه به همه میدهند، همه نقشه را درست میکنند و درخت را دوباره حساب میکنند. OSPF در چند ثانیه به ساختار تازهی بی حلقه میرسد.
هزینه
هزینهی هر کابل را خود روتر حساب میکند: سرعت مرجع تقسیم بر سرعت کابل. سرعت مرجع پیشفرض ۱۰۰ مگابیت است. پس کابل ۱۰ مگابیتی هزینهی ۱۰ دارد، و کابلهای ۱۰۰ مگابیتی و تندتر همه ۱، چون هزینه از ۱ کمتر نمیشود:
| سرعت کابل | مرجع ۱۰۰ مگابیت | مرجع ۲۰۰ گیگابیت |
|---|---|---|
| ۱۰ مگابیت | ۱۰ | ۲۰٬۰۰۰ |
| ۱۰۰ مگابیت | ۱ | ۲٬۰۰۰ |
| ۱ گیگابیت | ۱ | ۲۰۰ |
| ۱۰ گیگابیت | ۱ | ۲۰ |
با مرجع پیشفرض، OSPF میان کابل ۱۰۰ مگابیتی و ۱۰ گیگابیتی فرقی نمیبیند. برای همین میشود سرعت مرجع را بالا برد، مثلا تا ۲۰۰ گیگابیت، تا هر سرعت هزینهی خودش را بگیرد. هزینهی هر کابل را دستی هم میشود تعیین کرد.
پردیس و ناحیهها
دانشگاه بزرگی را در نظر بگیرید. اگر هر دانشجو نقشهی همهی راهروهای همهی دانشکدهها را حفظ کند، کتاب نقشه خیلی سنگین میشود. پس هر دانشکده نقشهی خودش را دارد، و بیرونیها فقط خلاصهاش را میدانند. OSPF هم شبکهی بزرگ را به ناحیهها تقسیم میکند:
- ناحیهی ۰ (یا 0.0.0.0) ستون اصلی است، مثل حلقهی مرکزی پردیس. همهی ناحیهها باید به آن راه داشته باشند.
- روتر درونی همهی رابطهایش در یک ناحیه است و فقط نقشهی همان را دارد.
- ABR (روتر مرز ناحیه) مثل دربان میان دانشکده و حلقه است: برای هر ناحیهای که به آن وصل است کتاب نقشهی جدا دارد و خلاصهاش را به بقیه میدهد.
- ASBR راههایی را که از بیرون، مثلا از BGP یا مسیر ایستا، آمدهاند به OSPF میآورد.
شمارهی هر ناحیه یک عدد ۳۲ بیتی است که مثل نشانی IP نوشته میشود، ولی نشانی IP نیست. ناحیهها ترافیک مسیریابی میان بخشهای شبکه را کم میکنند. گونههای ویژهای هم دارند، مثل stub، که راههای بیرونی را به درون ناحیه راه نمیدهد.
نمایندهی کلاس
اگر در یک کلاس شلوغ هر دانشجو هر خبر را به تکتک بقیه بگوید، کلاس پر از صدا میشود. پس یک نماینده انتخاب میکنند: همه به او خبر میدهند و او به همه. اگر چند روتر روی یک شبکهی مشترک باشند (مثلا یک سوییچ اترنت)، OSPF هم همین کار را میکند:
DR (Designated Router) نماینده است و BDR (Backup) نمایندهی دوم، که اگر DR از کار بیفتد جایش را میگیرد. روترهای دیگر فقط با این دو رابطهی کامل میسازند. انتخاب با اولویت است: عددی از ۰ تا ۲۵۵، بیشتر بهتر؛ ۰ یعنی این روتر هرگز DR نشود. اگر اولویتها برابر باشند، روتر با Router ID بزرگتر برنده است. روتری که بعد از انتخاب با اولویت بالاتر بیاید، جای DR را نمیگیرد تا DR و BDR از کار بیفتند.
شناسنامهی OSPF
- نه روی TCP و نه روی UDP؛ مستقیم درون بستهی IP، با شمارهی پروتکل ۸۹ (درس TCP و UDP).
- نشانی چندپخشی 224.0.0.5 برای همهی روترهای OSPF و 224.0.0.6 برای DR و BDR؛ در IPv6 FF02::5.
- OSPFv2 در سال ۱۹۹۸ (RFC 2328)، برای IPv4؛ OSPFv3 در سال ۲۰۰۸ (RFC 5340)، برای IPv6.
- هر روتر یک Router ID دارد که مثل نشانی IP نوشته میشود، مثلا 1.2.3.4؛ اگر تعیین نشود، روتر بزرگترین نشانی خودش را برمیدارد.
- با CIDR کار میکند (درس CIDR) و هزاران روتر را میتواند بگرداند.
OSPF و RIP
| RIP | OSPF | |
|---|---|---|
| خانواده | distance vector | link state |
| معیار | شمار هاپ | هزینه، از سرعت کابل |
| اندازهی شبکه | تا ۱۵ هاپ | هزاران روتر، با ناحیهها |
| همگرایی | کند | چند ثانیه |
| روی | UDP، پورت ۵۲۰ | مستقیم روی IP، پروتکل ۸۹ |
| تنظیم | بسیار آسان | کار بیشتر |
RIP فقط روترهای سر راه را میشمارد و سرعت کابل را نمیبیند؛ OSPF هزینه را از سرعت حساب میکند. در شبکههای بزرگ ارائهدهندههای اینترنت، پروتکل link state دیگری به نام IS-IS هم رایج است.
سه اشتباه
- «OSPF کابل ۱ گیگابیتی را همیشه بهتر از ۱۰۰ مگابیتی میبیند.»با سرعت مرجع پیشفرض ۱۰۰ مگابیت، هزینهی هر دو ۱ است، مگر سرعت مرجع را بالاتر ببرید.
- «شمارهی ناحیه و Router ID نشانی IP هستند.»فقط مثل نشانی IP نوشته میشوند؛ هر دو یک عدد ۳۲ بیتیاند و لازم نیست نشانی واقعی باشند.
- «ناحیهها را میشود هر طور خواست به هم وصل کرد.»هر ناحیه باید به ناحیهی ۰ راه داشته باشد؛ OSPF این را برای جلوگیری از حلقهی مسیریابی میخواهد.
جمعبندی. آنچه از این درس با خودتان میبرید.
- OSPF: link state، درون یک AS، استاندارد باز؛ OSPFv2 برای IPv4 و OSPFv3 برای IPv6.
- همسایه شدن با Hello تا حالت Full، که کتاب نقشهی دو روتر یکسان است.
- هر روتر از نقشهی مشترک درخت کوتاهترین راه را با Dijkstra حساب میکند.
- هزینه = سرعت مرجع تقسیم بر سرعت کابل؛ مرجع پیشفرض ۱۰۰ مگابیت.
- ناحیهی ۰ ستون اصلی است؛ ABR ناحیهها را به آن وصل میکند.
- در شبکهی چندروتری، DR و BDR ترافیک بهروزرسانی را کم میکنند.
خودتان را بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخر آزمون فقط کارنامه را میبینید: چند درست، چند نادرست.