پروتکل OSPF (Open Shortest Path First) یکی از خانواده پروتکل های مسیریابی IP است و یک پروتکل مسیریابی داخلی (IGP) برای اینترنت است که برای توزیع اطلاعات مسیریابی IP در یک سیستم مستقل (AS) در یک شبکه IP استفاده می شود.
پروتکل OSPF یک پروتکل مسیریابی حالت پیوند است، به این معنی که روترها اطلاعات توپولوژی را با نزدیکترین همسایگان خود مبادله می کنند. اطلاعات توپولوژی در سراسر AS پر شده است، به طوری که هر روتر در AS تصویر کاملی از توپولوژی AS دارد. این تصویر سپس برای محاسبه مسیرهای End to End از طریق AS، معمولاً با استفاده از گونهای از الگوریتم Dijkstra استفاده میشود. بنابراین، در یک پروتکل مسیریابی حالت پیوند، آدرس هاپ بعدی که داده ها به آن ارسال می شوند، با انتخاب بهترین مسیر End to End به مقصد نهایی تعیین می شود.
مزیت اصلی یک پروتکل مسیریابی حالت پیوند مانند OSPF این است که دانش کامل توپولوژی به روترها اجازه می دهد تا مسیرهایی را محاسبه کنند که معیارهای خاصی را برآورده می کنند. این میتواند برای اهداف مهندسی ترافیک مفید باشد، جایی که مسیرها میتوانند برای برآورده کردن الزامات کیفیت خدمات خاص محدود شوند.
عیب اصلی یک پروتکل مسیریابی حالت پیوند این است که به خوبی مقیاس نمی شود زیرا روترهای بیشتری به دامنه مسیریابی اضافه می شود. افزایش تعداد روترها باعث افزایش اندازه و دوره تناوب به روز رسانی توپولوژی و همچنین مدت زمان محاسبه مسیرهای End to End می شود. این عدم مقیاس پذیری به این معنی است که یک پروتکل مسیریابی حالت پیوند برای مسیریابی در سراسر اینترنت به طور کلی نامناسب است، به همین دلیل است که IGP ها فقط ترافیک را در یک AS هدایت می کنند.
هر روتر OSPF با استفاده از یک پیام Link State Advertisement (LSA) اطلاعاتی را در مورد وضعیت محلی خود (رابط های قابل استفاده و همسایگان قابل دسترسی و هزینه استفاده از هر رابط) به روترهای دیگر توزیع می کند. هر روتر از پیام های دریافتی برای ایجاد یک پایگاه داده یکسان استفاده می کند که توپولوژی AS را توصیف می کند.
از این پایگاه داده، هر روتر جدول مسیریابی خود را با استفاده از الگوریتم Shortest Path First (SPF) یا Dijkstra محاسبه می کند. این جدول مسیریابی شامل تمام مقاصدی است که پروتکل مسیریابی از آنها میداند که با آدرس IP بعدی و رابط خروجی مرتبط است.
این پروتکل با استفاده از الگوریتم Dijkstra مسیرها را هنگامی که توپولوژی شبکه تغییر میکند دوباره محاسبه میکند و ترافیک پروتکل مسیریابی را که ایجاد میکند به حداقل میرساند.
از چندین مسیر با هزینه مساوی پشتیبانی می کند.
این یک سلسله مراتب چند سطحی (دو سطحی برای OSPF) به نام “مسیریابی ناحیه” ارائه می کند، به طوری که اطلاعات مربوط به توپولوژی در یک منطقه تعریف شده از AS از روترهای خارج از این منطقه پنهان می شود. این یک سطح اضافی از حفاظت از مسیریابی و کاهش ترافیک پروتکل مسیریابی را امکان پذیر می کند.
همه مبادلات پروتکل را می توان احراز هویت کرد تا فقط روترهای مورد اعتماد بتوانند در مبادلات مسیریابی AS بپیوندند.
OSPF نسخه 3 (OSPFv3)
OSPF نسخه 2 (OSPFv2) با IPv4 استفاده می شود. OSPFv3 برای سازگاری با فضای آدرس 128 بیتی IPv6 به روز شده است. با این حال، این تنها تفاوت بین OSPFv2 و OSPFv3 نیست. سایر تغییرات در OSPFv3، همانطور که در RFC 2740 تعریف شده است، عبارتند از:
- پردازش پروتکل در هر پیوند نه در زیر شبکه
- افزودن دامنه فلودینگ، که ممکن است پیوندی-محلی، منطقه ای یا عریض باشد
- حذف LSA های مات
- پشتیبانی از چندین نمونه OSPF در هر پیوند
- بسته های مختلف و تغییرات قالب LSA (از جمله حذف معنایی آدرس دهی).
- هر دو OSPFv2 و OSPFv3 به طور کامل توسط DC-OSPF پشتیبانی می شوند.
OSPF Areas
OSPF سیستم های خودمختار را به مناطقی تقسیم می کند. منطقه یا Areas مجموعه ای از شبکه ها، میزبان ها و روترها است. مانند ارائه دهندگان خدمات اینترنت، اینترنت را به یک سیستم مستقل متفاوت برای مدیریت آسان تقسیم می کنند و OSPF بیشتر سیستم های خودمختار را به مناطق تقسیم می کند.
روترهایی که در داخل منطقه وجود دارند، منطقه را با اطلاعات مسیریابی پر می کنند.
در Area، روتر ویژه یا Special Router نیز وجود دارد. روترهای ویژه آنهایی هستند که در مرز یک منطقه وجود دارند و این روترهای خاص به نام روترهای مرزی منطقه (Area Border Routers) شناخته می شوند. این روتر اطلاعات مربوط به یک منطقه را خلاصه می کند و اطلاعات را با مناطق دیگر به اشتراک می گذارد.
تمام نواحی داخل یک سیستم خودمختار به روترهای بک بون (Backbone Router) متصل هستند و این روترهای بک بون بخشی از یک منطقه اولیه هستند. نقش یک منطقه اولیه ایجاد ارتباط بین مناطق مختلف است.
نحوه کار پروتکل Open Shortest Path First
عملکرد پروتکل OSPF را می توان در 3 مرحله توضیح داد:
مرحله 1: اولین قدم این است که همسایه OSPF شوید. دو روتر متصل که OSPF را روی یک پیوند اجرا می کنند، یک رابطه همسایگی ایجاد می کنند.
مرحله 2: مرحله دوم تبادل اطلاعات پایگاه داده است. پس از همسایه شدن، دو روتر اطلاعات LSDB را با یکدیگر مبادله می کنند.
مرحله سوم: مرحله سوم انتخاب بهترین مسیر است. هنگامی که اطلاعات LSDB با یکدیگر مبادله شد، روتر بر اساس محاسبه SPF بهترین مسیر را برای افزودن به جدول مسیریابی انتخاب می کند.
چگونه یک روتر یک رابطه همسایه ایجاد می کند؟
اولین چیزی که قبل از ایجاد رابطه اتفاق می افتد این است که هر روتر شناسه روتر را انتخاب می کند .
شناسه روتر (RID) عددی است که هر روتر را در یک شبکه به طور منحصر به فرد شناسایی می کند. شناسه روتر در قالب آدرس IPv4 است. راه های کمی برای تنظیم شناسه روتر وجود دارد، اولین راه این است که شناسه روتر را به صورت دستی تنظیم کنید و راه دیگر این است که اجازه دهید روتر خودش تصمیم بگیرد.
منطقی است که روتر برای تنظیم شناسه روتر از منطق زیر استفاده کند:
تخصیص دستی: روتر بررسی می کند که آیا شناسه روتر به صورت دستی تنظیم شده است یا خیر. اگر به صورت دستی تنظیم شود، پس شناسه روتر است. اگر به صورت دستی تنظیم نشده باشد، آدرس IP رابط وضعیت “UP” را انتخاب می کند. اگر هیچ رابط حلقهای وجود نداشته باشد، آدرس IP رابط غیرحلقهای وضعیت «UP» را انتخاب میکند.
دو روتر متصل به یکدیگر از طریق نقطه به نقطه (Point To Point) یا چندین روتر متصل می توانند از طریق یک پروتکل OSPF با یکدیگر ارتباط برقرار کنند. دو روتر فقط زمانی مجاور هستند که هر دو روتر بسته HELLO را برای یکدیگر ارسال کنند. هنگامی که هر دو روتر تأیید بسته HELLO را دریافت می کنند، در حالت دو طرفه قرار می گیرند.
از آنجایی که OSPF یک پروتکل مسیریابی حالت پیوند است، بنابراین امکان ایجاد رابطه همسایگی بین روترها را فراهم می کند. این دو روتر فقط زمانی می توانند همسایه باشند که به یک ساب نت تعلق داشته باشند، شناسه ناحیه، ماسک ساب نت، تایمر و احراز هویت یکسان را به اشتراک بگذارند. رابطه OSPF رابطه ای است که بین روترها شکل می گیرد تا بتوانند یکدیگر را بشناسند. این دو روتر می توانند همسایه باشند در صورتی که حداقل یکی از آنها روتر تعیین شده یا روتر پشتیبان تعیین شده در یک شبکه باشد.
انواع لینک در OSPF
یک لینک یا پیوند در اصل یک اتصال است، بنابراین ارتباط بین دو روتر به عنوان یک لینک شناخته می شود.
چهار نوع لینک در OSPF وجود دارد:
پیوند نقطه به نقطه یا Point-to-point: پیوند نقطه به نقطه مستقیماً دو روتر را بدون هیچ میزبان یا روتری در بین آنها به هم متصل می کند.
پیوند گذرا یا Transient: هنگامی که چندین روتر در یک شبکه متصل می شوند، به عنوان پیوند گذرا شناخته می شوند.
پیوند گذرا دو پیاده سازی متفاوت دارد:
توپولوژی Unrealistic: زمانی که همه روترها به یکدیگر متصل می شوند، به عنوان توپولوژی Unrealistic شناخته می شود.
توپولوژی Realistic: هنگامی که یک روتر تعیین شده در یک شبکه وجود دارد، به عنوان توپولوژی Realistic شناخته می شود. در اینجا روتر تعیین شده روتری است که همه روترها به آن متصل هستند. تمام بسته های ارسال شده توسط روترها از طریق روتر تعیین شده ارسال می شود.
پیوند استوب یا Stub: شبکه ای است که به یک روتر متصل است. داده ها از طریق یک روتر وارد شبکه می شوند و از طریق همان روتر از شبکه خارج می شوند.
پیوند مجازی یا Virtual: اگر پیوند بین دو روتر قطع شود، مدیریت مسیر مجازی بین روترها را ایجاد می کند و این مسیر نیز می تواند طولانی باشد.
فرمت پیام OSPF
فیلدهای زیر در فرمت پیام OSPF هستند:
Version: یک فیلد 8 بیتی است که نسخه پروتکل OSPF را مشخص می کند.
Type: یک فیلد 8 بیتی است. نوع بسته OSPF را مشخص می کند.
Message: یک فیلد 16 بیتی است که طول کل پیام را از جمله هدر مشخص می کند. بنابراین طول کل برابر است با مجموع طول پیام و هدر.
Source IP address : آدرسی که بسته ها از آن ارسال می شوند را مشخص می کند. این یک آدرس IP مسیریابی است.
Area identification: ناحیه ای را که مسیریابی در آن انجام می شود را مشخص می کند.
Checksum: برای تصحیح خطا و تشخیص خطا استفاده می شود.
Authentication type : دو نوع احراز هویت وجود دارد، به عنوان مثال، 0 و 1. در اینجا، 0 به معنای هیچ است که مشخص نمی کند احراز هویت در دسترس است و 1 به معنای برای pwd است که احراز هویت مبتنی بر رمز عبور را مشخص می کند.
Authentication : یک فیلد 32 بیتی است که حاوی مقدار واقعی داده های احراز هویت است.
بسته های OSPF
پنج نوع بسته مختلف در OSPF وجود دارد:
- Hello
- Database Description
- Link state request
- Link state update
- Link state Acknowledgment
بیایید هر بسته را با جزئیات بحث کنیم.
بسته Hello
بسته Hello برای ایجاد رابطه همسایگی و بررسی دسترس پذیری همسایه استفاده می شود. بنابراین، بسته Hello زمانی استفاده می شود که باید ارتباط بین روترها برقرار شود.
بسته Database Description
پس از برقراری ارتباط، اگر روتر همسایه برای اولین بار با سیستم ارتباط برقرار کند، اطلاعات پایگاه داده در مورد توپولوژی شبکه را به سیستم ارسال می کند تا سیستم بتواند بر اساس آن به روز رسانی یا اصلاح شود.
بسته Link state request
بسته Link state request توسط روتر برای به دست آوردن اطلاعات یک مسیر مشخص ارسال می شود. فرض کنید دو روتر وجود دارد، یعنی روتر 1 و روتر 2، و روتر 1 می خواهد اطلاعات مربوط به روتر 2 را بداند، بنابراین روتر 1 درخواست وضعیت پیوند را به روتر 2 ارسال می کند. هنگامی که روتر 2 درخواست وضعیت پیوند را دریافت کرد، سپس اطلاعات وضعیت پیوند را به روتر 1 ارسال می کند.
بسته Link state update
بسته Link state update توسط روتر برای تبلیغ وضعیت پیوندهای خود استفاده می شود. اگر هر روتری بخواهد وضعیت پیوندهای خود را برودکست کند، از بسته Link state update استفاده می کند.
بسته Link state Acknowledgment
Link state Acknowledgment با وادار کردن هر روتر به ارسال تأیید در هر بهروزرسانی وضعیت پیوند، مسیریابی را قابل اعتمادتر میکند. به عنوان مثال، روتر A بسته Link state update را به روتر B و روتر C می فرستد، سپس در مقابل، روتر B و C تایید وضعیت پیوند را به روتر A ارسال می کند، به طوری که روتر A متوجه می شود که هر دو روتر به روز رسانی وضعیت پیوند را دریافت کرده اند.
وضعیت های OSPF
دستگاهی که پروتکل OSPF را اجرا می کند، از وضعیت های زیر استفاده می کند:
Down: اگر دستگاه در حالت خاموش است، بسته HELLO را دریافت نکرده است. در اینجا، Down به این معنی نیست که دستگاه از نظر فیزیکی از کار افتاده است. این بدان معنی است که فرآیند OSPF هنوز شروع نشده است.
Init: اگر دستگاه در حالت init قرار گیرد به این معنی است که دستگاه بسته HELLO را از روتر دیگر دریافت کرده است.
2WAY: اگر دستگاه در حالت 2WAY باشد، به این معنی است که هر دو روتر بسته HELLO را از روتر دیگر دریافت کرده اند و ارتباط بین روترها برقرار می شود.
Exstart: هنگامی که تبادل بین روترها شروع شد، هر دو روتر به حالت Exstart منتقل می شوند. در این حالت، Master و Slave بر اساس شناسه روتر انتخاب می شوند. Master توالی اعداد را کنترل می کند و فرآیند تبادل را آغاز می کند.
Exchange: در حالت Exchange ، هر دو روتر لیستی از LSA ها را برای یکدیگر ارسال می کنند که حاوی توضیحات پایگاه داده است.
Loading: در این حالت، LSR، LSU و LSA رد و بدل می شوند.
Full : هنگامی که تبادل LSA ها کامل شد، روترها به حالت Full تغییر می کنند.
منابع: metaswitch و javatpoint