بررسی اجمالی 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 به صورت زیر می باشد:

تصویر 1   هدر پکت 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 ها (۱)”