Posts

MPLS چگونه کار می کند؟ – بخش چهاردهم

در ادامه سری مقالات MPLS در خدمت شما دوستان عزیز هستیم.

LDP Operation :


در این بخش به بررسی چهار بخش اصلی LDP که در بخش قبلی مقاله عنوان شد می پردازیم.

پیدا کردن LSR هایی که LDP را اجرا کرده اند :


LSR هایی که LDP را اجرا کرده اند روی همه لینک هایی که LDP روی آنها فعال شده است بسته های LDP Hello ارسال می کنند و این لینک هایی است که روی آنها MPLS با استفاده از دستور mpls ip در آن اینترفیس تنظیم شده است. اما در ابتدا باید CEF با استفاده از دستور ip cef در global mode فعال شده باشد سپس LDP به صورت globally با استفاده از دستور mpls ip فعال شود. در تصویر زیر دستورات فعال کردن LDP نمایش داده شده است :

Image

LDP Hello بسته های UDP می باشند که روی لینک ها برای همه روترهای آن subnet به صورت Multicast ارسال می شوند و از آدرس 224.0.0.2 به عنوان آدرس multicast استفاده می کند و همچنین از پورت UDP 646 استفاده می کند. LSR که بسته LDP Hello را روی یک پورت خود دریافت کند متوجه می شود که از طریق این پورت به یک روتر که LDP را اجرا کرده است می رسد. بسته های Hello حاوی Hold time هستند و اگر قبل از انقضای زمان Hold time ، بسته hello از آن LSR دریافت نکند LSR را از جدول همسایه های LDP خود حذف می کند. برای اینکه مشاهده کنید که LSR بسته های LDP Hello ارسال یا دریافت کرده اند و همچنین مشاهده Hello interval و Hold time می توانید از دستور show mpls ldp discovery [detail] استفاده کنید. اگر روی یک اینترفیس ارسال و دریافت بسته های LDP Hello رخ دهد نشان دهنده ایجاد همسایگی بین دو LSR که LDP را اجرا کرده اند می باشد. در تصویر زیر خروجی دستور فوق نمایش داده شده است :

Image

با استفاده از دستور show mpls interfaces می توانید خیلی سریع اینترفیس هایی که روی آنها LDP اجرا شده است را ببینید. خروجی این دستور به صورت زیر است :

Image

برای تغییر زمان بین ارسال بسته های Hello و یا تغییر زمان Hold time از دستور mpls ldp discovery {hello {holdtime | interval} می توانید استفاده کنید.
مقدار پیش فرض برای hold time برابر 15 ثانیه می باشد و هر 5 ثانیه یکبار بسته hello ارسال می شود. در تصویر بالا سه همسایه LDP شناسایی شده اند که دارای IP های 10.200.254.1 ، 10.200.254.3 و 10.200.254.5 می باشند. همانطور که می بینید LSR 10.200.254.1 از طریق دو اینترفیس Ethernet 0-1-3 و Ethernet 0-1-4 شناسایی شده است و مقدار پیش فرض برای Hello interval و Hold time یعنی 5 و 15 ثانیه تعیین شده است. اگر دو همسایه LDP دارای مقدار Hold times متفاوت باشند مقدار کمتر به Hold times در نظر گرفته می شود. IOS سیسکو مقدار Hello interval را تغییر می دهد تا بتواند حداقل سه بسته LDP Hello قبل از انقضای زمان Hold time ارسال کند. اگر زمان Hold time برای یک لینک منقضی شود آن لینک از لیست LDP حذف می شود. اگر اخرین لینک مربوط به همسایه LDP حذف شود ارتباط همسایگی بین آن LSR های نیز خاتمه می یابد. در صورتی که مقدار Hello interval و Hold times را برای LDP تغییر دادید مطمئن شوید که مقدار در نظر گرفته شده خیلی بزرگ یا کوچک نباشد. اگر مقدار Hold time خیلی کوچک در نظر گرفته شود باعث می شود که در زمانی که تعداد کمی از بسته ها به دلایل مختلف (مانند حجم بالایی ترافیک) از بین برود این رابطه همسایگی نیز از بین برود. اگر مقدار Hold time خیلی نیاز در نظر گرفته شود ممکن است که رابطه همسایگی برای یک مدت طولانی برقرار باشد در صورتی که یک مشغول جدی در ارتباط وجود داشته باشد و عکس العمل نسبت به آن دیر انجام شود و نتیجه آن از دست رفتن حجم زیادی از بسته می باشد.
توجه داشته باشید که هر LSR که LDP را اجرا کرده است دارای یک شناسه یا LDP ID می باشد. این LDP ID یک فیلد 6 بایتی است که 4 بایت آن مشخص کننده شناسه منحصر به فرد LSR می باشد و 2 بایت آن مشخص کننده label space می باشد که اگر این دو بایت برابر صفر باشد نشان دهنده perplatform label space بودن آن می باشد و اگر مقدار آن چیزی غیر از صفر باشد نشان دهنده per-interface label space می باشد. در برخی از حالت ها می توان از چند LDP ID استفاده کرد. که در این LDP ID ها مقدار چهار بایت اول برابر می باشد اما مقدار دو بایت دیگر متفاوت می باشد. به طور مثال per-interface label space را در نظر بگیرد. مقدار 4 بایت اول LDP ID یک آدرس IP است که از روی یکی از اینترفیس های روتر گرفته شده است. اگر اینترفیس loopback وجود داشته باشد بزرگترین IP متعلق به اینترفیس loopback برای 4 بایت اول LDP ID در نظر گرفته می شود. اگر اینترفیس loopback وجود نداشته باشد بزرگترین IP اینترفیس ها برای این 4 بایت LDP ID در نظر گرفته می شود. در تصویر بالا مقدار LDP ID برابر 10.200.254.2:0 می باشد که 10.200.254.2 نشان دهنده بزرگترین IP و 0 نشان دهنده perplatform label space می باشد. شما می توانید مقدار LDP ID را با استفاده از دستور mpls ldp router-id interface [force] تغییر دهید. در صورت استفاده از کلید force مقدار LDP ID بلافاصله تغییر می کند در غیر این صورت مقدار LDP ID در زمانی بعد که نیاز به تعیین LDP ID باشد براساس این دستور تعیین می گردد و آن زمانی است که اینترفیسی که در حال حاضر به عنوان LDP ID استفاده می شود shutdown شود.
در IOS سیسکو ، LDP ID باید در جدول مسیریابی همسایه LDP وجود داشته باشد در غیر این صورت ارتباط LDP و همسایگی آن ایجاد نمی گردد. بنابراین آدرس IP که به عنوان LDP ID مورد استفاده قرار می گیرد باید در جدول مسیریابی وجود داشته باشد. اگر برای این آدرس IP در جدول مسیریابی هیچ مسیری وجود نداشته باشد ارتباط و همسایگی LDP برقرار نمی شود. در تصویر زیر آدرس 10.200.254.3 در جدول مسیریابی LSR لندن وجود ندارد. در نتیجه بین LSR لندن و LSR روم هیچ ارتباط و همسایگی LDP برقرار نمی شود و این به خاطر LDP ID با مقدار 10.200.254.3 می باشد.

Image

 

MPLS چگونه کار می کند؟ – بخش چهارم

در مقالات قبلی با MPLS و ویژگی های آن آشنا شدیم و در این مقاله می خواهیم نحوی عملکرد آن را مورد بحث قرار دهیم.

Label Switch Router :


یک Label Switch Router یا LSR روتری است که از MPLS پشتیبانی می کند. این روترها قادر هستند که Label های MPLS را درک کنند و بسته های label زده را در لایه دو (دیتا لینک) ارسال یا دریافت کنند. در شبکه MPLS چند نوع LSR داریم که به شرح زیر هستند :

  • Ingress LSR : این نوع روترهای LSR ، بسته هایی که دارای Label نیستند را دریافت می کنند و به آنها label می زنند و آنها را در شبکه MPLS ارسال می کنند. این روترها در لبه شبکه MPLS قرار دارند.
  • Egress LSR : این نوع روترهای LSR ، بسته هایی که دارای label هستند را از شبکه MPLS دریافت می کنند و سپس آنها را ارسال می کنند. این روترها در لبه شبکه MPLS قرار دارند.
  • Intermediate LSR : این نوع LSR ، بسته های label زده شده را دریافت می کند عملیاتی را روی آن انجام می دهد سپس آنرا ارسال می کند. این نوع LSR ، روترهای میانی شبکه MPLS می باشند.

نکته : روترهای ingress LSR و egress LSR به عنوان Edge LSR شناخته می شوند.
نکته : در MPLS VPN روترهای egress LSR و ingress LSR به عنوان provider edge (PE) Router معرفی می شوند. روترهای میانی به عنوان Provider (P) Router معرفی می شوند. این نام ها خیلی معروف شده اند به همین خاطر حتی در شبکه های MPLS از این نام ها استفاده می شود.
نکته : یک بسته می تواند چند label داشته باشد و آنها را در label sack قرار می دهد. Label stack یک پشته است.

LSRها باید بتوانند سه عمل زیر را انجام دهند :

  • Pop : حذف label را pop گویند.
  • Push : اضافه کردن label را push گویند.
  • Swap : جایگزینی label جدید با label که در بالای label stack قرار دارد را swap گویند.

روترهای LSR باید بتوانند قبل از ارسال بسته ها ، label را pop کنند همچنین باید بتوانند به بسته های دریافتی یک label را push کنند. اگر بسته دریافتی دارای label باشد LSR ، label مورد نظر را به label stack اضافه می کند و بعد آنرا ارسال می کند. همچنین اگر بسته label نداشت LSR این label stack را ایجاد می کند و label مورد نظر را به آن push می کند. غیر از موارد فوق LSR باید بتواند swap را نیز انجام دهد. زمانی که یک بسته label زده به دست روتر LSR برسد label که در بالای label stack قرار دارد با label جدید جایگزین می شود.
LSR که به بسته ای که هنوز label نخورده label بزند imposing LSR گفته می شود چون اولین LSR است که label را به بسته می زند. اینکار توسط ingress LSR انجام می شود. LSR که label های یک بسته را خالی می کند و بسته بدون label می کند را disposing LSR گفته می شود. اینکار توسط egress LSR انجام می گیرد.

Label Switched Path :


Label Switched Path یا LSP رشته ای از LSR ها است که بسته label زده را از میان شبکه MPLS عبور می دهند. در واقع LSP مسیری است از میان شبکه MPLS که بسته ها آنرا طی می کنند. اولین LSR برای LSP همان ingress LSR می باشد و همچنین اخرین LSP برای LSP نیز egress LSR می باشد و تمام LSR های بین ingress LSR و egress LSR در LSP همان Intermediate LSR می باشند.
نکته : LSP یکطرفه می باشند به همین خاطر بین دو edge LSR دو LSP می توانند مسیرهای متفاوتی از یگدیگر داشته باشند.
در شکل زیر ، فلش بالای تصویر جهت LSP را از چپ به راست نشان می دهند.

Image

Ingress LSR در یک LSP همیشه به عنوان اولین روتر که به بسته label زده نمی تواند باشد و شاید قبلا توسط یک LSR دیگر label زده شده باشد. نمونه آن LSP تو در تو یا همان nested LSP می باشد که یک LSP در LSP دیگر قرار می گیرد. در شکل زیر نمونه آنرا در شبکه MPLS می بینید. نقطه شروع LSP دوم از سومین LSR می باشد و نقطه پایان آن LSR ماقبل آخر است در نتیجه زمانی که بسته به ingress LSR این LSP برسد از قبل label خورده است. ingress LSR در LSP دوم دومین label را به بسته push می کند و باعث می شود که label stack ما در اینجا دارای دو label باشد. Label بالایی متعلق به LSP دوم یا همان LSP تودرتو و label پایینی متعلق به LSP اول می باشد.

Image

 

Forwarding Equivalence Class :


Forwarding Equivalence Class یا به اختصار FEC گروهی یا جریانی از بسته ها هستند که به یک مسیر خاص متعلق دارند و دارای شرایط یکسانی هستند. همه بسته های که به یک FEC تعلق دارند دارای label یکسان هستند. اما داشتن label یکسان دلیل بر یکسان بودن FEC نمی باشد. چون مقادیر و عوامل دیگری برای تعیین FEC یکسان وجود دارد. شرایط و رفتار متفاوت در ارسال نیاز به داشتن FEC های متفاوت است. روتری که تصمیم می گیرد که هر بسته به کدام FEC تعلق دارد ingress LSR می باشد چون ingress LSR است که به بسته های ورودی label می زند و آنها را دسته بندی می کند.
برخی از نمونه های FEC به شرح زیر هستند :

  • بسته هایی که آدرس لایه سه مقصد آنها یعنی IP Address با یک شبکه خاص یکی است. مقصد همه آنها یک شبکه است.
  • بسته های Multicast که به یک گروه خاص تعلق دارند.
  • بسته های دارای DSCP یکسان
  • فریم های لایه دو که روی یک VC یا Subinterface در ingress LSR دریافت می شوند و در شبکه MPLS منتقل می گردند و از طریق یک VC یا Subinterface در egress LSR حمل می شوند.
  • بسته هایی که IP Address مقصد آنها با یک شبکه که متعلق به BGP است مطابقت پیدا می کنند و همه آنها دارای BGP next hop یکسانی هستند.

نمونه آخر که برای FEC نام برده شد در رابطه با BGP است و یک نمونه قابل توجه است به همین خاطر آنرا بررسی می کنیم. همانطور که گفتیم در ingress LSR تمام بسته هایی که IP Address مقصد آنها با یک مسیر در جدول مسیریابی مربوط به BGP مطابقت پیدا کند و BGP next hop یکسانی داشته باشد به یک FEC تعلق دارد. به این معنی که همه بسته های ورودی به شبکه MPLS براساس BGP next hop خود label می خورند. در شکل زیر یک شبکه MPLS را نشان می دهد که Edge LSR های آن iBGP را اجرا کرده اند.

Image

IP Address مقصد بسته ها هنگام ورود به ingress LSR بررسی می شود. آدرس مقصد همه این بسته ها به شبکه های که توسط BGP شناخته شده اند تعلق دارند. بسیاری از این شبکه ها دارای BGP next hop یکسانی هستند یا به عبارتی دارای egress LSR یکسانی هستند. همه بسته هایی که دارای BGP next hop یکسانی هستند در یک FEC قرار می گیرند و همینطور که قبلا گفته شد همه بسته هایی که به یک FEC تعلق دارند به آنها label یکسانی در ingress LSR تعلق می گیرد.

در قسمت بعدی سایر مباحث مربوط به عملکرد MPLS را تشزیح خواهیم کرد. موفق ، پیروز و itpro باشید.