بررسی اجمالی Equal-Cost Multipath (ECMP)

منظور از Equal-Cost Multipath یا به اختصار ECMP آن است که اگر به ازای یک مقصد یکسان چندین مسیر با cost یکسان وجود داشته باشد، تمام این مسیرها کشف شده و بین آن ها برای ارسال ترافیک load sharing صورت گیرد. پس در این روش، هر forwarder (روتر) به ازای هر مقصد معینی چندین next-hop داشته و از روش هایی به منظور مشخص کردن آن که از کدام next-hop برای ارسال یک پکت مشخص باید استفاده شود، استفاده می نماید.

ساده ترین روش برای انجام این عمل آن است که مثلا پکت اول از لینک اول، پکت دوم از لینک دوم و الی آخر ارسال شوند. اصطلاحا به این روش per-packet load balancing گفته می شود که در آن از شیوه ی round-robin به منظور ارسال پکت ها بر روی مسیرهای فعال و دارای cost یکسان موجود برای یک مقصد معین استفاده می شود. اما این روش مشکلات متعددی را در پی خواهد داشت که از جمله ی آن ها می توان به موارد زیر اشاره نمود: ادامه خواندن “بررسی اجمالی Equal-Cost Multipath (ECMP)”

سفر به اعماق پروتکل های مسیریابی: 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 به صورت زیر می باشد:

EIGRP-Header

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

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

نگاهی به مسیرهای انحرافی در مسیریابی اینترنتی

تا حالا شده به این فک کنید که آیا امکان داره زمانی که قراره شما ارتباطی با مقصدی داخل AS ای که در اون قرار دارید، داشته باشید، اطلاعات شما سر از یک AS دیگه اون سر دنیا دربیاره و بعد از گذشتن از یک مسیر طولانی یا به عبارت بهتر از یه مسیر انحرافی، دوباره برگرده به همون AS ای که شما و مقصدتون در اون قرار دارید و برسه به دست مقصد! آیا اینجا حمله ای رخ داده؟ آیا مساله ی وجود مسیرهای انحرافی در دنیای اینترنت حقیقت داره؟ اگر حقیقت داره آیا همه ی مسیرهای انحرافی ناشی از حملات man-in-the-middle هستن؟ بیشترین مسیرهای انحرافی به کدوم AS ها یا کشورها تعلق دارن؟ آیا راهی هست که ISP های بزرگ تشخیص بدن که الان مسیریابیشون داره از طریق یک مسیر انحرافی انجام میشه؟

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

There and back again: a look at international routing detours

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

سلام به همه ی مهندسین گرامی. در این قسمت سعی داریم تا با هم بررسی کنیم که پروتکل های مسیریابی Distance Vector  برای حل مشکلاتی که در پایان قسمت قبل مطرح کردیم، چه راهکارهایی رو به کار می برند.

***

  • اگر از قسمت قبل به یاد داشته باشید، بیان شد که Distance Vector ها بر طبق قانون خود باید کل Routing Table را بعد از گذشت یک بازه ی زمانی مشخص ارسال می کردند. اما تصور کنید روتر X همسایه ای با نام Y دارد و از آن مسیرها به مقاصد A و B را فرا گرفته و در Routing Table خود ثبت نموده است. بازه ی زمانی مشخص می گذرد و X باید تمام مسیرهای موجود در Routing Table خود را با یک پیام آپدیت برای همسایه ی خود یعنی Y ارسال نماید، در این صورت روتر X باید مسیرها به مقاصد A و B ای را که از Y فرا گرفته، دوباره به آن تبلیغ کند.

اینجا دو مساله مطرح می شود: اول این که روتر X با این کار بیهوده به نوعی سبب هدر رفت منابع می شود (پهنای باند برای ارسال جداول روتی با حجم بالا که اکثر مسیرها از طریق همان همسایه فراگرفته شده باشد)

دوم این که فرض کنید مقصد A، از دسترس خارج شود. روتر Y از این موضوع باخبر می شود و قصد دارد تا با یک پیام آپدیت این موضوع رو به همسایه اش اطلاع دهد، اما قبل از این که بتواند این کار را انجام دهد ناگهان آپدیتی از روتر X دریافت می کند مبنی بر این که روتر X به مقصد A که یک گام با آن فاصله دارد، دسترسی دارد. اگر به خاطر داشته باشید بیان شد که Distance Vector ها حکم تابلویی سر دو راهی را دارند که فقط فاصله و جهت تا یک مقصد را اطلاع می دهند، اما این که آیا این اطلاعات واقعا درست است یا نه، هیچ تضمینی نیست. بنابراین روتر Y، حرف X را قبول کرده و دوباره مسیر به مقصد A را با افزایش یک گام به hop-count آن، به جدول روت خود اضافه می کند. به این ترتیب اگر پکتی به مقصد A به دست X برسد، آن را برای Y ارسال می کند و Y دوباره آن را برای X ارسال می کند و این عمل همینطور ادامه پیدا کرده و  Loop در مسیریابی رخ میدهد.

در اینجا قانونی مطرح می شود که : اگر آپدیتی از طریق یک اینترفیس ارسال شود، نباید شامل مسیرهایی باشد که از طریق دریافت پیام آپدیتی از روی همان اینترفیس، فرا گرفته شده باشند. به این قانون یک خطی Simple Split Horizon گفته می شود. پس Simple Split Horizon با سرکوب مسیرها از بروز loop جلوگیری میکند.

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

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

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

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

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

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