سفر به اعماق پروتکل های مسیریابی: EIGRP (DUAL)

سلام به همه ی هم سفران عزیز. در قسمت قبلی با نحوه ی تشکیل ارتباط همسایگی و چگونگی عملکرد EIGRP در تضمین و تحویل پکت هاش آشنا شدیم. در این قسمت قصد داریم به سراغ مولفه ی سوم از مولفه های اصلی عملکردی EIGRP بریم که در واقع بررسی الگوریتمی هست که EIGRP از اون برای محاسبه ی بهترین مسیر به هر مقصد با شرط loop free بودن اون مسیر در هر لحظه استفاده میکنه. پس بیاید کمی بیشتر با این الگوریتم آشنا بشیم 🙂

***

Diffusing Update Algorithm (DUAL):

 DUAL تضمین می کند که شبکه در هر لحظه حتی در هنگام رخ دادن تغییرات در توپولوژی و همگرایی مجدد ساختار، loop free باقی بماند. بر خلاف سایر پروتکل های Distance Vector که بر اساس الگوریتم Bellman-Ford فعالیت می کنند و در صورت بروز تغییری در توپولوژی، آپدیت ها به صورت ناهماهنگ توسط نودها در ساختار ارسال می شوند، DUAL برای آن که بتواند تنها در بخش هایی که تحت تاثیر تغییر واقع شده اند محاسبات یافتن بهترین مسیر جایگزین بعدی را انجام دهد، نیازمند آن است که از یک روش هماهنگ برای انتشار اطلاعات بین تمام نودها در ساختار استفاده کند که این روش diffusing computation نام دارد. بر اساس diffusing computation تنها روترهایی که تحت تاثیر تغییر باشند محاسبات مربوط به یافتن بهترین مسیر جدید بعدی که loop free باشد را انجام می دهند. ادامه خواندن “سفر به اعماق پروتکل های مسیریابی: EIGRP (DUAL)”

مسابقه 2 – اندر حکایات کار با مدیر بداخلاق!

سلام به همه‌ی همراهان عزیز.

بعد از مدتی تصمیم گرفته شد که مسابقه ی دیگه ای برپا بشه و مفاهیمی رو به همراه هم یادآوری و بررسی کنیم 🙂

این مسابقه به اتمام رسیده و پاسخ سوالات با توضیحات زیر هر سوال درج شده است.
جهت اطلاع از مسابقات آتی لطفاً عضو خبرنامه وبلاگ و کانال تلگرام شبکه‌ها! شوید.

داستان از جایی شروع میشه که شما به عنوان مدیر شبکه‌ی شعبه‌ی غرب استخدام میشین. در همون بدو ورود به سازمان، ادمین سازمان مرکزی که به شدت بد اخلاق و بی اعصاب هست، دو نکته رو به شما گوشزد میکنه، اول این که سازمان با صرف هزینه ای از شرکت دیگه ای خواسته که برای روتر مرزی شما QoS رو پیاده سازی کنن و دومین نکته ای که با شدت به شما گوشزد میکنه این هست که هر گونه اقدامی از جانب شما که منجر به بروز تغییرات ناخواسته ی مسیریابی یا به وجود اومدن هزینه ی اضافی برای سازمان بشه مساوی هست با اخراج شما!

ادامه خواندن “مسابقه 2 – اندر حکایات کار با مدیر بداخلاق!”

سفر به اعماق پروتکل های مسیریابی: EIGRP بخش دوم

سلام به همه ی همراهان عزیز. در قسمت قبل اندکی با EIGRP آشنا شدیم. در این قسمت قصد داریم تا به سراغ دو مولفه از مولفه های اصلی EIGRP بریم و با نحوه ی عملکرد این پروتکل بیشتر آشنا بشیم.

***

Reliable Transport Protocol (RTP):

 مدیریت تحویل و دریافت پیام های EIGRP و هم چنین رعایت ترتیب در تحویل پکت ها، برعهده ی RTP است. برای تضمین این تحویل، RTP از الگوریتم اختصاصی سیسکو با نام Reliable Multicast بهره می گیرد.

تصدیق تحویل پکت ها و تضمین حفظ ترتیب آن ها در هنگام دریافت، از طریق دو Sequence Number در هدر EIGRP صورت می گیرد. یکی از این Sequence Number ها توسط روتر دریافت کننده ی پکت مقداردهی می شود و می تواند هر مقداری داشته باشد و هر زمان که روتر پکت جدیدی تولید کند، مقدار این Sequence Number یک واحد افزایش می یابد.

Sequence Number دوم در واقع Sequence Number آخرین پکتی خواهد بود که روتر دریافت کرده و باید تصدیق دریافت آن ارسال شود. این Sequence Number دوم در فیلد Acknowledgment Number در هدر EIGRP قرار می گیرد. قالب هدر EIGRP به صورت زیر می باشد:

تصویر 1   هدر پکت EIGRP

در EIGRP چندین پکت مختلف وجود دارد که بسته به نوع پکت، RTP از یکی از روش های Reliable Delivery یا Unreliable Delivery برای تحویل پکت ها استفاده می کند. ادامه خواندن “سفر به اعماق پروتکل های مسیریابی: EIGRP بخش دوم”

سفر به اعماق پروتکل های مسیریابی: EIGRP بخش اول

سلام به همراهان عزیز. بعد از شناختی که از سرزمین های هدفمون به دست آواردیم قصد داریم سفرمون رو شروع کنیم و پا به این سرزمین ها بذاریم. همونطور که در آخر قسمت قبل هم بیان کردم میخوایم به سراغ عضوی از سرزمین Distance Vector بریم که در حقیقت عضو این سرزمین بوده و هست ولی خیلیا اون رو دو رگه خطاب می کنن. شاید حدس زده باشید، بله منظورم پروتکل Cisco EIGRP هست 🙂 اما قبل از این که به سراغ این پروتکل بریم باید این رو عنوان کنم که از اینجا به بعد منبع ما برای بررسی پروتکل ها RFC هست. نه با زبان سخت و ثقیل RFC ها بلکه با زبان خودمون. اون چه که از این بعد قراره با هم بررسی کنیم پروتکلی که روی دستگاه یک وندور پیاده سازی شده نیست، بلکه هدف ما بررسی ذات حقیقی پروتکل های مسیریابی و آشنایی با نحوه ی عملکرد اصلی اون هاست. شاید خیلیا این کار و بیهوده و فقط مفید برای توسعه دهندگان پروتکل ها خطاب کنن اما خیلی وقتا مشکلات در پیاده سازی یک پروتکل مسیریابی از عدم درک درست عملکرد اون پروتکل نشات میگیره. بنابراین باز هم این رو تکرار میکنم که همیشه مشکلات سخت و پیچیده از جایی نشات می گیرن که ما ساده ترین مفاهیم رو فراموش کردیم 🙂 اما بیان بالاخره دل و به دریا بزنیم و وارد سرزمین Distance Vector بشیم.

معرفی پروتکل EIGRP:
ممکنه از خودتون بپرسید که چرا من شایسته ترین عضو سرزمین Distance Vector یعنی RIP رو برای شروع سفرم انتخاب نکردم. در جوابش باید بگم که هدفم بیشتر بررسی پروتکل هایی هست که در آینده ی نه چندان دور شاید تنها پروتکل های مسیریابی از نسلی باشن که من و شما می شناسیم (حتی ممکنه در آینده همین EIGRP هم دیگه جوابگو نباشه) اما اگر دوست داشتید که راجع به RIP هم صحبت کنیم و اون رو هم بیشتر بشناسیم خوشحال میشم حتما نظرتون رو در قسمت نظرات عنوان کنید 🙂

اما شاید باز از خودتون بپرسید که در اول این متن من بیان کردم که هدف ما بررسی پروتکل هایی فارغ از وندور هست ولی EIGRP که یک پروتکل برای شرکت سیسکو محسوب میشه و بنابراین نباید اینجا مطرح بشه. افرادی که کمی پیگیر جریان پروتکل ها هستن خوب می دونن که نهایتا در ماه مه سال 2016، RFC 7868 تحت عنوان ” Cisco’s Enhanced Interior Gateway Routing Protocol (EIGRP)” منتشر شد. به عقیده ی خیلیا این RFC معرفی کننده ی EIGRP اصیلی که روی دستگاه های شرکت سیسکو پیاده سازی شده نیست. اما قصد ما اینه که با رفتار این پروتکل متناسب با RFC آشنا بشیم اما اون بخشی از عملکرد این پروتکل که در RFC لحاظ نشده هم سعی می کنیم نهایتا با هم بررسی کنیم.

***

برای معرفی EIGRP باید به زمانی برگشت که توسعه دهندگان پروتکل IGRP که یک پروتکل اختصاصی شرکت سیسکو بود تصمیم بر توسعه ی این پروتکل گرفته و در صدد تبدیل آن به یک پروتکل Classless برآمدند. اما همزمان با تلاش برای بهبود قابلیت های عملکردی پروتکل IGRP، بر آن شدند تا از الگوریتم های آکادمیکی که در رابطه با بهبود زمان همگرایی بودند نیز در راستای این توسعه کمک گیرند. در نتیجه آن ها نه تنها به هدف خود یعنی ارتقای IGRP دست پیدا کردند بلکه سبب ایجاد پروتکل مسیریابی جدیدی شدند که با وجود برخی شباهت ها در رفتار به IGRP، یک پروتکل کاملا مجزا محسوب می شود.

اگر از قسمت اول این سری به خاطر داشته باشید، بیان شد که Distance Vector ها از الگوریتم مشهور Bellman-Ford برای پیدا کردن کوتاهترین مسیر استفاده می کنند، اما برخلاف آنها، EIGRP از یک سیستم محاسباتی جدید با نام Defusing Computation بهره می گیرد.
از سوی دیگر همانطور که در قسمت اول هم بیان گردید Distance Vector ها آپدیت های خود را به صورت دوره ای بعد از گذشت یک مدت زمان مشخص ارسال می کنند و نوع گزارش مسیرها نیز به صورت برداری از direction/distance می باشد. EIGRP هم از فرمول Direction/Distance برای گزارش مسیرها استفاده میکند اما آپدیت هایش دیگر به صورت دوره ای نیست بلکه دارای سه ویژگی است:

1- غیر دوره ای (یا همان non-periodic)
2- جزیی ( یا همان Partial)
3- محدود (یا همان Bounded)

ادامه خواندن “سفر به اعماق پروتکل های مسیریابی: EIGRP بخش اول”

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

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

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

تصميم بر اين هست که اون چه دارم تو اين مسير از اول فرا ميگيرم با شما به اشتراک بذارم. اما قبل از رفتن سراغ يک پروتکل مسيريابی مشخص و بررسی نحوه ی عملکرد حقيقی يک پروتکل، شروع داستان سفرم رو قصد دارم با همون مفاهيم ساده ولی خيلی مهم که به فراموشی سپرده ميشن شروع کنم يعنی: بررسی عملکرد دو دسته ی کلی Distance Vector ها و Link State ها! هميشه داشتن اطلاعات در رابطه با منشا يک موضوع، ديد بازتری به آدم در تحليل اون موضوع خواهد داد (البته به نظر من 🙂 )
برای همين قسمت اول “سفر به اعماق پروتکل های مسيريابی” رو به بررسی رفتار کلی Distance Vector ها اختصاص دادم.

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